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
);
87 s
.setValue("mintrayBox", mintrayBox
->checkState());
93 PreferencesDialog::readSettings() {
96 s
.beginGroup("PreferencesDialog");
98 resize( s
.value("size", QSize(525,205)).toSize() );
100 savedirEdit
->setText( s
.value("savedirEdit").toString() );
101 streamEdit
->setText( s
.value("streamEdit").toString() );
102 commandEdit
->setText( s
.value("commandEdit").toString() );
103 ccliveEdit
->setText( s
.value("ccliveEdit").toString() );
105 proxyCombo
->setCurrentIndex( s
.value("proxyCombo").toInt() );
106 proxyEdit
->setText( s
.value("proxyEdit").toString() );
107 limitBox
->setCheckState(
108 s
.value("limitBox").toBool()
111 limitSpin
->setValue( s
.value("limitSpin").toInt() );
112 timeoutBox
->setCheckState(
113 s
.value("timeoutBox").toBool()
116 timeoutSpin
->setValue( s
.value("timeoutSpin").toInt() );
117 socksBox
->setCheckState(
118 s
.value("socksBox").toBool()
122 qmFile
= s
.value("qmFile").toString();
124 mintrayBox
->setCheckState(
125 s
.value("mintrayBox").toBool()
134 PreferencesDialog::findQmFiles() {
138 dir
.entryList(QStringList("*.qm"), QDir::Files
, QDir::Name
);
140 QMutableStringListIterator
iter(fnames
);
141 while (iter
.hasNext()) {
143 iter
.setValue(dir
.filePath(iter
.value()));
149 PreferencesDialog::langName(const QString
& qmFile
) {
152 return transl
.translate("MainWindow","English");
159 PreferencesDialog::onProxyChanged(int index
) {
160 proxyEdit
->setEnabled(index
== 1);
164 PreferencesDialog::onLimitStateChanged(int state
) {
165 limitSpin
->setEnabled(state
!= 0);
169 PreferencesDialog::onBrowseSaveDir() {
171 QFileDialog::getExistingDirectory(
173 tr("Directory for saved videos"),
178 savedirEdit
->setText(path
);
182 PreferencesDialog::onBrowseStreamCommand() {
183 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose command"));
184 if (!fname
.isEmpty())
185 streamEdit
->setText(fname
);
189 PreferencesDialog::onBrowseCommand() {
190 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose command"));
191 if (!fname
.isEmpty())
192 commandEdit
->setText(fname
);
196 PreferencesDialog::onBrowseCclive() {
197 QString fname
= QFileDialog::getOpenFileName(this,tr("Choose cclive"));
198 if (!fname
.isEmpty())
199 ccliveEdit
->setText(fname
);
203 dump_detection_results(
206 const QString
& version
,
207 const QString
& libVersion
,
208 const QString
& libName
,
209 const bool isCcliveFlag
,
210 const bool showPathFlag
=false)
212 QString msg
= QString(
213 QObject::tr("Detected: %1 version %2 with %3 %4")
214 .arg(isCcliveFlag
? "cclive" : "clive")
221 msg
+= QString(QObject::tr("\nPath: %1")).arg(path
);
223 QMessageBox::information(
225 QCoreApplication::applicationName(),
231 PreferencesDialog::onVerifyCclive() {
233 QString path
, version
, libVersion
, libName
;
236 path
= ccliveEdit
->text();
238 Util::verifyCclivePath(
246 dump_detection_results(
255 catch (const NoCcliveException
& x
) {
256 QMessageBox::warning(this, tr("Warning"), x
.what());
261 PreferencesDialog::onAutodetectCclive() {
263 QString path
, version
, libVersion
, libName
;
264 bool isCcliveFlag
= false;
274 ccliveEdit
->setText(path
);
276 dump_detection_results(
286 catch (const NoCcliveException
& x
) {
287 QMessageBox::warning(this, tr("Warning"), x
.what());
292 PreferencesDialog::onLangChanged(int index
) {
295 qmFile
= qmFiles
[index
-1];
297 QMessageBox::information(this, QCoreApplication::applicationName(),
298 tr("You need to restart the application for the language change "
303 PreferencesDialog::onTimeoutStateChanged(int state
) {
304 timeoutSpin
->setEnabled(state
!= 0);
305 socksBox
->setEnabled(state
!= 0);