on xenial help sign in
expose the UTC offset (in hours) from the timezone model
65f91dfLukáš Tinkl
plugins/Wizard/timezonemodel.cpp+5
@@ -34,6 +34,7 @@ TimeZoneLocationModel::TimeZoneLocationModel(QObject *parent):
34 m_roleNames[TimeZoneRole] = "timeZone";
34 m_roleNames[TimeZoneRole] = "timeZone";
35 m_roleNames[CityRole] = "city";
35 m_roleNames[CityRole] = "city";
36 m_roleNames[CountryRole] = "country";
36 m_roleNames[CountryRole] = "country";
37+ m_roleNames[OffsetRole] = "offset";
37
38
38 QObject::connect(m_workerThread,
39 QObject::connect(m_workerThread,
39 &TimeZonePopulateWorker::resultReady,
40 &TimeZonePopulateWorker::resultReady,
@@ -98,6 +99,10 @@ QVariant TimeZoneLocationModel::data(const QModelIndex &index, int role) const
98 return tz.country;
99 return tz.country;
99 case CityRole:
100 case CityRole:
100 return tz.city;
101 return tz.city;
102+ case OffsetRole: {
103+ QTimeZone tmp(tz.timezone.toLatin1());
104+ return static_cast<double>(tmp.standardTimeOffset(QDateTime::currentDateTime())) / 3600;
105+ }
101 default:
106 default:
102 qWarning() << Q_FUNC_INFO << "Unknown role";
107 qWarning() << Q_FUNC_INFO << "Unknown role";
103 return QVariant();
108 return QVariant();
plugins/Wizard/timezonemodel.h+3−1
@@ -36,7 +36,8 @@ public:
36 TimeZoneRole = Qt::UserRole + 1,
36 TimeZoneRole = Qt::UserRole + 1,
37 CityRole,
37 CityRole,
38 CountryRole,
38 CountryRole,
39− SimpleRole
39+ SimpleRole,
40+ OffsetRole
40 };
41 };
41
42
42 struct TzLocation {
43 struct TzLocation {
@@ -45,6 +46,7 @@ public:
45 QString timezone;
46 QString timezone;
46 QString state;
47 QString state;
47 QString full_country;
48 QString full_country;
49+ double offset;
48 };
50 };
49
51
50 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
52 int rowCount(const QModelIndex &parent = QModelIndex()) const override;