Fix typo
[yandex-traffic] / settings.cpp
index 995aa05..4a7cac3 100644 (file)
@@ -1,7 +1,21 @@
 #include <QtCore>
 #include <settings.hpp>
 
+#include "globals.hpp"
 
+
+// --------------------------------------------------
+// Language
+// --------------------------------------------------
+QString Language::title () const
+{
+    return Settings::tr (_title.toUtf8 ());
+}
+
+
+// --------------------------------------------------
+// Settings
+// --------------------------------------------------
 static Settings* _settings;
 
 
@@ -14,6 +28,7 @@ Settings* Settings::instance ()
 
 
 Settings::Settings ()
+    : _ts (NULL)
 {
     load ();
 }
@@ -61,6 +76,7 @@ void Settings::save ()
 }
 
 
+// This routine called before any translations loaded, so strings must be translated explicitly.
 void Settings::makeDefault ()
 {
     _regionID = "1";            // Default city
@@ -93,11 +109,13 @@ QStringList Settings::updateIntervals () const
     QStringList res;
 
     res.append (tr ("Never"));
-    res.append (tr ("1 min"));
-    res.append (tr ("2 min"));
-    res.append (tr ("5 min"));
-    res.append (tr ("15 min"));
-    res.append (tr ("30 min"));
+    res.append (tr ("1 minute"));
+    res.append (tr ("2 minutes"));
+    res.append (tr ("5 minutes"));
+    res.append (tr ("15 minutes"));
+    res.append (tr ("30 minutes"));
+    res.append (tr ("1 hour"));
+    res.append (tr ("2 hours"));
 
     return res;
 }
@@ -105,7 +123,7 @@ QStringList Settings::updateIntervals () const
 
 int Settings::intervalIndex2Minutes (int index) const
 {
-    int int2min[] = { -1, 1, 2, 5, 15, 30 };
+    int int2min[] = { -1, 1, 2, 5, 15, 30, 60, 120 };
 
     if (index < 0 || sizeof (int2min) / sizeof (int2min[0]) <= (unsigned int)index)
         return -1;
@@ -129,6 +147,10 @@ int Settings::minutes2IntervalIndex (int minutes) const
             return 4;
         case 30:
             return 5;
+        case 60:
+            return 6;
+        case 120:
+            return 7;
         default:
             return 0;
     }
@@ -141,4 +163,35 @@ void Settings::setLanguageIndex (int index)
         _langIndex = 0;
     else
         _langIndex = index;
+
+    // load settings
+    if (_ts) {
+        QCoreApplication::removeTranslator (_ts);
+        _ts = NULL;
+    }
+
+    QString alias = _langs[_langIndex].alias ();
+    QString fileName = QString (APPLICATION_NAME) + "_";
+
+    _ts = new QTranslator;
+
+    if (alias.isEmpty ())
+        fileName += QLocale::system ().name ();
+    else
+        fileName += alias;
+
+    if (_ts->load (fileName, TRANSLATION_PATH)) {
+        QCoreApplication::installTranslator (_ts);
+        translationsUpdated ();
+    }
+    else {
+        delete _ts;
+        _ts = NULL;
+    }
+}
+
+
+QString Settings::regionName (const QString &id) const
+{
+    return Settings::tr (_cities[id].toUtf8 ());
 }