UI: Zones: Translate Sources

This commit is contained in:
Nodir Temirkhodjaev 2024-10-05 11:49:22 +05:00
parent 20ede18068
commit bed8556894
5 changed files with 43 additions and 13 deletions

View File

@ -35,11 +35,12 @@ void ZoneEditDialog::initialize(const ZoneRow &zoneRow)
retranslateUi(); retranslateUi();
const QString sourceCode = isEmpty() ? ZoneSourceWrapper::textSourceCode() : zoneRow.sourceCode; const QString sourceCode =
isEmpty() ? ZoneSourceWrapper::defaultSourceCode() : zoneRow.sourceCode;
const ZoneSourceWrapper zoneSource(zoneListModel()->zoneSourceByCode(sourceCode)); const ZoneSourceWrapper zoneSource(zoneListModel()->zoneSourceByCode(sourceCode));
m_editName->setStartText(zoneRow.zoneName); m_editName->setStartText(zoneRow.zoneName);
m_comboSources->setCurrentIndex(zoneSource.index()); m_comboSources->setCurrentIndex(zoneSource.id());
m_cbEnabled->setChecked(zoneRow.enabled); m_cbEnabled->setChecked(zoneRow.enabled);
m_cbCustomUrl->setChecked(zoneRow.customUrl); m_cbCustomUrl->setChecked(zoneRow.customUrl);

View File

@ -114,7 +114,7 @@ QVariant ZoneListModel::dataDisplay(const QModelIndex &index) const
return QString("%1) %2").arg(QString::number(m_zoneRow.zoneId), zoneRow.zoneName); return QString("%1) %2").arg(QString::number(m_zoneRow.zoneId), zoneRow.zoneName);
case 1: { case 1: {
const auto zoneSource = ZoneSourceWrapper(zoneSourceByCode(zoneRow.sourceCode)); const auto zoneSource = ZoneSourceWrapper(zoneSourceByCode(zoneRow.sourceCode));
return zoneSource.title(); return zoneSourceTitleById(zoneSource.id());
} }
case 2: case 2:
return zoneRow.addressCount; return zoneRow.addressCount;
@ -263,8 +263,25 @@ void ZoneListModel::setupZoneSources()
int index = 0; int index = 0;
for (const auto &sourceVar : zoneSources) { for (const auto &sourceVar : zoneSources) {
ZoneSourceWrapper zoneSource(sourceVar); ZoneSourceWrapper zoneSource(sourceVar);
zoneSource.setIndex(index++); zoneSource.setId(index++);
m_zoneSourcesMap.insert(zoneSource.code(), zoneSource.map()); m_zoneSourcesMap.insert(zoneSource.code(), zoneSource.map());
m_zoneSources.append(zoneSource.map()); m_zoneSources.append(zoneSource.map());
} }
} }
QString ZoneListModel::zoneSourceTitleById(const int sourceId)
{
static const char *const sourceTitles[] = {
QT_TR_NOOP("Addresses from Inline Text"),
QT_TR_NOOP("Addresses from Local File"),
QT_TR_NOOP("WindowsSpyBlocker"),
QT_TR_NOOP("FireHOL Level-1"),
QT_TR_NOOP("TAS-IX Addresses"),
};
if (sourceId >= 0 && sourceId < std::size(sourceTitles)) {
return tr(sourceTitles[sourceId]);
}
return {};
}

View File

@ -44,6 +44,8 @@ public:
QVariant zoneSourceByCode(const QString &sourceCode) const; QVariant zoneSourceByCode(const QString &sourceCode) const;
const QVariantList &zoneSources() const { return m_zoneSources; } const QVariantList &zoneSources() const { return m_zoneSources; }
static QString zoneSourceTitleById(const int sourceId);
protected: protected:
Qt::ItemFlags flagIsUserCheckable(const QModelIndex &index) const override; Qt::ItemFlags flagIsUserCheckable(const QModelIndex &index) const override;

View File

@ -1,15 +1,17 @@
#include "zonesourcewrapper.h" #include "zonesourcewrapper.h"
#include <QHash>
ZoneSourceWrapper::ZoneSourceWrapper(const QVariant &var) : MapWrapper(var) { } ZoneSourceWrapper::ZoneSourceWrapper(const QVariant &var) : MapWrapper(var) { }
int ZoneSourceWrapper::index() const int ZoneSourceWrapper::id() const
{ {
return valueInt("index"); return valueInt("id");
} }
void ZoneSourceWrapper::setIndex(int index) void ZoneSourceWrapper::setId(int id)
{ {
setValue("index", index); setValue("id", id);
} }
QString ZoneSourceWrapper::code() const QString ZoneSourceWrapper::code() const
@ -39,10 +41,10 @@ QString ZoneSourceWrapper::formData() const
bool ZoneSourceWrapper::isTextInline() const bool ZoneSourceWrapper::isTextInline() const
{ {
return code() == textSourceCode(); return code() == defaultSourceCode();
} }
QString ZoneSourceWrapper::textSourceCode() QString ZoneSourceWrapper::defaultSourceCode()
{ {
return "text"; return "text";
} }

View File

@ -6,10 +6,18 @@
class ZoneSourceWrapper : public MapWrapper class ZoneSourceWrapper : public MapWrapper
{ {
public: public:
enum SourceId {
SourceText = 0,
SourceFile,
SourceWinSpyBlock,
SourceFireHolLevel1,
SourceTasix,
};
explicit ZoneSourceWrapper(const QVariant &var = QVariant()); explicit ZoneSourceWrapper(const QVariant &var = QVariant());
int index() const; int id() const;
void setIndex(int index); void setId(int id);
QString code() const; QString code() const;
QString title() const; QString title() const;
@ -19,7 +27,7 @@ public:
bool isTextInline() const; bool isTextInline() const;
static QString textSourceCode(); static QString defaultSourceCode();
}; };
#endif // ZONESOURCEWRAPPER_H #endif // ZONESOURCEWRAPPER_H