Modified google plugin dialog
[mdictionary] / src / plugins / google / GoogleDialog.cpp
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary 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 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary 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
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21
22 /*! \file GoogleSettingsDialog.cpp
23     \author Jakub Jaszczynski <j.j.jaszczynski@gmail.com>
24 */
25
26 #include "GoogleDialog.h"
27 #include <QDebug>
28
29 GoogleDialog::GoogleDialog(GooglePlugin *plugin,
30                            GoogleDialogType type,
31                            QWidget *parent) : QDialog(parent) {
32     this->plugin = plugin;
33     this->type = type;
34     _settings = 0;
35
36     if(plugin) {
37         _langTo=GooglePlugin::languages.key(
38                 plugin->settings()->value("lang_to"));
39
40         _langFrom=GooglePlugin::languages.key(
41                 plugin->settings()->value("lang_from"));
42     }
43     else {
44         _langTo=GooglePlugin::languages.key("pl");
45         _langFrom=GooglePlugin::languages.key("en");
46     }
47
48
49
50     initializeUI();
51
52     connect(confirmButton, SIGNAL(clicked()),
53             this, SLOT(accept()));
54
55     connect(langFromComboBox, SIGNAL(currentIndexChanged(int)),
56             this, SLOT(langFromChanged(int)));
57
58     connect(langToComboBox, SIGNAL(currentIndexChanged(int)),
59             this, SLOT(langToChanged(int)));
60
61     connect(changeLangButton, SIGNAL(clicked()),
62             this, SLOT(changeLangButtonClicked()));
63 }
64
65
66 void GoogleDialog::initializeUI() {
67     setWindowTitle(tr("Google Plugin Settings"));
68
69     langFromLabel = new QLabel(tr("From:"));
70     langToLabel = new QLabel(tr("To: "));
71
72     verticalLayout = new QVBoxLayout;
73     setLayout(verticalLayout);
74
75
76     langLayout = new QVBoxLayout;
77     langFromLayout = new QHBoxLayout;
78     langToLayout = new QHBoxLayout;
79     changeLangLayout = new QHBoxLayout;
80
81
82     #ifdef Q_WS_MAEMO_5
83         setMinimumHeight(370);
84         changeLangButton=new QPushButton(
85                                  QIcon::fromTheme("general_refresh"), "");
86     #else
87         changeLangButton=new QPushButton(
88                 QIcon::fromTheme("object-flip-vertical"),"");
89     #endif
90
91     infoLabel = new QLabel;
92     infoLabel->setText(tr("Plugin: GoogleTranslator \n")+
93                    tr("From: ") + _langFrom + "\n" +
94                    tr("To: ") + _langTo);
95     verticalLayout->addWidget(infoLabel);
96
97
98     #ifdef Q_WS_MAEMO_5
99         connectInfoLabel = new QLabel(tr("Google plugin makes use of Internet "                                         "connection, so it may cost You."));
100         connectInfoLabel->setWordWrap(true);
101
102         verticalLayout->addWidget(connectInfoLabel);
103     #endif
104
105     langFromComboBox = new QComboBox;
106     langToComboBox = new QComboBox;
107
108     int i=0;
109     int actualLangTo=0;
110     int actualLangFrom=0;
111
112     foreach(QString langs, GooglePlugin::languages.keys()){
113         if(langs==_langTo)
114             actualLangTo=i;
115         if(langs==_langFrom)
116             actualLangFrom=i;
117         langToComboBox->addItem(langs);
118         langFromComboBox->addItem(langs);
119         i++;
120     }
121
122     langToComboBox->setCurrentIndex(actualLangTo);
123     langFromComboBox->setCurrentIndex(actualLangFrom);
124
125     langFromLayout->addWidget(langFromLabel);
126     langFromLayout->addWidget(langFromComboBox);
127
128     langToLayout->addWidget(langToLabel);
129     langToLayout->addWidget(langToComboBox);
130
131     langLayout->addLayout(langFromLayout);
132     langLayout->addLayout(langToLayout);
133
134     changeLangLayout->addLayout(langLayout);
135     changeLangLayout->addWidget(changeLangButton);
136
137     verticalLayout->addLayout(changeLangLayout);
138
139     confirmButton = new QPushButton;
140     if(type == New) {
141         confirmButton->setText(tr("Add"));
142     }
143     else {
144         confirmButton->setText(tr("Save settings"));
145     }
146
147     verticalLayout->addWidget(confirmButton);
148
149     setModal(true);
150 }
151
152 void GoogleDialog::langFromChanged(int index) {
153     _langFrom=langFromComboBox->itemText(index);
154 }
155
156 void GoogleDialog::langToChanged(int index) {
157      _langTo=langToComboBox->itemText(index);
158 }
159
160 void GoogleDialog::changeLangButtonClicked() {
161     int tempIndexTo=langToComboBox->currentIndex();
162     QString tempLangTo=_langTo;
163
164     langToComboBox->setCurrentIndex(langFromComboBox->currentIndex());
165     langFromComboBox->setCurrentIndex(tempIndexTo);
166
167     _langTo=_langFrom;
168     _langFrom=tempLangTo;
169 }
170
171 void GoogleDialog::accept() {
172     saveSettings();
173
174     QDialog::accept();
175 }
176
177 void GoogleDialog::saveSettings() {
178     _settings = new Settings;
179     if(plugin) {
180         foreach(QString key, plugin->settings()->keys())
181             _settings->setValue(key, plugin->settings()->value(key));
182     }
183
184     _settings->setValue("lang_to",
185                         GooglePlugin::languages.value(_langTo));
186     _settings->setValue("lang_from",
187                         GooglePlugin::languages.value(_langFrom));
188 }
189
190 Settings* GoogleDialog::getSettings() {
191     return _settings;
192 }