Removed trailing whitespace from all *.?pp files
[supertux.git] / src / supertux / menu / language_menu.cpp
index 4448216..373b8fc 100644 (file)
 #include "supertux/menu/language_menu.hpp"
 
 extern "C" {
-#include "findlocale.h"
+#include <findlocale.h>
 }
 #include "gui/menu_item.hpp"
+#include "gui/menu_manager.hpp"
 #include "supertux/gameconfig.hpp"
+#include "supertux/globals.hpp"
 
 enum {
   MNID_LANGUAGE_AUTO_DETECT = 0,
@@ -29,7 +31,7 @@ enum {
   MNID_LANGUAGE_NEXT        = 10
 };
 
-LanguageMenu::LanguageMenu() 
+LanguageMenu::LanguageMenu()
 {
   add_label(_("Language"));
   add_hl();
@@ -37,8 +39,8 @@ LanguageMenu::LanguageMenu()
   add_entry(MNID_LANGUAGE_ENGLISH, "English");
 
   int mnid = MNID_LANGUAGE_NEXT;
-  std::set<tinygettext::Language> languages = dictionary_manager.get_languages();
-  for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); i++) 
+  std::set<tinygettext::Language> languages = dictionary_manager->get_languages();
+  for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); i++)
   {
     add_entry(mnid++, i->get_name());
   }
@@ -48,40 +50,40 @@ LanguageMenu::LanguageMenu()
 }
 
 void
-LanguageMenu::menu_action(MenuItem* item) 
+LanguageMenu::menu_action(MenuItem* item)
 {
   if (item->id == MNID_LANGUAGE_AUTO_DETECT) // auto detect
   {
     FL_Locale *locale;
-    FL_FindLocale(&locale, FL_MESSAGES);
-    tinygettext::Language language = tinygettext::Language::from_spec(locale->lang, locale->country, locale->variant);
+    FL_FindLocale(&locale);
+    tinygettext::Language language = tinygettext::Language::from_spec( locale->lang?locale->lang:"", locale->country?locale->country:"", locale->variant?locale->variant:"");
     FL_FreeLocale(&locale);
 
-    dictionary_manager.set_language(language);
-    g_config->locale = language.str();
+    dictionary_manager->set_language(language); // set currently detected language
+    g_config->locale = ""; // do auto detect every time on startup
     g_config->save();
-    Menu::pop_current();
+    MenuManager::instance().clear_menu_stack();
   }
   else if (item->id == MNID_LANGUAGE_ENGLISH) // english
   {
     g_config->locale = "en";
-    dictionary_manager.set_language(tinygettext::Language::from_name(g_config->locale));
+    dictionary_manager->set_language(tinygettext::Language::from_name(g_config->locale));
     g_config->save();
-    Menu::pop_current();
+    MenuManager::instance().clear_menu_stack();
   }
   else
   {
     int mnid = MNID_LANGUAGE_NEXT;
-    std::set<tinygettext::Language> languages = dictionary_manager.get_languages();
+    std::set<tinygettext::Language> languages = dictionary_manager->get_languages();
 
-    for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); i++) 
+    for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); i++)
     {
-      if (item->id == mnid++) 
+      if (item->id == mnid++)
       {
         g_config->locale = i->str();
-        dictionary_manager.set_language(*i);
+        dictionary_manager->set_language(*i);
         g_config->save();
-        Menu::pop_current();
+        MenuManager::instance().clear_menu_stack();
         break;
       }
     }