diff options
Diffstat (limited to 'api/logic')
-rw-r--r-- | api/logic/minecraft/SimpleModList.cpp | 9 | ||||
-rw-r--r-- | api/logic/translations/TranslationsModel.cpp | 74 | ||||
-rw-r--r-- | api/logic/translations/TranslationsModel.h | 6 |
3 files changed, 75 insertions, 14 deletions
diff --git a/api/logic/minecraft/SimpleModList.cpp b/api/logic/minecraft/SimpleModList.cpp index 9769a546..59dd7cf3 100644 --- a/api/logic/minecraft/SimpleModList.cpp +++ b/api/logic/minecraft/SimpleModList.cpp @@ -349,11 +349,6 @@ bool SimpleModList::dropMimeData(const QMimeData* data, Qt::DropAction action, i // files dropped from outside? if (data->hasUrls()) { - bool was_watching = is_watching; - if (was_watching) - { - stopWatching(); - } auto urls = data->urls(); for (auto url : urls) { @@ -366,10 +361,6 @@ bool SimpleModList::dropMimeData(const QMimeData* data, Qt::DropAction action, i // FIXME: handle errors here installMod(url.toLocalFile()); } - if (was_watching) - { - startWatching(); - } return true; } return false; diff --git a/api/logic/translations/TranslationsModel.cpp b/api/logic/translations/TranslationsModel.cpp index 3f374083..58ff4384 100644 --- a/api/logic/translations/TranslationsModel.cpp +++ b/api/logic/translations/TranslationsModel.cpp @@ -43,7 +43,7 @@ struct Language { return 100.0f; } - return float(translated) / float(total); + return 100.0f * float(translated) / float(total); } void setTranslationStats(unsigned _translated, unsigned _untranslated, unsigned _fuzzy) @@ -85,7 +85,7 @@ struct Language file_sha1 = other.file_sha1; translated = other.translated; fuzzy = other.fuzzy; - total = other.fuzzy; + total = other.total; localFileType = other.localFileType; return *this; } @@ -304,20 +304,49 @@ void TranslationsModel::reloadLocalFiles() endInsertRows(); } +namespace { +enum class Column +{ + Language, + Completeness +}; +} + + QVariant TranslationsModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); int row = index.row(); + auto column = static_cast<Column>(index.column()); if (row < 0 || row >= d->m_languages.size()) return QVariant(); + auto & lang = d->m_languages[row]; switch (role) { case Qt::DisplayRole: - return d->m_languages[row].locale.nativeLanguageName(); + { + switch(column) + { + case Column::Language: + { + return d->m_languages[row].locale.nativeLanguageName(); + } + case Column::Completeness: + { + QString text; + text.sprintf("%3.1f %%", lang.percentTranslated()); + return text; + } + } + } + case Qt::ToolTipRole: + { + return tr("%1:\n%2 translated\n%3 fuzzy\n%4 total").arg(lang.key, QString::number(lang.translated), QString::number(lang.fuzzy), QString::number(lang.total)); + } case Qt::UserRole: return d->m_languages[row].key; default: @@ -325,11 +354,50 @@ QVariant TranslationsModel::data(const QModelIndex& index, int role) const } } +QVariant TranslationsModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + auto column = static_cast<Column>(section); + if(role == Qt::DisplayRole) + { + switch(column) + { + case Column::Language: + { + return tr("Language"); + } + case Column::Completeness: + { + return tr("Completeness"); + } + } + } + else if(role == Qt::ToolTipRole) + { + switch(column) + { + case Column::Language: + { + return tr("The native language name."); + } + case Column::Completeness: + { + return tr("Completeness is the percentage of fully translated strings, not counting automatically guessed ones."); + } + } + } + return QAbstractListModel::headerData(section, orientation, role); +} + int TranslationsModel::rowCount(const QModelIndex& parent) const { return d->m_languages.size(); } +int TranslationsModel::columnCount(const QModelIndex& parent) const +{ + return 2; +} + Language * TranslationsModel::findLanguage(const QString& key) { auto found = std::find_if(d->m_languages.begin(), d->m_languages.end(), [&](Language & lang) diff --git a/api/logic/translations/TranslationsModel.h b/api/logic/translations/TranslationsModel.h index 4bf83a56..fa0ae5f6 100644 --- a/api/logic/translations/TranslationsModel.h +++ b/api/logic/translations/TranslationsModel.h @@ -28,8 +28,10 @@ public: explicit TranslationsModel(QString path, QObject *parent = 0); virtual ~TranslationsModel(); - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + int columnCount(const QModelIndex & parent) const override; bool selectLanguage(QString key); void updateLanguage(QString key); |