2 * abby Copyright (C) 2009 Toni Gundogdu.
3 * This file is part of abby.
5 * abby 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 * abby 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 this program. If not, see <http://www.gnu.org/licenses/>.
20 #include <QFileDialog>
21 #include <QTranslator>
22 #include <QMessageBox>
27 PreferencesDialog::PreferencesDialog(QWidget
*parent
)
33 langCombo
->addItem("English");
36 qmFiles
= findQmFiles();
37 typedef unsigned int _uint
;
38 const register _uint size
= qmFiles
.size();
39 for (register _uint i
=0; i
<size
; ++i
) {
40 langCombo
->addItem(langName(qmFiles
[i
]));
41 if (qmFile
== qmFiles
[i
])
44 langCombo
->setCurrentIndex(sel
);
46 connect(langCombo
, SIGNAL(currentIndexChanged(int)),
47 this, SLOT(onLangChanged(int)));
50 streamLabel
->setHidden(true);
51 streamEdit
->setHidden(true);
52 streamButton
->setHidden(true);
55 langLabel
->setHidden(true);
56 langCombo
->setHidden(true);
60 PreferencesDialog::onFinished(int) {
65 PreferencesDialog::writeSettings() {
68 s
.beginGroup("PreferencesDialog");
70 s
.setValue("size", size());
72 s
.setValue("savedirEdit", savedirEdit
->text());
73 s
.setValue("streamEdit", streamEdit
->text());
74 s
.setValue("commandEdit", commandEdit
->text());
75 s
.setValue("ccliveEdit", ccliveEdit
->text());
77 s
.setValue("proxyCombo", proxyCombo
->currentIndex());
78 s
.setValue("proxyEdit", proxyEdit
->text());
79 s
.setValue("limitBox", limitBox
->checkState());
80 s
.setValue("limitSpin", limitSpin
->value());
81 s
.setValue("timeoutBox", timeoutBox
->checkState());
82 s
.setValue("timeoutSpin", timeoutSpin
->value());
83 s
.setValue("socksBox", socksBox
->checkState());
85 s
.setValue("qmFile", qmFile
);
91 PreferencesDialog::readSettings() {
94 s
.beginGroup("PreferencesDialog");
96 resize( s
.value("size", QSize(525,205)).toSize() );
98 savedirEdit
->setText( s
.value("savedirEdit").toString() );
99 streamEdit
->setText( s
.value("streamEdit").toString() );
100 commandEdit
->setText( s
.value("commandEdit").toString() );
101 ccliveEdit
->setText( s
.value("ccliveEdit").toString() );
103 proxyCombo
->setCurrentIndex( s
.value("proxyCombo").toInt() );
104 proxyEdit
->setText( s
.value("proxyEdit").toString() );
105 limitBox
->setCheckState(
106 s
.value("limitBox").toBool()
109 limitSpin
->setValue( s
.value("limitSpin").toInt() );
110 timeoutBox
->setCheckState(
111 s
.value("timeoutBox").toBool()
114 timeoutSpin
->setValue( s
.value("timeoutSpin").toInt() );
115 socksBox
->setCheckState(
116 s
.value("socksBox").toBool()
120 qmFile
= s
.value("qmFile").toString();
126 PreferencesDialog::findQmFiles() {
130 dir
.entryList(QStringList("*.qm"), QDir::Files
, QDir::Name
);
132 QMutableStringListIterator
iter(fnames
);
133 while (iter
.hasNext()) {
135 iter
.setValue(dir
.filePath(iter
.value()));
141 PreferencesDialog::langName(const QString
& qmFile
) {
144 return transl
.translate("MainWindow","English");
151 PreferencesDialog::onProxyChanged(int index
) {
152 proxyEdit
->setEnabled(index
== 1);
156 PreferencesDialog::onLimitStateChanged(int state
) {
157 limitSpin
->setEnabled(state
!= 0);
161 PreferencesDialog::onBrowseSaveDir() {
162 QFileDialog
dlg(this);
164 dlg
.setFileMode(QFileDialog::Directory
);
165 dlg
.setViewMode(QFileDialog::Detail
);
166 dlg
.setDirectory(savedirEdit
->text());
169 savedirEdit
->setText(dlg
.selectedFiles()[0]);
173 PreferencesDialog::onBrowseStreamCommand() {
174 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose command"));
175 if (!fname
.isEmpty())
176 streamEdit
->setText(fname
);
180 PreferencesDialog::onBrowseCommand() {
181 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose command"));
182 if (!fname
.isEmpty())
183 commandEdit
->setText(fname
);
187 PreferencesDialog::onBrowseCclive() {
188 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose cclive"));
189 if (!fname
.isEmpty())
190 ccliveEdit
->setText(fname
);
194 PreferencesDialog::onVerifyCclive() {
196 QString ccliveVersion
, curlVersion
, curlMod
;
198 Util::verifyCclivePath(
205 QMessageBox::information(
207 QCoreApplication::applicationName(),
208 QString( tr("Program: %1\nVersion: %2\n%3: %4") )
209 .arg(isCcliveFlag
? "cclive":"clive")
215 catch (const NoCcliveException
& x
) {
216 QMessageBox::warning(this, tr("Warning"), x
.what());
221 PreferencesDialog::onLangChanged(int index
) {
224 qmFile
= qmFiles
[index
-1];
226 QMessageBox::information(this, QCoreApplication::applicationName(),
227 tr("You need to restart the application for the language change "
232 PreferencesDialog::onTimeoutStateChanged(int state
) {
233 timeoutSpin
->setEnabled(state
!= 0);
234 socksBox
->setEnabled(state
!= 0);