detect a disconect error in GooglePlugin
[mdictionary] / trunk / src / plugins / google / src / GoogleSettingsDialog.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 "GoogleSettingsDialog.h"
27 #include <QDebug>
28
29 GoogleSettingsDialog::GoogleSettingsDialog(QWidget *parent,QString langTo,QString langFrom) :
30     QDialog(parent)
31 {
32     QMap<QString, QString> languages;
33     languages=GooglePlugin::initLanguages();
34
35     int actualLangTo=1;
36     int actualLangFrom=1;
37
38     if(langTo=="")
39         langTo="pl";
40     if(langFrom=="")
41         langFrom="en";
42
43     _langTo=languages.key(langTo);
44     _langFrom=languages.key(langFrom);
45
46
47     changeLangButton=new QPushButton(QIcon(":/icons/staron.png"),tr(""));
48     langFromLabel = new QLabel("From:");
49     langToLabel = new QLabel(" To: ");
50
51     setWindowTitle(tr("Google Settings"));
52
53     verticalLayout = new QVBoxLayout(this);
54     langLayout = new QVBoxLayout(this);
55     langFromLayout = new QHBoxLayout(this);
56     langToLayout = new QHBoxLayout(this);
57     changelangLayout = new QHBoxLayout(this);
58
59     setLayout(verticalLayout);
60
61     infoLabel = new QLabel(this);
62     infoLabel->setText(tr("Plugin:GoogleTranslator \n")+
63                    tr("From: ") + languages.key(langFrom) + "\n" +
64                    tr("To: ") + languages.key(langTo));
65     verticalLayout->addWidget(infoLabel);
66
67     langFromComboBox = new QComboBox(this);
68     langToComboBox = new QComboBox(this);
69     int i=0;
70     foreach(QString langs,languages.keys()){
71         if(langs==languages.key(langTo))
72             actualLangTo=i;
73         if(langs==languages.key(langFrom))
74             actualLangFrom=i;
75         langToComboBox->addItem(langs);
76         langFromComboBox->addItem(langs);
77         i++;
78     }
79
80     langFromLayout->addWidget(langFromLabel);
81     langFromLayout->addWidget(langFromComboBox);
82     langToLayout->addWidget(langToLabel);
83     langToLayout->addWidget(langToComboBox);
84     langLayout->addLayout(langFromLayout);
85     langLayout->addLayout(langToLayout);
86     changelangLayout->addLayout(langLayout);
87     changelangLayout->addWidget(changeLangButton);
88     verticalLayout->addLayout(changelangLayout);
89
90     //langToComboBox->setMaximumWidth(120);
91     langToComboBox->setCurrentIndex(actualLangTo);
92     //langFromComboBox->setMaximumWidth(120);
93     langFromComboBox->setCurrentIndex(actualLangFrom);
94
95     //comboBoxLayout->addWidget(langFromComboBox);
96     //comboBoxLayout->addWidget(langToComboBox);
97
98
99     //infoLayout->addWidget(infoLabel);
100     //infoLayout->addLayout(comboBoxLayout);
101
102     //verticalLayout->addLayout(infoLayout);
103
104     saveButton = new QPushButton(tr("Save settings"),this);
105
106 //    verticalLayout->addWidget(langFromComboBox);
107 //    verticalLayout->addWidget(langToComboBox);
108     verticalLayout->addWidget(saveButton);
109
110     setModal(true);
111
112     connect(saveButton, SIGNAL(clicked()),this, SLOT(accept()));
113     connect(langFromComboBox, SIGNAL(activated(int)),this, SLOT(activatedFrom(int)));
114     connect(langToComboBox, SIGNAL(activated(int)),this, SLOT(activatedTo(int)));
115     connect(changeLangButton, SIGNAL(clicked()),this, SLOT(changeLangButtonClicked()));
116 }
117
118 void GoogleSettingsDialog::activatedFrom(int index) {
119     _langFrom=langFromComboBox->itemText(index);
120 }
121
122 void GoogleSettingsDialog::activatedTo(int index) {
123      _langTo=langToComboBox->itemText(index);
124 }
125
126 void GoogleSettingsDialog::changeLangButtonClicked() {
127     int tempIndexTo=langToComboBox->currentIndex();
128     QString tempLangTo=_langTo;
129
130     langToComboBox->setCurrentIndex(langFromComboBox->currentIndex());
131     langFromComboBox->setCurrentIndex(tempIndexTo);
132
133     _langTo=_langFrom;
134     _langFrom=tempLangTo;
135 }
136
137 QString GoogleSettingsDialog::langFrom() {
138     return _langFrom;
139 }
140
141 QString GoogleSettingsDialog::langTo() {
142     return _langTo;
143 }
144
145 Settings* GoogleSettingsDialog::getSettings(QWidget *parent,QString langTo,QString langFrom) {
146     GoogleSettingsDialog settingsDialog(parent,langTo,langFrom);
147     QMap<QString, QString> languages;
148     languages=GooglePlugin::initLanguages();
149     if(settingsDialog.exec()==QDialog::Accepted) {
150         Settings *settings = new Settings();
151         settings->setValue("langTo",languages.value(settingsDialog.langTo()));
152         settings->setValue("langFrom",languages.value(settingsDialog.langFrom()));
153         return settings;
154     }
155     return 0;
156 }
157
158 void GoogleSettingsDialog::changeSettings(GooglePlugin* plugin, QWidget *parent) {
159     Settings *settings = new Settings();
160     settings=getSettings(parent,plugin->settings()->value("langTo"),plugin->settings()->value("langFrom"));
161     if(settings)
162         plugin->setSettings(settings);
163 }