int LXQtWorldClockConfigurationTimeZones::updateAndExec() { QDateTime now = QDateTime::currentDateTime(); ui->timeZonesTW->clear(); QMap<QString, QTreeWidgetItem*> parentItems; foreach(QByteArray ba, QTimeZone::availableTimeZoneIds()) { QTimeZone timeZone(ba); QString ianaId(ba); QStringList qStrings(QString(ba).split(QLatin1Char('/'))); if ((qStrings.size() == 1) && (qStrings[0].startsWith(QLatin1String("UTC")))) qStrings.prepend(tr("UTC")); if (qStrings.size() == 1) qStrings.prepend(tr("Other")); QTreeWidgetItem *tzItem = new QTreeWidgetItem(QStringList() << qStrings[qStrings.length() - 1] << timeZone.displayName(now) << timeZone.comment() << QLocale::countryToString(timeZone.country())); tzItem->setData(0, Qt::UserRole, ianaId); makeSureParentsExist(qStrings, parentItems)->addChild(tzItem); }
QLocale::Country QTimeZonePrivate::country() const { // Default fall-back mode, use the zoneTable to find Region of known Zones for (int i = 0; i < zoneDataTableSize; ++i) { const QZoneData *data = zoneData(i); if (ianaId(data).split(' ').contains(m_id)) return (QLocale::Country)data->country; } return QLocale::AnyCountry; }