1 /*******************************************************************************
3 This file is part of mDictionary.
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.
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.
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/>.
18 Copyright 2010 Comarch S.A.
20 *******************************************************************************/
22 //Created by Mateusz Półrola
24 #include "SettingsWidget.h"
27 SettingsWidget::SettingsWidget(GUIInterface *parent) :
30 guiInterface = parent;
32 setWindowTitle(tr("Settings"));
34 verticalLayout = new QVBoxLayout(this);
35 setLayout(verticalLayout);
37 historySizeSpinBox = new QSpinBox(this);
38 searchResultSizeSpinBox = new QSpinBox(this);
40 spinBoxesFormLayout = new QFormLayout(this);
42 spinBoxesFormLayout->addRow(tr("Search result size"),
43 searchResultSizeSpinBox);
45 spinBoxesFormLayout->addRow(tr("History size"),
48 searchResultSizeSpinBox->setMinimum(0);
49 historySizeSpinBox->setMinimum(1);
52 verticalLayout->addSpacing(20);
54 verticalLayout->addLayout(spinBoxesFormLayout);
57 checkBoxesLabel = new QLabel(tr("Search in:"),this);
59 searchInBookmarksCheckBox = new QCheckBox(tr("Bookmarks"),this);
60 searchInDictionariesCheckBox = new QCheckBox(tr("Dictionaries"),this);
62 verticalLayout->addSpacing(20);
63 verticalLayout->addWidget(checkBoxesLabel);
64 verticalLayout->addWidget(searchInDictionariesCheckBox);
65 verticalLayout->addWidget(searchInBookmarksCheckBox);
68 connect(historySizeSpinBox, SIGNAL(valueChanged(int)), this,
70 connect(searchResultSizeSpinBox, SIGNAL(valueChanged(int)), this,
72 connect(searchInDictionariesCheckBox, SIGNAL(toggled(bool)), this,
74 connect(searchInBookmarksCheckBox, SIGNAL(toggled(bool)), this,
83 footerLayout = new QHBoxLayout(this);
84 closeButton = new QPushButton(tr("Save"));
85 footerLayout->addStretch(0);
86 footerLayout->addWidget(closeButton);
87 verticalLayout->addLayout(footerLayout);
88 connect(closeButton, SIGNAL(clicked()), this, SLOT(save()));
92 void SettingsWidget::showEvent(QShowEvent *e) {
97 settings = guiInterface->settings();
99 historySizeSpinBox->setValue(
100 settings->value("history_size").toInt());
102 searchResultSizeSpinBox->setValue(
103 settings->value("search_limit").toInt());
105 if(settings->value("search_bookmarks") == "true")
106 searchInBookmarksCheckBox->setChecked(true);
108 searchInBookmarksCheckBox->setChecked(false);
110 if(settings->value("search_dictionaries") == "true")
111 searchInDictionariesCheckBox->setChecked(true);
113 searchInDictionariesCheckBox->setChecked(false);
116 QDialog::showEvent(e);
119 void SettingsWidget::hideEvent(QHideEvent *e) {
120 QDialog::hideEvent(e);
123 if(settings && _save) {
125 if(settings && _changed &&
126 QMessageBox::question(this, "Save", "Do you want to save changes?",
127 QMessageBox::Save, QMessageBox::Cancel) == QMessageBox::Save) {
130 Settings* newSettings = new Settings;
131 newSettings->setValue("history_size",
132 QString::number(historySizeSpinBox->value()));
133 newSettings->setValue("search_limit",
135 searchResultSizeSpinBox->value()));
137 if(searchInDictionariesCheckBox->isChecked())
138 newSettings->setValue("search_dictionaries", "true");
140 newSettings->setValue("search_dictionaries", "false");
142 if(searchInBookmarksCheckBox->isChecked())
143 newSettings->setValue("search_bookmarks", "true");
145 newSettings->setValue("search_bookmarks", "false");
147 //setting new settings only if their are different that old ones
149 foreach(key, newSettings->keys()) {
150 if(settings->value(key) != newSettings->value(key)) {
151 guiInterface->setSettings(newSettings);
165 void SettingsWidget::changed() {
170 void SettingsWidget::save() {