summaryrefslogtreecommitdiffstats
path: root/src/localesettings
diff options
context:
space:
mode:
Diffstat (limited to 'src/localesettings')
-rw-r--r--src/localesettings/localefiltermodel.cpp9
-rw-r--r--src/localesettings/localefiltermodel.h1
-rw-r--r--src/localesettings/localemodel.cpp14
-rw-r--r--src/localesettings/localemodel.h2
4 files changed, 26 insertions, 0 deletions
diff --git a/src/localesettings/localefiltermodel.cpp b/src/localesettings/localefiltermodel.cpp
index d45fac6..b0535f5 100644
--- a/src/localesettings/localefiltermodel.cpp
+++ b/src/localesettings/localefiltermodel.cpp
@@ -89,3 +89,12 @@ QVariant LocaleFilterModel::itemFromRow(const int row) const
return QVariant();
}
+
+int LocaleFilterModel::indexForCountry(const QString &country) const
+{
+ QAbstractItemModel *model = this->sourceModel();
+ LocaleModel *localModel = qobject_cast<LocaleModel*>(model);
+ QModelIndex i = localModel->indexForCountry(country);
+ QModelIndex ret = mapFromSource(i);
+ return ret.row();
+}
diff --git a/src/localesettings/localefiltermodel.h b/src/localesettings/localefiltermodel.h
index 3e768ea..1ddcb9c 100644
--- a/src/localesettings/localefiltermodel.h
+++ b/src/localesettings/localefiltermodel.h
@@ -45,6 +45,7 @@ public:
QString filter() const;
void setFilter(const QString& aFilter);
Q_INVOKABLE QVariant itemFromRow(const int row) const;
+ Q_INVOKABLE int indexForCountry(const QString &country) const;
Q_SIGNALS:
void filterChanged();
private:
diff --git a/src/localesettings/localemodel.cpp b/src/localesettings/localemodel.cpp
index b5a934b..a5249e8 100644
--- a/src/localesettings/localemodel.cpp
+++ b/src/localesettings/localemodel.cpp
@@ -83,6 +83,8 @@ void LocaleModel::modelReady()
beginResetModel();
sort(0);
endResetModel();
+
+ emit ready();
}
void LocaleModel::generateModel(LocaleModel* model)
@@ -158,3 +160,15 @@ void LocaleModel::sort(int column, Qt::SortOrder order)
Q_UNUSED(order);
std::sort(m_items.begin(), m_items.end(), LocaleModel::variantLessThan);
}
+
+QModelIndex LocaleModel::indexForCountry(const QString &country) const
+{
+ for (int i = 0; i < m_items.count(); i++) {
+ LocaleItem *item = m_items.at(i);
+ if (item->country() == country ||
+ item->language() == country) {
+ return index(i);
+ }
+ }
+ return QModelIndex();
+}
diff --git a/src/localesettings/localemodel.h b/src/localesettings/localemodel.h
index 2dcbe87..fac0b94 100644
--- a/src/localesettings/localemodel.h
+++ b/src/localesettings/localemodel.h
@@ -67,6 +67,7 @@ public:
QHash<int, QByteArray> roleNames() const;
void sort(int column, Qt::SortOrder order=Qt::AscendingOrder);
static bool variantLessThan(const LocaleItem* v1, const LocaleItem* v2);
+ QModelIndex indexForCountry(const QString &country) const;
enum Roles {
Language = Qt::UserRole + 1,
@@ -78,6 +79,7 @@ public:
Q_SIGNALS:
void addItem(LocaleItem* item);
+ void ready();
private Q_SLOTS:
void addNewItem(QObject* item);