[svn-upgrade] Integrating new upstream version, teleschorsch (0.1.8)
[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("<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("</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                 #if QT_VERSION >= 0x040200
29                 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);
30                 if (answer != QMessageBox::Yes) return false;
31                 #else
32                 int 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::Ok, QMessageBox::Cancel);
33                 if (answer != 1) return false;
34                 #endif
35                 teIni->clear();
36         } else {
37                 if (!configFileUser.open(QIODevice::ReadOnly | QIODevice::Text)) {
38                         QMessageBox::warning(this, tr("File not readable"), tr("The user config file %1 is not readable.").arg(configFile));
39                         return false;
40                 }
41                 QTextStream in(&configFileUser);
42                 while (!in.atEnd()) teIni->append(in.readLine());
43                 #if QT_VERSION >= 0x040200
44                 teIni->moveCursor(QTextCursor::Start);
45                 #else
46                 // 
47                 #endif
48         }
49         configFileUser.close();
50         if (QDialog::exec() == QDialog::Accepted) {
51                 if (!teIni->document()->isModified()) return false;
52                 // Save
53                 if (!configFileUser.open(QIODevice::WriteOnly | QIODevice::Text)) {
54                         QMessageBox::warning(this, tr("File not writeable"), tr("The config file %1 is not writeable.").arg(configFile));
55                         return false;
56                 }
57                 QTextStream out(&configFileUser);
58                 out << teIni->toPlainText();
59                 return true;
60         }
61         return false;
62 }
63