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() {
163 QFileDialog::getExistingDirectory(
165 tr("Directory for saved videos"),
170 savedirEdit
->setText(path
);
174 PreferencesDialog::onBrowseStreamCommand() {
175 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose command"));
176 if (!fname
.isEmpty())
177 streamEdit
->setText(fname
);
181 PreferencesDialog::onBrowseCommand() {
182 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose command"));
183 if (!fname
.isEmpty())
184 commandEdit
->setText(fname
);
188 PreferencesDialog::onBrowseCclive() {
189 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose cclive"));
190 if (!fname
.isEmpty())
191 ccliveEdit
->setText(fname
);
195 dump_detection_results(
198 const QString
& version
,
199 const QString
& libVersion
,
200 const QString
& libName
,
201 const bool isCcliveFlag
,
202 const bool showPathFlag
=false)
204 QString msg
= QString(
205 QObject::tr("Detected: %1 version %2 with %3 %4")
206 .arg(isCcliveFlag
? "cclive" : "clive")
213 msg
+= QString(QObject::tr("\nPath: %1")).arg(path
);
215 QMessageBox::information(
217 QCoreApplication::applicationName(),
223 PreferencesDialog::onVerifyCclive() {
225 QString path
, version
, libVersion
, libName
;
228 path
= ccliveEdit
->text();
230 Util::verifyCclivePath(
238 dump_detection_results(
247 catch (const NoCcliveException
& x
) {
248 QMessageBox::warning(this, tr("Warning"), x
.what());
253 PreferencesDialog::onAutodetectCclive() {
255 QString path
, version
, libVersion
, libName
;
256 bool isCcliveFlag
= false;
266 ccliveEdit
->setText(path
);
268 dump_detection_results(
278 catch (const NoCcliveException
& x
) {
279 QMessageBox::warning(this, tr("Warning"), x
.what());
284 PreferencesDialog::onLangChanged(int index
) {
287 qmFile
= qmFiles
[index
-1];
289 QMessageBox::information(this, QCoreApplication::applicationName(),
290 tr("You need to restart the application for the language change "
295 PreferencesDialog::onTimeoutStateChanged(int state
) {
296 timeoutSpin
->setEnabled(state
!= 0);
297 socksBox
->setEnabled(state
!= 0);