#include <QtSql/QSqlQuery>
#include <QtCore/QVariant>
+#include <QtCore/QDebug>
+#include <gconf/gconf-client.h>
#include "settings.h"
#include "db.h"
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 <QString, QString> defaultValues;
+ static bool defaultValuesLoaded = false;
+ static QMap <QString, QString> 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<QString, QString>::const_iterator it = defaultValues.find(name);
+ QMap<QString, QString>::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<QString> 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()