// For debuggin in scratchbox must be set to 0, for real device, set 1
#define CHECK_FOR_CONNECTION 1
+#define APPLICATION_NAME "yandex-traffic-widget"
+
+#define TRANSLATION_PATH "/usr/share/yandex-traffic-widget/"
+
#endif // __GLOBALS_H__
QApplication::setApplicationName ("yandex-traffic-widget");
QApplication app (argc, argv);
- QTranslator translator;
-
- translator.load (QString ("yandex-traffic-widget") + "_ru", "/usr/share/yandex-traffic-widget/");
- app.installTranslator (&translator);
MainWidget w;
QMaemo5HomescreenAdaptor *adaptor = new QMaemo5HomescreenAdaptor (&w);
#include <QtCore>
#include <settings.hpp>
+#include "globals.hpp"
+
static Settings* _settings;
Settings::Settings ()
+ : _ts (NULL)
{
load ();
}
}
+// This routine called before any translations loaded, so strings must be translated explicitly.
void Settings::makeDefault ()
{
_regionID = "1"; // Default city
_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 ());
}
#include <QtCore>
+
class Language
{
private:
QList<Language> _langs;
int _langIndex;
+ QTranslator *_ts;
+
void makeDefault ();
int intervalIndex2Minutes (int index) const;
int minutes2IntervalIndex (int minutes) const;
Settings ();
+
+ void refreshTranslations ();
+
public:
static Settings* instance ();
void setRegionID (const QString &id)
{ _regionID = id; };
- QMap<QString, QString> cities () const
- { return _cities; };
+ QStringList regionIDs () const
+ { return _cities.keys (); };
+
+ QString regionName (const QString &id) const;
bool check (check_t entry) const
{ return _checks[entry]; };
{ return _langs; };
void setLanguageIndex (int index);
+
+signals:
+ void translationsUpdated ();
};
QString val;
QStringList list;
- val = tr ("City:") + " " + _settings->cities ()[_settings->regionID ()] + ", " + tr ("Display:") + " ";
+ val = tr ("City:") + " " + _settings->regionName (_settings->regionID ()) + ", " + tr ("Display:") + " ";
if (_settings->check (Settings::C_ShowLight))
list.append (tr ("lights"));
void DisplaySettingsDialog::initCities (QBoxLayout *layout)
{
_cities = new QListWidget (this);
- QMap<QString, QString> cities_map = settings ()->cities ();
- QMap<QString, QString>::iterator it = cities_map.begin ();
+ QStringList regions = settings ()->regionIDs ();
+ QStringList::const_iterator it = regions.begin ();
// Populate list with cities
- while (it != cities_map.end ()) {
- QListWidgetItem *item = new QListWidgetItem (it.value (), _cities);
+ while (it != regions.end ()) {
+ QListWidgetItem *item = new QListWidgetItem (settings()->regionName (*it), _cities);
- item->setData (Qt::UserRole, QVariant (it.key ()));
- if (it.key () == settings ()->regionID ())
+ item->setData (Qt::UserRole, QVariant (*it));
+ if (*it == settings ()->regionID ())
_cities->setCurrentItem (item);
it++;
}