4e15e00c5b01a119a2b0d3895c300ff827eed209
[presencevnc] / src / preferences.cpp
1 /*
2     Presence VNC
3     Copyright (C) 2010 Christian Pulvermacher
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License along
16     with this program; if not, write to the Free Software Foundation, Inc.,
17     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 #include <QtGui>
20 #include <QMaemo5ValueButton>
21 #include <QMaemo5ListPickSelector>
22
23 #include "preferences.h"
24
25 #include <iostream>
26
27 void migrateConfiguration()
28 {
29         QSettings settings;
30         int config_ver = settings.value("config_version", 0).toInt();
31         if(config_ver == 2) //config file up-to-date
32                 return;
33
34         std::cout << "Migrating from configuration ver. " << config_ver << "\n";
35
36         if(config_ver == 0) {
37                 int left_zoom = settings.value("left_zoom", 0).toInt();
38                 int right_zoom = settings.value("left_zoom", 0).toInt();
39                 if(left_zoom >= 2)
40                         settings.setValue("left_zoom", left_zoom+1);
41                 if(right_zoom >= 2)
42                         settings.setValue("left_zoom", right_zoom+1);
43                 config_ver = 1;
44         }
45         if(config_ver == 1) {
46                 QString last_hostname = settings.value("last_hostname", "").toString();
47                 settings.remove("last_hostname");
48                 if(!last_hostname.isEmpty())
49                         settings.setValue("host0", last_hostname);
50                 
51                 config_ver = 2;
52         }
53         settings.setValue("config_version", config_ver);
54         settings.sync();
55 }
56
57
58 Preferences::Preferences(QWidget *parent):
59         QDialog(parent)
60 {
61         setWindowTitle("Preferences");
62
63         QHBoxLayout *layout1 = new QHBoxLayout();
64         QVBoxLayout *layout2 = new QVBoxLayout();
65
66         QMaemo5ValueButton *rotation = new QMaemo5ValueButton(tr("Screen Rotation"), this);
67         rotation_selector = new QMaemo5ListPickSelector(this);
68         QStandardItemModel *model = new QStandardItemModel(0, 1, this);
69         model->appendRow(new QStandardItem(tr("Automatic")));
70         model->appendRow(new QStandardItem(tr("Landscape")));
71         model->appendRow(new QStandardItem(tr("Portrait")));
72         rotation_selector->setModel(model);
73         rotation_selector->setCurrentIndex(settings.value("screen_rotation", 0).toInt());
74         rotation->setPickSelector(rotation_selector);
75         rotation->setValueLayout(QMaemo5ValueButton::ValueBesideText);
76         layout2->addWidget(rotation);
77
78         QMaemo5ValueButton *leftzoom = new QMaemo5ValueButton(tr("Left Zoom Button"), this);
79         leftzoom_selector = new QMaemo5ListPickSelector(this);
80         QStandardItemModel *key_model = new QStandardItemModel(0, 1, this);
81         key_model->insertRow(0, new QStandardItem(tr("Left Click")));
82         key_model->insertRow(1, new QStandardItem(tr("Right Click")));
83         key_model->insertRow(2, new QStandardItem(tr("Middle Click")));
84         key_model->insertRow(3, new QStandardItem(tr("Wheel Up")));
85         key_model->insertRow(4, new QStandardItem(tr("Wheel Down")));
86         key_model->insertRow(5, new QStandardItem(tr("Page Up")));
87         key_model->insertRow(6, new QStandardItem(tr("Page Down")));
88         leftzoom_selector->setModel(key_model);
89         leftzoom_selector->setCurrentIndex(settings.value("left_zoom", 0).toInt());
90         leftzoom->setPickSelector(leftzoom_selector);
91         leftzoom->setValueLayout(QMaemo5ValueButton::ValueBesideText);
92         layout2->addWidget(leftzoom);
93
94         QMaemo5ValueButton *rightzoom = new QMaemo5ValueButton(tr("Right Zoom Button"), this);
95         rightzoom_selector = new QMaemo5ListPickSelector(this);
96         rightzoom_selector->setModel(key_model);
97         rightzoom_selector->setCurrentIndex(settings.value("right_zoom", 1).toInt());
98         rightzoom->setPickSelector(rightzoom_selector);
99         rightzoom->setValueLayout(QMaemo5ValueButton::ValueBesideText);
100         layout2->addWidget(rightzoom);
101
102         disable_tapping = new QCheckBox(tr("Disable Tapping"), this);
103         disable_tapping->setChecked(settings.value("disable_tapping", false).toBool());
104         layout2->addWidget(disable_tapping);
105
106         QPushButton *ok = new QPushButton(tr("Done"));
107         ok->setMaximumWidth(100);
108
109         layout1->addLayout(layout2);
110         layout1->addWidget(ok);
111
112         setLayout(layout1);
113
114         connect(ok, SIGNAL(clicked()),
115                 this, SLOT(accept()));
116         connect(this, SIGNAL(accepted()),
117                 this, SLOT(save()));
118 }
119
120 Preferences::~Preferences() { }
121
122 void Preferences::save()
123 {
124         settings.setValue("screen_rotation", rotation_selector->currentIndex());
125         settings.setValue("left_zoom", leftzoom_selector->currentIndex());
126         settings.setValue("right_zoom", rightzoom_selector->currentIndex());
127         settings.setValue("disable_tapping", disable_tapping->isChecked());
128
129         settings.sync();
130 }