[svn-inject] Installing original source of teleschorsch
[debian/teleschorsch.git] / options.cpp
1 #include <QMessageBox>
2 #include <QFile>
3 #include <QTextStream>
4 #include "options.h"
5
6 OptionsDialog::OptionsDialog(QWidget *parent): QDialog(parent) {
7         setupUi(this);
8 }
9
10
11 bool OptionsDialog::exec(const QString& configFile) {
12         if (configFile.isEmpty()) {
13                 QMessageBox::warning(this, tr("No user config file location"), tr("The location of the user config file could not be determined."));
14                 return false;
15         }
16         QFile configFileUser(configFile);
17         if (!configFileUser.exists()) {
18                 QMessageBox::StandardButton answer = QMessageBox::question(this, tr("Create user config file?"), tr("The user config file %1 does not exist. Do you want to create it?").arg(configFile), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Yes);
19                 if (answer != QMessageBox::Yes) return false;
20                 teIni->clear();
21         } else {
22                 if (!configFileUser.open(QIODevice::ReadOnly | QIODevice::Text)) {
23                         QMessageBox::warning(this, tr("File not readable"), tr("The user config file %1 is not readable.").arg(configFile));
24                         return false;
25                 }
26                 QTextStream in(&configFileUser);
27                 while (!in.atEnd()) teIni->append(in.readLine());
28         }
29         configFileUser.close();
30         if (QDialog::exec() == QDialog::Accepted) {
31                 // Save
32                 if (!configFileUser.open(QIODevice::WriteOnly | QIODevice::Text)) {
33                         QMessageBox::warning(this, tr("File not writeable"), tr("The config file %1 is not writeable.").arg(configFile));
34                         return false;
35                 }
36                 QTextStream out(&configFileUser);
37                 out << teIni->toPlainText();
38                 return true;
39         }
40         return false;
41 }
42