* New upstream release.
[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         QString helpText = labHelp->text();
10         helpText.append(tr("<ul>"));
11         helpText.append(tr("<li>${d}: day of month (01-31)</li>"));
12         helpText.append(tr("<li>${m}: month (01-12)</li>"));
13         helpText.append(tr("<li>${y}: year (last two digits)</li>"));
14         helpText.append(tr("<li>${Y}: year (4 digits)</li>"));
15         helpText.append(tr("<li>${dow_DE}: day of week in German (Montag, ...)</li>"));
16         helpText.append(tr("</ul>"));
17         labHelp->setText(helpText);
18 }
19
20
21 bool OptionsDialog::exec(const QString& configFile) {
22         if (configFile.isEmpty()) {
23                 QMessageBox::warning(this, tr("No user config file location"), tr("The location of the user config file could not be determined."));
24                 return false;
25         }
26         QFile configFileUser(configFile);
27         if (!configFileUser.exists()) {
28                 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);
29                 if (answer != QMessageBox::Yes) return false;
30                 teIni->clear();
31         } else {
32                 if (!configFileUser.open(QIODevice::ReadOnly | QIODevice::Text)) {
33                         QMessageBox::warning(this, tr("File not readable"), tr("The user config file %1 is not readable.").arg(configFile));
34                         return false;
35                 }
36                 QTextStream in(&configFileUser);
37                 while (!in.atEnd()) teIni->append(in.readLine());
38                 teIni->moveCursor(QTextCursor::Start);
39         }
40         configFileUser.close();
41         if (QDialog::exec() == QDialog::Accepted) {
42                 if (!teIni->document()->isModified()) return false;
43                 // Save
44                 if (!configFileUser.open(QIODevice::WriteOnly | QIODevice::Text)) {
45                         QMessageBox::warning(this, tr("File not writeable"), tr("The config file %1 is not writeable.").arg(configFile));
46                         return false;
47                 }
48                 QTextStream out(&configFileUser);
49                 out << teIni->toPlainText();
50                 return true;
51         }
52         return false;
53 }
54