@@ -23,390 +23,6 @@
23#include "LocalePlugin.h"
23#include "LocalePlugin.h"
24#include "timezonemodel.h"
24#include "timezonemodel.h"
26−static QByteArrayList olsenTimezones = {
29− "Africa/Addis_Ababa",
37− "Africa/Brazzaville",
43− "Africa/Dar_es_Salaam",
50− "Africa/Johannesburg",
71− "Africa/Ouagadougou",
81− "America/Argentina/Buenos_Aires",
82− "America/Argentina/Catamarca",
83− "America/Argentina/Cordoba",
84− "America/Argentina/Jujuy",
85− "America/Argentina/La_Rioja",
86− "America/Argentina/Mendoza",
87− "America/Argentina/Rio_Gallegos",
88− "America/Argentina/San_Juan",
89− "America/Argentina/San_Luis",
90− "America/Argentina/Tucuman",
91− "America/Argentina/Ushuaia",
99− "America/Blanc-Sablon",
100− "America/Boa_Vista",
103− "America/Cambridge_Bay",
104− "America/Campo_Grande",
110− "America/Chihuahua",
111− "America/Coral_Harbour",
112− "America/Costa_Rica",
116− "America/Dawson_Creek",
121− "America/El_Salvador",
122− "America/Fortaleza",
123− "America/Glace_Bay",
124− "America/Goose_Bay",
125− "America/Grand_Turk",
127− "America/Guadeloupe",
128− "America/Guatemala",
129− "America/Guayaquil",
133− "America/Hermosillo",
134− "America/Indiana/Indianapolis",
135− "America/Indiana/Knox",
136− "America/Indiana/Marengo",
137− "America/Indiana/Petersburg",
138− "America/Indiana/Vevay",
139− "America/Indiana/Vincennes",
140− "America/Indiana/Winamac",
145− "America/Kentucky/Louisville",
146− "America/Kentucky/Monticello",
149− "America/Los_Angeles",
154− "America/Martinique",
156− "America/Menominee",
158− "America/Mexico_City",
161− "America/Monterrey",
162− "America/Montevideo",
164− "America/Montserrat",
169− "America/North_Dakota/Center",
170− "America/North_Dakota/Salem",
172− "America/Pangnirtung",
173− "America/Paramaribo",
175− "America/Port-au-Prince",
176− "America/Port_of_Spain",
177− "America/Porto_Velho",
178− "America/Puerto_Rico",
179− "America/Rainy_River",
180− "America/Rankin_Inlet",
184− "America/Rio_Branco",
187− "America/Santo_Domingo",
188− "America/Sao_Paulo",
189− "America/St_Barthelemy",
193− "America/St_Thomas",
194− "America/St_Vincent",
195− "America/Tegucigalpa",
196− "America/Thunder_Bay",
200− "America/Vancouver",
201− "America/Whitehorse",
203− "America/Yellowknife",
204− "America/Swift_Current",
205− "Arctic/Longyearbyen",
244− "Asia/Kuala_Lumpur",
279− "Asia/Yekaterinburg",
284− "Atlantic/Cape_Verde",
287− "Atlantic/Reykjavik",
288− "Atlantic/South_Georgia",
289− "Atlantic/St_Helena",
291− "Australia/Adelaide",
292− "Australia/Brisbane",
293− "Australia/Broken_Hill",
298− "Australia/Lindeman",
299− "Australia/Lord_Howe",
300− "Australia/Melbourne",
308− "Europe/Bratislava",
313− "Europe/Copenhagen",
318− "Europe/Isle_of_Man",
321− "Europe/Kaliningrad",
326− "Europe/Luxembourg",
329− "Europe/Marienhamn",
340− "Europe/San_Marino",
342− "Europe/Simferopol",
356− "Europe/Zaporozhye",
358− "Indian/Antananarivo",
374− "Pacific/Enderbury",
378− "Pacific/Galapagos",
380− "Pacific/Guadalcanal",
384− "Pacific/Kiritimati",
386− "Pacific/Kwajalein",
388− "Pacific/Marquesas",
394− "Pacific/Pago_Pago",
398− "Pacific/Port_Moresby",
399− "Pacific/Rarotonga",
403− "Pacific/Tongatapu",
410TimeZoneLocationModel::TimeZoneLocationModel(QObject *parent):
26TimeZoneLocationModel::TimeZoneLocationModel(QObject *parent):
411 QAbstractListModel(parent),
27 QAbstractListModel(parent),
412 m_workerThread(new TimeZonePopulateWorker())
28 m_workerThread(new TimeZonePopulateWorker())
@@ -435,9 +51,6 @@ TimeZoneLocationModel::TimeZoneLocationModel(QObject *parent):
435 &QObject::deleteLater);
51 &QObject::deleteLater);
440− m_olsenMap.load(":/olsen_map.png");
443void TimeZoneLocationModel::init()
56void TimeZoneLocationModel::init()
@@ -506,44 +119,6 @@ QHash<int, QByteArray> TimeZoneLocationModel::roleNames() const
506 return m_roleNames;
119 return m_roleNames;
509−QJsonArray TimeZoneLocationModel::timezoneAndOffsetAtMapPoint(int x, int y, const QSize &mapImageSize) const
511− const QImage olsenMap = m_olsenMap.scaled(mapImageSize);
512− qDebug() << "Clicked at" << x << y << "(" << olsenMap.width() << olsenMap.height() << ")";
513− if (!olsenMap.valid(x,y)) {
514− qWarning() << Q_FUNC_INFO << "Invalid pixel position:" << x << y;
515− return QJsonArray();
518− const QRgb rgb = olsenMap.pixel(x,y);
519− const int red = qRed(rgb);
520− const int green = qGreen(rgb);
521− qDebug() << "Red:" << red << ", green:" << green;
522− if (red == 0 && green == 0) {
523− qWarning() << "Clicked the water!";
524− return QJsonArray();
527− const int zoneIndex = ((red & 248) << 1) + ((green >> 4) & 15);
528− qDebug() << "Zone index:" << zoneIndex;
529− if (zoneIndex >= 0 && zoneIndex < olsenTimezones.count()) {
530− const QByteArray tzId = olsenTimezones.at(zoneIndex);
531− qDebug() << "!!! Got TZ ID" << tzId;
535− result.append(qUtf8Printable(tzId));
536− result.append(static_cast<double>(tz.standardTimeOffset(QDateTime::currentDateTime())) / 3600);
539− qWarning() << Q_FUNC_INFO << "Invalid timezone" << tzId;
540− return QJsonArray();
543− qWarning() << Q_FUNC_INFO << "Invalid timezone index" << zoneIndex;
544− return QJsonArray();
547void TimeZonePopulateWorker::run()
122void TimeZonePopulateWorker::run()
549 buildCityMap();
124 buildCityMap();