X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fcommon%2Fsettings.cpp;h=c0296cd0720f83b9295d705f834f3636fb72ff49;hb=9127dc5e47aee7fa6659f45ae60a9394612f27b1;hp=25fc13baf98a577ff9d4bdffb693b05d13592a90;hpb=89496ceee9788c2908c27ad4e2535f2728310d76;p=jenirok diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 25fc13b..c0296cd 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -18,6 +18,8 @@ #include #include +#include +#include #include "settings.h" #include "db.h" @@ -25,129 +27,222 @@ Settings* Settings::instance_ = 0; Settings* Settings::instance() { - if(!instance_) - { - instance_ = new Settings; - } + if(!instance_) + { + instance_ = new Settings; + } - return instance_; + return instance_; +} + +void Settings::close() +{ + delete instance_; + instance_ = 0; } bool Settings::set(QString const& name, QString const& value) { - bool connected = DB::connected(); - - if(!connected) - { - if(!DB::connect()) - { - return false; - } - } - - QSqlQuery deleteQuery; - deleteQuery.prepare("DELETE FROM settings WHERE name = :name"); - deleteQuery.bindValue(":name", QVariant(name)); - deleteQuery.exec(); - - QSqlQuery query; - query.prepare("INSERT INTO settings(name, value) VALUES(:name, :value)"); - query.bindValue(":name", QVariant(name)); - query.bindValue(":value", QVariant(value)); - - bool returnValue = query.exec(); - - if(!connected) - { - DB::disconnect(); - } - - return returnValue; + bool connected = DB::connected(); + + if(!connected) + { + if(!DB::connect()) + { + return false; + } + } + + QSqlQuery deleteQuery; + deleteQuery.prepare("DELETE FROM settings WHERE name = :name"); + deleteQuery.bindValue(":name", QVariant(name)); + deleteQuery.exec(); + + QSqlQuery query; + query.prepare("INSERT INTO settings(name, value) VALUES(:name, :value)"); + query.bindValue(":name", QVariant(name)); + query.bindValue(":value", QVariant(value)); + + bool returnValue = query.exec(); + + if(!connected) + { + DB::disconnect(); + } + + return returnValue; } QString Settings::get(QString const& name) { - QString result = ""; + QString result = ""; - bool connected = DB::connected(); + bool connected = DB::connected(); - if(!connected) - { - if(!DB::connect()) - { - return result; - } - } + if(!connected) + { + if(!DB::connect()) + { + return result; + } + } - QSqlQuery query; + QSqlQuery query; - query.prepare("SELECT value FROM settings WHERE name = :name"); - query.bindValue(":name", name); + query.prepare("SELECT value FROM settings WHERE name = :name"); + query.bindValue(":name", name); - if(query.exec() && query.next()) - { - result = query.value(0).toString(); - } - else - { - result = getDefaultValue(name); - } + if(query.exec() && query.next()) + { + result = query.value(0).toString(); + } + else + { + result = getDefaultValue(name); + } - if(!connected) - { - DB::disconnect(); - } + if(!connected) + { + DB::disconnect(); + } - return result; + return result; } QString Settings::getDefaultValue(QString const& name) { - static bool defaultValuesLoaded = false; - static QMap defaultValues; + static bool defaultValuesLoaded = false; + static QMap defaultValues; - if(!defaultValuesLoaded) - { - defaultValues["autostart"] = "1"; - defaultValues["eniro_site"] = tr("fi"); - defaultValues["cache_size"] = "200"; - defaultValuesLoaded = true; - } + if(!defaultValuesLoaded) + { + defaultValues["autostart"] = "1"; + defaultValues["eniro_site"] = tr("fi"); + defaultValues["cache_size"] = "200"; + defaultValues["connection"] = "global"; + defaultValuesLoaded = true; + } - QMap::const_iterator it = defaultValues.find(name); + QMap::const_iterator it = defaultValues.find(name); - if(it != defaultValues.end()) - { - return it.value(); - } + if(it != defaultValues.end()) + { + return it.value(); + } - return ""; + return ""; } bool Settings::reset() { - bool connected = DB::connected(); + bool connected = DB::connected(); - if(!connected) - { - if(!DB::connect()) - { - return false; - } - } + if(!connected) + { + if(!DB::connect()) + { + return false; + } + } - QSqlQuery query; + QSqlQuery query; - bool ret = query.exec("DELETE FROM settings"); + bool ret = query.exec("DELETE FROM settings"); - if(!connected) - { - DB::disconnect(); - } + if(!connected) + { + DB::disconnect(); + } - return ret; + return ret; +} + +Settings::ConnectionType Settings::getConnectionType() +{ + QString value = get("connection"); + + if(value == "any") + { + return ANY; + } + else if(value == "wlan") + { + return WLAN; + } + else if(value == "gprs") + { + return GPRS; + } + else + { + if(value != "global") + { + qDebug() << "Unknown connection type in settings, using default"; + } + + QList values; + + GConfClient* gcClient = NULL; + gcClient = gconf_client_get_default(); + + g_assert(GCONF_IS_CLIENT(gcClient)); + + GError* error = NULL; + GSList* list = NULL; + list = gconf_client_get_list(gcClient, + "/system/osso/connectivity/network_type/auto_connect", + GCONF_VALUE_STRING, + &error); + + if(error) + { + qDebug() << "Error: " << error->message; + g_error_free(error); + } + else + { + while(list) + { + values.push_back((char *)list->data); + list = list->next; + } + + } + + g_object_unref(gcClient); + + if(values.size() == 0) + { + return ALWAYS_ASK; + } + else + { + QString value = values.at(0); + + if(value == "*") + { + return ANY; + } + else if(value == "GPRS") + { + return GPRS; + } + else if(value == "WLAN_INFRA" || value == "WLAN_ADHOC" || value == "WLAN") + { + return WLAN; + } + else + { + qDebug() << "Unknown connection type: " << value; + return ALWAYS_ASK; + } + } + + } + + return ALWAYS_ASK; } Settings::Settings()