[haiku-commits] r35969 - haiku/trunk/src/apps/aboutsystem

  • From: michael.w.pfeiffer@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 27 Mar 2010 11:10:03 +0100 (CET)

Author: laplace
Date: 2010-03-27 11:10:03 +0100 (Sat, 27 Mar 2010)
New Revision: 35969
Changeset: http://dev.haiku-os.org/changeset/35969/haiku

Modified:
   haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp
Log:
Sort languages alphabetically using collators.


Modified: haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp
===================================================================
--- haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp    2010-03-27 09:19:17 UTC 
(rev 35968)
+++ haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp    2010-03-27 10:10:03 UTC 
(rev 35969)
@@ -156,6 +156,28 @@
 #define kNumberOfTranslations (sizeof(gTranslations) / sizeof(Translation))
 
 
+static int
+TranslationComparator(const void* left, const void* right)
+{
+       const Translation* leftTranslation = *(const Translation**)left;
+       const Translation* rightTranslation = *(const Translation**)right;
+
+       BLanguage* language;
+       be_locale_roster->GetLanguage(&language, leftTranslation->languageCode);
+       BString leftName;
+       language->GetName(&leftName);
+       delete language;
+
+       be_locale_roster->GetLanguage(&language, 
rightTranslation->languageCode);
+       BString rightName;
+       language->GetName(&rightName);
+       delete language;
+
+       return be_locale->Collator()->Compare(leftName.String(),
+               rightName.String());
+}
+
+
 class AboutApp : public BApplication {
 public:
                                                                AboutApp();
@@ -1014,13 +1036,20 @@
        fCreditsView->SetFontAndColor(&font, B_FONT_ALL, &kHaikuOrange);
        fCreditsView->Insert(TR("Translations:\n"));
 
-       // TODO : sort languages alphabetically using collators
        BLanguage* lang;
        BString langName;
 
+       BList sortedTranslations;
        for (uint32 i = 0; i < kNumberOfTranslations; i ++) {
-               const Translation& translation = gTranslations[i];
+               const Translation* translation = &gTranslations[i];
+               sortedTranslations.AddItem((void*)translation);
+       }
+       sortedTranslations.SortItems(TranslationComparator);
 
+       for (uint32 i = 0; i < kNumberOfTranslations; i ++) {
+               const Translation& translation =
+                       *(const Translation*)sortedTranslations.ItemAt(i);
+
                be_locale_roster->GetLanguage(&lang, translation.languageCode);
                langName.Truncate(0);
                lang->GetName(&langName);


Other related posts: