summaryrefslogtreecommitdiffstats
path: root/src/timedatesettings
diff options
context:
space:
mode:
Diffstat (limited to 'src/timedatesettings')
-rw-r--r--src/timedatesettings/timezonefiltermodel.cpp16
-rw-r--r--src/timedatesettings/timezonefiltermodel.h2
-rw-r--r--src/timedatesettings/timezonemodel.cpp7
-rw-r--r--src/timedatesettings/timezonemodel.h7
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);