Fixed some inconsistencies in code indentation
[jenirok] / src / gui / settingsdialog.cpp
1 /*
2  * This file is part of Jenirok.
3  *
4  * Jenirok is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Jenirok is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with Jenirok.  If not, see <http://www.gnu.org/licenses/>.
16  *
17  */
18
19 #include <QtGui/QLabel>
20 #include <QtGui/QPushButton>
21 #include <QtGui/QVBoxLayout>
22 #include <QtGui/QHBoxLayout>
23 #include <QtGui/QIntValidator>
24 #include <QMaemo5ValueButton>
25 #include <QMaemo5InformationBox>
26 #include <QDebug>
27 #include "settingsdialog.h"
28 #include "settings.h"
29 #include "db.h"
30 #include "daemon.h"
31
32 QMap <Eniro::Site, Eniro::SiteDetails> SettingsDialog::sites_ = Eniro::getSites();
33
34 SettingsDialog::SettingsDialog(QWidget* parent): QDialog(parent),
35 usernameInput_(0), passwordInput_(0), cacheInput_(0), siteSelector_(0),
36 autostartSelector_(0)
37 {
38     setWindowTitle(tr("Settings"));
39
40     DB::connect();
41
42     QVBoxLayout* left = new QVBoxLayout;
43     QHBoxLayout* mainLayout = new QHBoxLayout;
44     QHBoxLayout* username = new QHBoxLayout;
45     QHBoxLayout* password = new QHBoxLayout;
46     QHBoxLayout* cache = new QHBoxLayout;
47
48     QLabel* usernameLabel = new QLabel(tr("Eniro username"));
49     usernameInput_ = new QLineEdit(Settings::instance()->get("eniro_username"));
50
51     QLabel* passwordLabel = new QLabel(tr("Eniro password"));
52     passwordInput_ = new QLineEdit(Settings::instance()->get("eniro_password"));
53
54     QLabel* cacheLabel = new QLabel(tr("Cache size (numbers)"));
55     cacheInput_ = new QLineEdit(Settings::instance()->get("cache_size"));
56     cacheInput_->setValidator(new QIntValidator(0, 10000, this));
57
58     siteSelector_ = new ButtonSelector(tr("Eniro site"), this);
59     QString site = Settings::instance()->get("eniro_site");
60     int i = 0;
61     QMap <Eniro::Site, Eniro::SiteDetails>::const_iterator it;
62     for(it = sites_.begin(); it != sites_.end(); it++)
63     {
64         siteSelector_->addItem(it.value().name, it.value().id);
65
66         if(it.value().id == site)
67         {
68             siteSelector_->setCurrentIndex(i);
69         }
70
71         i++;
72     }
73
74     autostartSelector_ = new ButtonSelector(tr("Autostart"), this);
75     QString autostart = Settings::instance()->get("autostart");
76     autostartSelector_->addItem(tr("Enabled"), "1");
77     autostartSelector_->addItem(tr("Disabled"), "0");
78     autostartSelector_->setCurrentIndex(autostart == "1" ? 0 : 1);
79
80     QPushButton* submitButton = new QPushButton(tr("Save"));
81     connect(submitButton, SIGNAL(pressed()), this, SLOT(saveSettings()));
82
83     username->addWidget(usernameLabel);
84     username->addWidget(usernameInput_);
85     password->addWidget(passwordLabel);
86     password->addWidget(passwordInput_);
87     cache->addWidget(cacheLabel);
88     cache->addWidget(cacheInput_);
89     left->addLayout(username);
90     left->addLayout(password);
91     left->addLayout(cache);
92     left->addWidget(siteSelector_);
93     left->addWidget(autostartSelector_);
94
95     mainLayout->addLayout(left);
96     mainLayout->addWidget(submitButton);
97
98     setLayout(mainLayout);
99
100     DB::disconnect();
101 }
102
103 void SettingsDialog::saveSettings()
104 {
105     DB::connect();
106
107     Settings::instance()->set("eniro_username", usernameInput_->text());
108     Settings::instance()->set("eniro_password", passwordInput_->text());
109     Settings::instance()->set("cache_size", cacheInput_->text());
110     QString site = siteSelector_->value().toString();
111     Settings::instance()->set("site", site);
112     QString autostart = autostartSelector_->value().toString();
113     Settings::instance()->set("autostart", autostart);
114
115     DB::disconnect();
116
117     hide();
118
119     if(site != currentSite_ && Daemon::isRunning())
120     {
121         QMaemo5InformationBox::information(this, tr("Restarting daemon..."));
122         Daemon::restart();
123         currentSite_ = site;
124     }
125
126     if(autostart != currentAutostart_)
127     {
128         bool value = false;
129
130         if(autostart == "1")
131         {
132             value = true;
133         }
134
135         Daemon::setAutostart(value);
136     }
137
138 }
139
140 void SettingsDialog::setVisible(bool visible)
141 {
142     QDialog::setVisible(visible);
143
144     if(visible)
145     {
146         currentSite_ = siteSelector_->value().toString();
147         currentAutostart_ = autostartSelector_->value().toString();
148     }
149
150 }