diff options
Diffstat (limited to 'src/timedatesettings')
-rw-r--r-- | src/timedatesettings/timezonefiltermodel.cpp | 16 | ||||
-rw-r--r-- | src/timedatesettings/timezonefiltermodel.h | 2 | ||||
-rw-r--r-- | src/timedatesettings/timezonemodel.cpp | 7 | ||||
-rw-r--r-- | src/timedatesettings/timezonemodel.h | 7 |
4 files changed, 31 insertions, 1 deletions
diff --git a/src/timedatesettings/timezonefiltermodel.cpp b/src/timedatesettings/timezonefiltermodel.cpp index 9c2dfb7..b566624 100644 --- a/src/timedatesettings/timezonefiltermodel.cpp +++ b/src/timedatesettings/timezonefiltermodel.cpp @@ -99,4 +99,20 @@ QVariant TimezoneFilterModel::itemFromRow(const int row) const return QVariant(); } +int TimezoneFilterModel::indexForTimezone(const QString &timezone) const +{ + TimezoneModel *model = qobject_cast<TimezoneModel *>(sourceModel()); + QList<TimezoneItem *> data = model->getModel(); + int row = 0; + foreach (TimezoneItem *item, data) { + if (item->id() == timezone) { + QModelIndex mapped = mapFromSource(model->index(row)); + return mapped.row(); + } + row++; + } + + return -1; +} + QT_END_NAMESPACE diff --git a/src/timedatesettings/timezonefiltermodel.h b/src/timedatesettings/timezonefiltermodel.h index 2b4ec2b..ead5eb0 100644 --- a/src/timedatesettings/timezonefiltermodel.h +++ b/src/timedatesettings/timezonefiltermodel.h @@ -55,8 +55,10 @@ public: QString filter() const; void setFilter(const QString& aFilter); Q_INVOKABLE QVariant itemFromRow(const int row) const; + Q_INVOKABLE int indexForTimezone(const QString &timezone) const; Q_SIGNALS: void filterChanged(); + void selectedIndexChanged(); private: QString m_filter; diff --git a/src/timedatesettings/timezonemodel.cpp b/src/timedatesettings/timezonemodel.cpp index bd56814..8983a49 100644 --- a/src/timedatesettings/timezonemodel.cpp +++ b/src/timedatesettings/timezonemodel.cpp @@ -28,6 +28,7 @@ ****************************************************************************/ #include <QLocale> #include <QFuture> +#include <QFutureWatcher> #include <QThread> #include <QtConcurrent/QtConcurrentRun> #include "timezonemodel.h" @@ -66,7 +67,11 @@ TimezoneModel::TimezoneModel(QObject *parent) m_roleNames.insert(Name, "name"); m_roleNames.insert(Id, "id"); - QFuture<void> t1 = QtConcurrent::run(TimezoneModel::generateModel, this); + + QFutureWatcher<void> *watcher = new QFutureWatcher<void>(this); + QFuture<void> future = QtConcurrent::run(TimezoneModel::generateModel, this); + watcher->setFuture(future); + connect(watcher, SIGNAL(finished()), this, SIGNAL(ready())); } void TimezoneModel::generateModel(TimezoneModel* model) diff --git a/src/timedatesettings/timezonemodel.h b/src/timedatesettings/timezonemodel.h index 14d7a2c..6684472 100644 --- a/src/timedatesettings/timezonemodel.h +++ b/src/timedatesettings/timezonemodel.h @@ -65,6 +65,10 @@ public: int rowCount(const QModelIndex & parent = QModelIndex()) const; QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; QHash<int, QByteArray> roleNames() const; + QList<TimezoneItem *> getModel() const + { + return m_items; + } enum Roles { Name = Qt::UserRole + 1, @@ -74,6 +78,9 @@ public: static void generateModel(TimezoneModel* model); +Q_SIGNALS: + void ready(); + private Q_SLOTS: void addNewItem(QObject* item); |