Sophie

Sophie

distrib > Mandriva > 2006.0 > i586 > media > main-src > by-pkgid > a6bc312ce50b5c8d0c51736e58ac32bc > files > 124

kdebase-3.4.2-55mdk.src.rpm

--- 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 );
     }