#############################################################################
# Makefile for building: jenirok
-# Generated by qmake (2.01a) (Qt 4.6.2) on: Fri Jun 4 22:53:04 2010
+# Generated by qmake (2.01a) (Qt 4.6.2) on: Wed Jun 9 14:23:12 2010
# Project: jenirok.pro
# Template: subdirs
# Command: /usr/bin/qmake -unix -o Makefile jenirok.pro
#include <QtCore/QTimerEvent>
#include <QtCore/QVariant>
#include <QtDBus/QDBusArgument>
+#include <QtDBus/QDBusConnection>
#include <icd/dbus_api.h>
#include "connectionmanager.h"
ConnectionManager::ConnectionManager(QObject* parent): QObject(parent),
blocking_(true), stateReady_(false), connectionReady_(false), scanReady_(false),
connected_(false), timeout_(false), numberOfConnections_(0),
-scannedConnections_(0), timer_(0), connections_(false)
+scannedConnections_(0), timer_(0), error_(NO_ERROR), connections_(0)
{
QDBusConnection systemBus = QDBusConnection::systemBus();
bool ConnectionManager::connect(ConnectionManager::Connection const& connection)
{
- connectionReady_ = false;
- QDBusArgument arg;
- arg.beginStructure();
- arg << connection.serviceType
- << connection.serviceAttributes
- << connection.serviceID
- << connection.networkType
- << connection.networkAttributes
- << connection.networkID;
- arg.endStructure();
+ return connect(connection.id);
+}
- unsigned int flags = static_cast<unsigned int>(ICD_CONNECTION_FLAG_USER_EVENT);
- QDBusMessage rep = icd2interface_->call(ICD_DBUS_API_CONNECT_REQ,
- flags, arg.asVariant());
+bool ConnectionManager::connect(QString const& id)
+{
+ QDBusMessage msg = QDBusMessage::createMethodCall("com.nokia.icd",
+ "/com/nokia/icd",
+ "com.nokia.icd",
+ "connect");
+ QList<QVariant> arguments;
- qDebug() << rep.errorName() << rep.errorMessage();
+ arguments.append(QVariant(id));
- if(blocking_)
+ unsigned int val = 0;
+
+ arguments.append(QVariant(val));
+
+ msg.setArguments(arguments);
+
+ QDBusMessage rep = QDBusConnection::systemBus().call(msg);
+
+ if(rep.type() == QDBusMessage::ErrorMessage)
{
- waitSignal(&connectionReady_);
- return connected_;
+ if(rep.errorName() == "com.nokia.icd.error.invalid_iap")
+ {
+ error_ = INVALID_IAP;
+ }
+ else
+ {
+ error_ = UNKNOWN_ERROR;
+ }
+
+ return false;
}
return true;
}
+bool ConnectionManager::getBestConnection(Connection& connection)
+{
+ bool blockingValue = blocking_;
+
+ blocking_ = true;
+
+ QList<Connection> connections;
+
+ if(!scanConnections(connections))
+ {
+ return false;
+ }
+
+ blocking_ = blockingValue;
+
+ if(connections.size() == 0)
+ {
+ qDebug() << "No connections";
+ error_ = NO_AVAILABLE_CONNECTIONS;
+ return false;
+ }
+
+ int biggestWlan = -1;
+ int biggestGprs = -1;
+ int bestWlan = -1;
+ int bestGprs = -1;
+
+ for(int i = 0; i < connections.size(); i++)
+ {
+ switch(connections.at(i).type)
+ {
+ case WLAN:
+ if(connections.at(i).strength > biggestWlan)
+ {
+ biggestWlan = connections.at(i).strength;
+ bestWlan = i;
+ }
+ break;
+
+ case GPRS:
+ if(connections.at(i).strength > biggestGprs)
+ {
+ biggestGprs = connections.at(i).strength;
+ bestGprs = i;
+ }
+ break;
+
+ default:
+ qDebug() << "Unknown connection type";
+ }
+ }
+
+ if(bestWlan >= 0)
+ {
+ connection = connections.at(bestWlan);
+ return true;
+ }
+ else if(bestGprs >= 0)
+ {
+ connection = connections.at(bestGprs);
+ return true;
+ }
+ else
+ {
+ error_ = NO_AVAILABLE_CONNECTIONS;
+ return false;
+ }
+
+}
+
+bool ConnectionManager::autoConnect()
+{
+ Connection best;
+
+ if(!getBestConnection(best))
+ {
+ return false;
+ }
+
+ qDebug() << "Best connection: " << best.name;
+
+ return connect(best.id);
+
+}
+
bool ConnectionManager::disconnect(bool force)
{
// Forced disconnect is not allowed if connection
bool ConnectionManager::scanConnections(QList<ConnectionManager::Connection>& connections)
{
- unsigned int flags = static_cast<unsigned int>(ICD_SCAN_REQUEST_ACTIVE);
+ unsigned int flags = static_cast<unsigned int>(ICD_SCAN_REQUEST_ACTIVE_SAVED);
scanReady_ = false;
scannedConnections_ = 0;
connections_ = &connections;
return true;
}
+ConnectionManager::NetworkMode ConnectionManager::getNetworkMode()
+{
+ QDBusMessage msg = QDBusMessage::createMethodCall("com.nokia.phone.net",
+ "/com/nokia/phone/net",
+ "Phone.Net",
+ "get_registration_status");
+
+ QDBusMessage rep = QDBusConnection::systemBus().call(msg);
+
+ if(rep.type() == QDBusMessage::ErrorMessage)
+ {
+ qDebug() << rep.errorMessage();
+
+ return NETWORK_UNKNOWN;
+ }
+
+ char services = rep.arguments().value(6).toChar().toAscii();
+
+ qDebug() << services;
+
+ if(services & 0x08)
+ {
+ return NETWORK_3_5G;
+ }
+ else if(services & 0x04)
+ {
+ return NETWORK_3G;
+ }
+ else if(services & 0x01)
+ {
+ return NETWORK_2_5G;
+ }
+ else if(services & 0x02)
+ {
+ return NETWORK_2G;
+ }
+
+ return NETWORK_UNKNOWN;
+}
+
+ConnectionManager::Error ConnectionManager::error() const
+{
+ return error_;
+}
+
void ConnectionManager::stateChange(const QDBusMessage& rep)
{
unsigned int status = rep.arguments().value(7).value<unsigned int>();
if(scannedConnections_ >= numberOfConnections_)
{
scanReady_ = true;
+ connections_ = 0;
emit scanReady();
return;
}
}
Connection connection;
- connection.serviceType = args.value(2).toString();
- connection.serviceAttributes = args.value(4).value<unsigned int>();
- connection.serviceID = args.value(5).toString();
- connection.networkName = args.value(8).toString();
- connection.networkType = args.value(7).toString();
- connection.networkAttributes = args.value(9).value<unsigned int>();
- connection.networkID = args.value(10).toByteArray();
+ connection.id = QString(args.value(10).toByteArray());
+ connection.name = args.value(8).toString();
+ connection.strength = args.value(11).toInt();
+
+ QString type = args.value(7).toString();
+
+ if(type == "GPRS")
+ {
+ connection.type = GPRS;
+ }
+ else if(type == "WLAN_INFRA" || type == "WLAN_ADHOC")
+ {
+ connection.type = WLAN;
+ }
+ else
+ {
+ qDebug() << "Unknown connection type: " << type;
+ return;
+ }
emit newConnection(connection);
public:
+ enum ConnectionType {WLAN, GPRS};
+ enum NetworkMode {NETWORK_UNKNOWN, NETWORK_2G, NETWORK_2_5G, NETWORK_3G, NETWORK_3_5G};
+ enum Error {NO_ERROR, NO_AVAILABLE_CONNECTIONS, INVALID_IAP, UNKNOWN_ERROR};
+
struct Connection
{
- QString serviceType;
- unsigned int serviceAttributes;
- QString serviceID;
- QString networkName;
- QString networkType;
- unsigned int networkAttributes;
- QByteArray networkID;
+ ConnectionType type;
+ QString id;
+ QString name;
+ int strength;
};
ConnectionManager(QObject* parent = 0);
void setBlocking(bool value);
bool connect();
bool connect(Connection const& connection);
+ bool connect(QString const& id);
+ bool getBestConnection(Connection& connection);
+ bool autoConnect();
bool disconnect(bool force = false);
bool isConnected();
bool scanConnections(QList<Connection>& connections);
- static unsigned int const TIMEOUT = 25000;
+ NetworkMode getNetworkMode();
+ Error error() const;
+ static unsigned int const TIMEOUT = 20000;
signals:
void connectReply(bool connected);
int numberOfConnections_;
int scannedConnections_;
int timer_;
+ Error error_;
QList<Connection>* connections_;
QDBusInterface* icd2interface_;
};
defaultValues["autostart"] = "1";
defaultValues["eniro_site"] = tr("fi");
defaultValues["cache_size"] = "200";
+ defaultValues["connection"] = "0";
+ defaultValues["autoconnect"] = "0";
defaultValuesLoaded = true;
}
<source>Phone number was not found</source>
<translation>Numeroa ei löytynyt</translation>
</message>
+ <message>
+ <source>No network connections found.</source>
+ <translation>Käytettävissä olevia verkkoyhteyksiä ei löytynyt.</translation>
+ </message>
+ <message>
+ <source>Selected access point doesn't exist.</source>
+ <translation>Valittua yhteysosoitetta ei löytynyt.</translation>
+ </message>
+ <message>
+ <source>No 3G or WLAN network available.</source>
+ <translation>Ei saatavilla olevaa 3G- tai WLAN-verkkoa.</translation>
+ </message>
+ <message>
+ <source>Unable to connect to network.</source>
+ <translation>Yhteyden muodostaminen ei onnistunut.</translation>
+ </message>
+</context>
+<context>
+ <name>ConnectionSelector</name>
+ <message>
+ <location filename="../../gui/connectionselector.cpp" line="35"/>
+ <source>Choose automatically</source>
+ <translation>Valitse automaattisesti</translation>
+ </message>
</context>
<context>
<name>DetailWindow</name>
<context>
<name>Settings</name>
<message>
- <location filename="../settings.cpp" line="113"/>
+ <location filename="../settings.cpp" line="119"/>
<source>fi</source>
<translation>fi</translation>
</message>
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="40"/>
+ <location filename="../../gui/settingsdialog.cpp" line="41"/>
<source>Settings</source>
<translation>Asetukset</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="50"/>
+ <location filename="../../gui/settingsdialog.cpp" line="52"/>
<source>Eniro username</source>
<translation>Eniro-tunnus</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="53"/>
+ <location filename="../../gui/settingsdialog.cpp" line="55"/>
<source>Eniro password</source>
<translation>Eniro-salasana</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="57"/>
+ <location filename="../../gui/settingsdialog.cpp" line="59"/>
<source>Cache size (numbers)</source>
<translation>Välimuistin koko (numeroa)</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="60"/>
+ <location filename="../../gui/settingsdialog.cpp" line="62"/>
<source>Clear</source>
<translation>Tyhjennä</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="63"/>
+ <location filename="../../gui/settingsdialog.cpp" line="65"/>
<source>Eniro site</source>
<translation>Eniro-sivusto</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="80"/>
+ <location filename="../../gui/settingsdialog.cpp" line="82"/>
<source>Finnish</source>
<translation>Suomi</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="83"/>
+ <location filename="../../gui/settingsdialog.cpp" line="85"/>
<source>Swedish</source>
<translation>Ruotsi</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="86"/>
+ <location filename="../../gui/settingsdialog.cpp" line="88"/>
<source>Danish</source>
<translation>Tanska</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="103"/>
+ <location filename="../../gui/settingsdialog.cpp" line="105"/>
<source>Autostart</source>
<translation>Käynnistä automaattisesti</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="105"/>
+ <location filename="../../gui/settingsdialog.cpp" line="107"/>
<source>Enabled</source>
<translation>Kyllä</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="106"/>
+ <location filename="../../gui/settingsdialog.cpp" line="108"/>
<source>Disabled</source>
<translation>Ei</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="109"/>
+ <location filename="../../gui/settingsdialog.cpp" line="111"/>
+ <source>Allow daemon to connect automatically</source>
+ <translation>Salli automaattinen verkkoyht. muodostus</translation>
+ </message>
+ <message>
+ <location filename="../../gui/settingsdialog.cpp" line="115"/>
+ <source>Connection to use</source>
+ <translation>Käytettävä yhteys</translation>
+ </message>
+ <message>
+ <location filename="../../gui/settingsdialog.cpp" line="119"/>
<source>Save</source>
<translation>Tallenna</translation>
</message>
<message>
- <location filename="../../gui/settingsdialog.cpp" line="155"/>
+ <location filename="../../gui/settingsdialog.cpp" line="150"/>
+ <source>General</source>
+ <translation>Yleiset</translation>
+ </message>
+ <message>
+ <location filename="../../gui/settingsdialog.cpp" line="151"/>
+ <source>Daemon</source>
+ <translation>Taustaprosessi</translation>
+ </message>
+ <message>
+ <location filename="../../gui/settingsdialog.cpp" line="185"/>
<source>Restarting daemon...</source>
<translation>Käynnistetään palvelu uudelleen...</translation>
</message>
<message numerus="yes">
- <location filename="../../gui/settingsdialog.cpp" line="179"/>
+ <location filename="../../gui/settingsdialog.cpp" line="211"/>
<source>%n number(s) were deleted from cache</source>
<translation>
<numerusform>Poistettiin %n numero välimuistista</numerusform>
CallListener::CallListener(): eniro_(0), connectionManager_(0),
closeConnection_(false), initialized_(false), box_(0), label_(0),
-retries_(-1), site_(Eniro::FI)
+retries_(-1), site_(Eniro::FI), autoconnect_(false)
{
}
SLOT(callTerminate()));
site_ = Eniro::stringToSite(Settings::instance()->get("site"));
+ connectionName_ = Settings::instance()->get("connection");
+ autoconnect_ = (Settings::instance()->get("autoconnect") == "1");
Settings::close();
qDebug() << "Starting...";
showDelayedResult(tr("Searching..."), BANNER_DELAY);
- if(!connectionManager_->isConnected())
+ if(!handleConnection())
{
- connectionManager_->connect();
- closeConnection_ = true;
- }
- else
- {
- closeConnection_ = false;
+ qDebug() << "Unable to connect";
+ return;
}
qDebug() << "Starting to search...";
else
{
timedMessage_ = "";
- message = tr("Search failed:") + " " + eniro_->errorString() + ".";
- showResult(message);
+ showError(tr("Search failed:") + " " + eniro_->errorString() + ".");
}
}
else
box_ = 0;
label_ = 0;
}
+
+bool CallListener::handleConnection()
+{
+ if(!connectionManager_)
+ {
+ qDebug() << "Error: connection manager not initialized";
+ return false;
+ }
+
+ if(connectionManager_->isConnected())
+ {
+ closeConnection_ = false;
+ return true;
+ }
+
+ closeConnection_ = true;
+ int retries = 0;
+
+ if(autoconnect_)
+ {
+ QString conn;
+
+ if(connectionName_.size() != 0 && connectionName_ != "0")
+ {
+ conn = connectionName_;
+ }
+ else
+ {
+ ConnectionManager::Connection best;
+
+ if(!connectionManager_->getBestConnection(best))
+ {
+ showError(tr("No network connections found."));
+ return false;
+ }
+
+ conn = best.id;
+ }
+
+ while(retries < CONNECT_RETRIES)
+ {
+ if(connectionManager_->connect(conn))
+ {
+ break;
+ }
+ else if(connectionManager_->error() == ConnectionManager::INVALID_IAP)
+ {
+ showError(tr("Selected access point doesn't exist."));
+ return false;
+ }
+
+ retries++;
+ }
+ }
+ else
+ {
+ while(retries < CONNECT_RETRIES)
+ {
+ if(connectionManager_->connect())
+ {
+ break;
+ }
+ else
+ {
+ qDebug() << "Automatic connection failed";
+ }
+
+ retries++;
+ }
+ }
+
+ if(retries >= CONNECT_RETRIES)
+ {
+ ConnectionManager::NetworkMode mode = connectionManager_->getNetworkMode();
+
+ if(mode != ConnectionManager::NETWORK_3G &&
+ mode != ConnectionManager::NETWORK_3_5G)
+ {
+ showError(tr("No 3G or WLAN network available."));
+ }
+ else
+ {
+ showError(tr("Unable to connect to network."));
+ }
+
+ return false;
+ }
+
+ return true;
+}
+
+void CallListener::showError(QString const& msg)
+{
+ qDebug() << "Error: " << msg;
+ box_->setTimeout(ERROR_BANNER_TIMEOUT);
+ showResult(msg);
+}
void end();
static const int REQUEST_TIMEOUT = 10000;
static const int BANNER_DELAY = 350;
- static const int NUMBER_OF_RETRIES = 3;
+ static const int NUMBER_OF_RETRIES = 2;
+ static const int CONNECT_RETRIES = 2;
+ static const int ERROR_BANNER_TIMEOUT = 5000;
private slots:
void requestFinished(QVector <Eniro::Result> const& results, Eniro::SearchDetails const& details, bool error);
void showDelayedResult(QString const& text, int delay);
void searchInit();
void searchClose();
+ bool handleConnection();
+ void showError(QString const& msg);
QString createResult(QString const& name, QString const& street, QString const& city);
QString timedMessage_;
Eniro* eniro_;
int retries_;
QString currentSearch_;
Eniro::Site site_;
+ QString connectionName_;
+ bool autoconnect_;
};
#endif // CALLLISTENER_H
#include <QtCore/QTranslator>
#include <QtCore/QLocale>
#include <QtCore/QString>
-#include <QtCore/QList>
-#include <QDebug>
#include <QtGui/QApplication>
+#include <QDebug>
#include "calllistener.h"
#include "settings.h"
selector_->setCurrentIndex(index);
}
+bool ButtonSelector::selectByValue(QVariant const& value)
+{
+ for(int i = 0; i < model_->rowCount(); i++)
+ {
+ QStandardItem* item = model_->item(i);
+
+ if(item && item->data(Qt::UserRole) == value)
+ {
+ setCurrentIndex(i);
+ return true;
+ }
+ }
+
+ return false;
+}
+
int ButtonSelector::currentIndex() const
{
return selector_->currentIndex();
class ButtonSelector : public QMaemo5ValueButton
{
+
+Q_OBJECT
+
public:
ButtonSelector(QString const& text, QWidget* parent = 0);
void addItem(QString const& text);
void addItem(QString const& text, QVariant const& value);
void clear();
void setCurrentIndex(int index);
+ bool selectByValue(QVariant const& value);
int currentIndex() const;
QString text() const;
QVariant value() const;
QT += network sql maemo5
TARGET = jenirok
TEMPLATE = app
-SOURCES += main.cpp mainwindow.cpp searchdialog.cpp resultwindow.cpp detailwindow.cpp settingsdialog.cpp aboutdialog.cpp buttonselector.cpp daemon.cpp ../common/eniro.cpp ../common/contactmanager.cpp ../common/db.cpp ../common/settings.cpp ../common/connectionmanager.cpp ../common/cache.cpp
-HEADERS += mainwindow.h searchdialog.h resultwindow.h detailwindow.h settingsdialog.h aboutdialog.h buttonselector.h daemon.h ../common/eniro.h ../common/contactmanager.h ../common/db.h ../common/settings.h ../common/connectionmanager.h ../common/cache.h
+SOURCES += main.cpp mainwindow.cpp searchdialog.cpp resultwindow.cpp detailwindow.cpp settingsdialog.cpp aboutdialog.cpp buttonselector.cpp connectionselector.cpp daemon.cpp ../common/eniro.cpp ../common/contactmanager.cpp ../common/db.cpp ../common/settings.cpp ../common/connectionmanager.cpp ../common/cache.cpp
+HEADERS += mainwindow.h searchdialog.h resultwindow.h detailwindow.h settingsdialog.h aboutdialog.h buttonselector.h connectionselector.h daemon.h ../common/eniro.h ../common/contactmanager.h ../common/db.h ../common/settings.h ../common/connectionmanager.h ../common/cache.h
TRANSLATIONS = ../common/translations/fi_FI.ts
RESOURCES = icons.grc ../common/translations.grc
INCLUDEPATH += ../common
#include <QtGui/QHBoxLayout>
#include <QtGui/QIntValidator>
#include <QtGui/QDialogButtonBox>
+#include <QtGui/QTabWidget>
#include <QMaemo5ValueButton>
#include <QMaemo5InformationBox>
#include <QDebug>
DB::connect();
- QVBoxLayout* left = new QVBoxLayout;
+ QVBoxLayout* general = new QVBoxLayout;
+ QVBoxLayout* daemon = new QVBoxLayout;
QHBoxLayout* mainLayout = new QHBoxLayout;
QHBoxLayout* username = new QHBoxLayout;
QHBoxLayout* password = new QHBoxLayout;
QLabel* passwordLabel = new QLabel(tr("Eniro password"));
passwordInput_ = new QLineEdit(Settings::instance()->get("eniro_password"));
- passwordInput_->setEchoMode(QLineEdit::Password);
+ passwordInput_->setEchoMode(QLineEdit::PasswordEchoOnEdit);
QLabel* cacheLabel = new QLabel(tr("Cache size (numbers)"));
cacheInput_ = new QLineEdit(Settings::instance()->get("cache_size"));
autostartSelector_->addItem(tr("Disabled"), "0");
autostartSelector_->setCurrentIndex(autostart == "1" ? 0 : 1);
+ autoconnectCheck_ = new QCheckBox(tr("Allow daemon to connect automatically"));
+ QString autoconnect = Settings::instance()->get("autoconnect");
+ autoconnectCheck_->setChecked(autoconnect == "1");
+
+ connectionSelector_ = new ConnectionSelector(tr("Connection to use"), this);
+ QString selectedConnection = Settings::instance()->get("connection");
+
+ if(selectedConnection != "0")
+ {
+ connectionSelector_->addItem(Settings::instance()->get("connection_name"), selectedConnection);
+ connectionSelector_->selectByValue(selectedConnection);
+ }
+
QPushButton* submitButton = new QPushButton(tr("Save"), this);
connect(submitButton, SIGNAL(pressed()), this, SLOT(saveSettings()));
cache->addWidget(cacheLabel);
cache->addWidget(cacheInput_);
cache->addWidget(cacheResetButton);
- left->addLayout(username);
- left->addLayout(password);
- left->addLayout(cache);
- left->addWidget(siteSelector_);
- left->addWidget(autostartSelector_);
+ general->addLayout(username);
+ general->addLayout(password);
+ general->addLayout(cache);
+ general->addWidget(siteSelector_);
+
+ daemon->addWidget(autostartSelector_);
+ daemon->addWidget(autoconnectCheck_);
+ daemon->addWidget(connectionSelector_);
QDialogButtonBox* buttons = new QDialogButtonBox;
buttons->setCenterButtons(false);
buttons->addButton(submitButton, QDialogButtonBox::AcceptRole);
- mainLayout->addLayout(left);
+ QTabWidget* tabs = new QTabWidget;
+
+ QWidget* generalTab = new QWidget;
+ generalTab->setLayout(general);
+
+ QWidget* daemonTab = new QWidget;
+ daemonTab->setLayout(daemon);
+
+ tabs->addTab(generalTab, tr("General"));
+ tabs->addTab(daemonTab, tr("Daemon"));
+
+ mainLayout->addWidget(tabs);
mainLayout->addWidget(buttons);
setLayout(mainLayout);
void SettingsDialog::saveSettings()
{
+ hide();
+
DB::connect();
Settings::instance()->set("eniro_username", usernameInput_->text());
Settings::instance()->set("site", site);
QString autostart = autostartSelector_->value().toString();
Settings::instance()->set("autostart", autostart);
+ bool autoconnect = autoconnectCheck_->isChecked();
+ Settings::instance()->set("autoconnect", autoconnect ? "1" : "0");
+ QString connection = connectionSelector_->value().toString();
+ Settings::instance()->set("connection", connection);
+ Settings::instance()->set("connection_name", connectionSelector_->text());
DB::disconnect();
- hide();
-
- if(site != currentSite_ && Daemon::isRunning())
+ if((site != currentSite_ ||
+ autoconnect != currentAutoconnect_ ||
+ connection != currentConnection_) && Daemon::isRunning())
{
QMaemo5InformationBox::information(this, tr("Restarting daemon..."));
Daemon::restart();
if(visible)
{
currentSite_ = siteSelector_->value().toString();
+ currentConnection_ = connectionSelector_->value().toString();
+ currentAutoconnect_ = autoconnectCheck_->isChecked();
}
}
#include <QtGui/QDialog>
#include <QtGui/QWidget>
#include <QtGui/QLineEdit>
+#include <QtGui/QCheckBox>
#include <QMaemo5ListPickSelector>
#include "eniro.h"
#include "buttonselector.h"
+#include "connectionselector.h"
class SettingsDialog : public QDialog
{
QLineEdit* cacheInput_;
ButtonSelector* siteSelector_;
ButtonSelector* autostartSelector_;
+ ConnectionSelector* connectionSelector_;
+ QCheckBox* autoconnectCheck_;
QString currentSite_;
- QString currentAutostart_;
+ QString currentConnection_;
+ bool currentAutoconnect_;
};
#endif