--- kdebase-3.1.3/kicker/applets/clock/settings.cpp-- 2003-08-26 18:28:20.000000000 +0200 +++ kdebase-3.1.3/kicker/applets/clock/settings.cpp 2003-08-26 19:04:05.000000000 +0200 @@ -178,59 +178,199 @@ int ClockSettings::calc_TZ_offset(const void ClockSettings::readZoneList( const QStringList & tzDefaults ) { - QFile f("/usr/share/zoneinfo/zone.tab"); + QFile f("/usr/share/zoneinfo/zone.tab"); - if (!f.open(IO_ReadOnly)) { + if (!f.open(IO_ReadOnly)) { kdDebug() << "Can't open zone.tab" << endl; confDlg->tzListView->setEnabled(false); QToolTip::add(confDlg->tzListView, i18n("Can't generate time zone list")); return; - } + } + + QTextStream str(&f); + QRegExp rx("[ \t]"); + QMap<QString, QListViewItem*> KontinentMap; + QListViewItem *Kontinent; + + confDlg->tzListView->setRootIsDecorated(true); + + bool chinese = false; + bool taiwan = false; + bool taiwanenglish = false; + // add all languages to the list + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LC_NAME"))); + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN" || *it =="zh_HK") + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + } + + if( !chinese && !taiwan && !taiwanenglish) + { + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LANGUAGE"))); + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN" || *it =="zh_HK") + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + } + } + if( !chinese && !taiwan) + { + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LC_ALL"))); + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN" || *it =="zh_HK" ) + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + + } + } - QTextStream str(&f); - QRegExp rx("[ \t]"); - QMap<QString, QListViewItem*> KontinentMap; - QListViewItem *Kontinent; - - confDlg->tzListView->setRootIsDecorated(true); - - while (!str.atEnd()) - { - QString line = str.readLine(); - if (line.isEmpty() || '#' == line[0]) - continue; - - QStringList tokens = KStringHandler::perlSplit(rx, line, 4); - if (tokens.count() < 3) - continue; - - QString tzName = tokens[2]; - tokens[2] = i18n(tokens[2].utf8()); - tokens[2].replace(QRegExp("_"), " "); - - QStringList KontCity = QStringList::split("/", tokens[2]); - Kontinent = KontinentMap[KontCity[0]]; - if (!Kontinent) { - KontinentMap[KontCity[0]] = new QListViewItem(confDlg->tzListView, KontCity[0]); - Kontinent = KontinentMap[KontCity[0]]; - Kontinent->setExpandable(true); - } - - QCheckListItem *li = new QCheckListItem(Kontinent, KontCity[1], QCheckListItem::CheckBox); - li->setText(1, i18n(tokens[3].utf8())); - li->setText(2, tzName); /* store complete path in ListView */ - - if (tzDefaults.findIndex(tzName) != -1) - li->setOn(true); - - // locate the flag from /l10n/%1/flag.png - // if not available select default "C" flag - QString flag = locate( "locale", QString("l10n/%1/flag.png").arg(tokens[0].lower()) ); - if (!QFile::exists(flag)) - flag = locate( "locale", "l10n/C/flag.png" ); - if (QFile::exists(flag)) - li->setPixmap(0, QPixmap(flag)); - } + if( !chinese && !taiwan && !taiwanenglish) + { + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LC_MESSAGE"))); + + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN"|| *it =="zh_HK") + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + } + } + + if( !chinese && !taiwan && !taiwanenglish) + chinese = ((QString::fromLocal8Bit(getenv("LANG"))==QString("zh_CN")) ||((QString::fromLocal8Bit(getenv("LANG"))==QString("zh_HK")))) ; + if( !chinese && !taiwan && !taiwanenglish) + taiwan = ((QString::fromLocal8Bit(getenv("LANG"))==QString("zh_TW"))); + if( !chinese && !taiwan && !taiwanenglish) + taiwanenglish= ((QString::fromLocal8Bit(getenv("LANG"))==QString("en_HK"))); + + while (!str.atEnd()) + { + QString line = str.readLine(); + if (line.isEmpty() || '#' == line[0]) + continue; + + QStringList tokens = KStringHandler::perlSplit(rx, line, 4); + if (tokens.count() < 3) + continue; + + QString tzName = tokens[2]; + tokens[2] = i18n(tokens[2].utf8()); + tokens[2].replace(QRegExp("_"), " "); + + QStringList KontCity = QStringList::split("/", tokens[2]); + Kontinent = KontinentMap[KontCity[0]]; + if (!Kontinent) { + KontinentMap[KontCity[0]] = new QListViewItem(confDlg->tzListView, KontCity[0]); + Kontinent = KontinentMap[KontCity[0]]; + Kontinent->setExpandable(true); + } + + QCheckListItem *li = new QCheckListItem(Kontinent, KontCity[1], QCheckListItem::CheckBox); + li->setText(1, i18n(tokens[3].utf8())); + li->setText(2, tzName); /* store complete path in ListView */ + + if (tzDefaults.findIndex(tzName) != -1) + li->setOn(true); + + // locate the flag from /l10n/%1/flag.png + // if not available select default "C" flag + QString flag; + + if( taiwan ) + { + if( !(tokens[0].lower().contains("cn"))) + { + flag = locate( "locale", QString("l10n/%1/flag.png").arg(tokens[0].lower()) ); + if (!QFile::exists(flag)) + flag = locate( "locale", "l10n/C/flag.png" ); + + } + else + flag = locate( "locale", "l10n/C/flag.png" ); + } + else if( chinese ) + { + if( !tokens[0].lower().contains("tw")) + { + flag = locate( "locale", QString("l10n/%1/flag.png").arg(tokens[0].lower()) ); + if (!QFile::exists(flag)) + flag = locate( "locale", "l10n/C/flag.png" ); + + } + else + flag = locate( "locale", "l10n/C/flag.png" ); + } + else if( taiwanenglish ) + { + if( !tokens[0].lower().contains("tw")) + { + flag = locate( "locale", QString("l10n/%1/flag.png").arg(tokens[0].lower()) ); + if (!QFile::exists(flag)) + flag = locate( "locale", "l10n/C/flag.png" ); + + } + else + flag = locate( "locale", "l10n/C/flag.png" ); + } + else + { + flag = locate( "locale", QString("l10n/%1/flag.png").arg(tokens[0].lower()) ); + if (!QFile::exists(flag)) + flag = locate( "locale", "l10n/C/flag.png" ); + + } + + + if (QFile::exists(flag)) + li->setPixmap(0, QPixmap(flag)); + } } void ClockSettings::getSelectedZonelist() --- kdebase-3.1.3/kcontrol/locale/kcmlocale.cpp-- 2003-08-26 18:43:25.000000000 +0200 +++ kdebase-3.1.3/kcontrol/locale/kcmlocale.cpp 2003-08-26 18:57:42.000000000 +0200 @@ -70,7 +70,7 @@ KLocaleConfig::KLocaleConfig(KLocale *lo KDialog::marginHint(), KDialog::spacingHint()); lay->setAutoAdd(TRUE); - + m_labCountry = new QLabel(this, I18N_NOOP("Country:")); m_comboCountry = new KLanguageButton( this ); m_labCountry->setBuddy(m_comboCountry); @@ -184,7 +184,7 @@ void KLocaleConfig::slotAddLanguage(int --pos; QStringList::Iterator it = languageList.at( pos ); - + languageList.insert( it, code ); m_locale->setLanguage( languageList ); @@ -263,7 +263,7 @@ void KLocaleConfig::loadLanguageList() entry.setGroup("KCM Locale"); QString name = entry.readEntry("Name", m_locale->translate("without name")); - + QString tag = *it; int index = tag.findRev('/'); tag = tag.left(index); @@ -315,6 +315,110 @@ void KLocaleConfig::loadCountryList() QStringList countrylist = KGlobal::dirs()->findAllResources ("locale", sub + QString::fromLatin1("*/entry.desktop")); + bool chinese = false; + bool taiwan = false; + bool taiwanenglish = false; + // add all languages to the list + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LC_NAME"))); + + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN" || *it =="zh_HK") + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + } + + if( !chinese && !taiwan && !taiwanenglish) + { + + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LANGUAGE"))); + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN" || *it =="zh_HK") + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + } + } + if( !chinese && !taiwan && !taiwanenglish) + { + + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LC_ALL"))); + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN" || *it =="zh_HK" ) + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + + } + } + + if( !chinese && !taiwan && !taiwanenglish) + { + QStringList langList = QStringList::split(":",QString::fromLocal8Bit(getenv("LC_MESSAGE"))); + + for ( QStringList::Iterator it = langList.begin(); it != langList.end(); ++it ) + { + if( *it =="zh_CN"|| *it =="zh_HK") + { + chinese = true; + break; + } + if( *it =="zh_TW" ) + { + taiwan = true; + break; + } + if( *it=="en_HK" ) + { + taiwanenglish = true; + break; + } + } + } + + if( !chinese && !taiwan && !taiwanenglish) + chinese = ((QString::fromLocal8Bit(getenv("LANG"))==QString("zh_CN")) ||((QString::fromLocal8Bit(getenv("LANG"))==QString("zh_HK")))) ; + if( !chinese && !taiwan && !taiwanenglish) + taiwan = ((QString::fromLocal8Bit(getenv("LANG"))==QString("zh_TW"))); + if( !chinese && !taiwan && !taiwanenglish) + taiwanenglish = ((QString::fromLocal8Bit(getenv("LANG"))==QString("en_HK"))); + for ( QStringList::ConstIterator it = countrylist.begin(); it != countrylist.end(); ++it ) { @@ -323,7 +427,7 @@ void KLocaleConfig::loadCountryList() QString name = entry.readEntry("Name", m_locale->translate("without name")); QString submenu = entry.readEntry("Region"); - + QString tag = *it; int index = tag.findRev('/'); tag.truncate(index); @@ -334,7 +438,33 @@ void KLocaleConfig::loadCountryList() QString flag( locate( "locale", QString::fromLatin1( "l10n/%1/flag.png" ) .arg(tag) ) ); - QIconSet icon( KGlobal::iconLoader()->loadIconSet(flag, KIcon::Small) ); + QIconSet icon; + if( taiwan ) + { + if( !(tag.contains("cn"))) + { + icon= QIconSet( KGlobal::iconLoader()->loadIconSet(flag, KIcon::Small) ); + } + + } + else if( chinese ) + { + if( !tag.contains("tw")) + { + icon= QIconSet( KGlobal::iconLoader()->loadIconSet(flag, KIcon::Small) ); + } + + } + else if( taiwanenglish ) + { + if( !tag.contains("tw") ) + { + icon= QIconSet( KGlobal::iconLoader()->loadIconSet(flag, KIcon::Small) ); + } + + } + else + icon= QIconSet( KGlobal::iconLoader()->loadIconSet(flag, KIcon::Small) ); m_comboCountry->insertItem( icon, name, tag, submenu, menu_index ); }