X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fcommon%2Fsettings.cpp;h=89c10cd68dd1afe8fb861ded165a168b944c63fb;hb=d187495fd3566da1ee1eb94cc313c2f561a0fac5;hp=956173e3919146023bc1078bbeb8e7072f1602f8;hpb=28a07e35293ce3ee730b72de527e9d145fa47129;p=jenirok diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 956173e..89c10cd 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -19,10 +19,27 @@ #include #include #include +#include +#include #include #include "settings.h" #include "db.h" +namespace +{ + static int const LANGUAGE_COUNT = 2; + + static QString const LANGUAGE_NAMES[LANGUAGE_COUNT] = { + "English", + "Suomi" + }; + + static QString const LANGUAGE_IDS[LANGUAGE_COUNT] = { + "en_US", + "fi_FI" + }; +} + Settings* Settings::instance_ = 0; Settings* Settings::instance() @@ -35,23 +52,59 @@ Settings* Settings::instance() return instance_; } +void Settings::getLanguages(QList& languages) +{ + for(int i = 0; i < LANGUAGE_COUNT; i++) + { + Language lang; + lang.name = LANGUAGE_NAMES[i]; + lang.id = LANGUAGE_IDS[i]; + languages.push_back(lang); + } +} + +void Settings::loadLanguage(QApplication& app) +{ + QString language = get("language"); + + if(language.isEmpty()) + { + language = QLocale::system().name(); + } + + QTranslator* translator = new QTranslator(&app); + translator->load(":/translations/" + language); + app.installTranslator(translator); +} + void Settings::close() { delete instance_; instance_ = 0; } -bool Settings::set(QString const& name, QString const& value) +void Settings::startEdit() { - bool connected = DB::connected(); + if(!editing_ && !DB::connected()) + { + editing_ = DB::connect(); + } +} - if(!connected) +void Settings::endEdit() +{ + if(editing_) { - if(!DB::connect()) - { - return false; - } + DB::disconnect(); + editing_ = false; } +} + +bool Settings::set(QString const& name, QString const& value) +{ + bool close = !editing_; + + startEdit(); QSqlQuery deleteQuery; deleteQuery.prepare("DELETE FROM settings WHERE name = :name"); @@ -65,9 +118,9 @@ bool Settings::set(QString const& name, QString const& value) bool returnValue = query.exec(); - if(!connected) + if(close) { - DB::disconnect(); + endEdit(); } return returnValue; @@ -77,15 +130,9 @@ QString Settings::get(QString const& name) { QString result = ""; - bool connected = DB::connected(); + bool close = !editing_; - if(!connected) - { - if(!DB::connect()) - { - return result; - } - } + startEdit(); QSqlQuery query; @@ -101,9 +148,9 @@ QString Settings::get(QString const& name) result = getDefaultValue(name); } - if(!connected) + if(close) { - DB::disconnect(); + endEdit(); } return result; @@ -137,23 +184,17 @@ QString Settings::getDefaultValue(QString const& name) bool Settings::reset() { - bool connected = DB::connected(); + bool close = !editing_; - if(!connected) - { - if(!DB::connect()) - { - return false; - } - } + startEdit(); QSqlQuery query; bool ret = query.exec("DELETE FROM settings"); - if(!connected) + if(close) { - DB::disconnect(); + endEdit(); } return ret; @@ -244,6 +285,11 @@ Settings::ConnectionType Settings::getConnectionType() return ALWAYS_ASK; } -Settings::Settings() +Settings::Settings(): editing_(false) +{ +} + +Settings::~Settings() { + DB::removeDatabase(); }