From 528533897595f264f278cd053ad8c83cbda44c00 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Sun, 3 Dec 2017 22:22:07 +0100 Subject: [PATCH] Moved settings into own class. --- dialogs/kontierungdialog.cpp | 19 +++++++-------- dialogs/kontierungdialog.h | 5 ++-- main.cpp | 37 ++++++++++------------------ mainwindow.cpp | 47 ++++++++++++++---------------------- mainwindow.h | 7 +++--- zeiterfassung.pro | 6 +++-- 6 files changed, 50 insertions(+), 71 deletions(-) diff --git a/dialogs/kontierungdialog.cpp b/dialogs/kontierungdialog.cpp index 338c8e9..7179e5b 100644 --- a/dialogs/kontierungdialog.cpp +++ b/dialogs/kontierungdialog.cpp @@ -2,11 +2,12 @@ #include "ui_kontierungdialog.h" #include -#include #include #include -KontierungDialog::KontierungDialog(const QMap &projekte, const QSettings &settings, +#include "zeiterfassungsettings.h" + +KontierungDialog::KontierungDialog(const QMap &projekte, const ZeiterfassungSettings &settings, QWidget *parent) : QDialog(parent), ui(new Ui::KontierungDialog) @@ -14,9 +15,7 @@ KontierungDialog::KontierungDialog(const QMap &projekte, const ui->setupUi(this); { - auto preferedProjekte = settings.value("projekte", QStringList()).toStringList(); - - for(const auto &preferedProjekt : preferedProjekte) + for(const auto &preferedProjekt : settings.projekte()) { if(!projekte.contains(preferedProjekt)) { @@ -27,25 +26,25 @@ KontierungDialog::KontierungDialog(const QMap &projekte, const ui->comboBoxProjekt->addItem(projekte.value(preferedProjekt) % " (" % preferedProjekt % ')', preferedProjekt); } - if(preferedProjekte.count()) + if(settings.projekte().count()) ui->comboBoxProjekt->insertSeparator(ui->comboBoxProjekt->count()); for(auto iter = projekte.constBegin(); iter != projekte.constEnd(); iter++) { - if(!preferedProjekte.contains(iter.key())) + if(!settings.projekte().contains(iter.key())) ui->comboBoxProjekt->addItem(iter.value() % " (" % iter.key() % ')', iter.key()); } } - for(const auto &subprojekt : settings.value("subprojekte", QStringList()).toStringList()) + for(const auto &subprojekt : settings.subprojekte()) ui->comboBoxSubprojekt->addItem(subprojekt); ui->comboBoxSubprojekt->clearEditText(); - for(const auto &workpackage : settings.value("workpackages", QStringList()).toStringList()) + for(const auto &workpackage : settings.workpackages()) ui->comboBoxWorkpackage->addItem(workpackage); ui->comboBoxWorkpackage->clearEditText(); - for(const auto &text : settings.value("texte", QStringList()).toStringList()) + for(const auto &text : settings.texte()) ui->comboBoxText->addItem(text); ui->comboBoxText->clearEditText(); } diff --git a/dialogs/kontierungdialog.h b/dialogs/kontierungdialog.h index 4899278..1afd366 100644 --- a/dialogs/kontierungdialog.h +++ b/dialogs/kontierungdialog.h @@ -5,7 +5,8 @@ #include template class QMap; -class QSettings; + +class ZeiterfassungSettings; namespace Ui { class KontierungDialog; } @@ -14,7 +15,7 @@ class KontierungDialog : public QDialog Q_OBJECT public: - explicit KontierungDialog(const QMap &projekte, const QSettings &settings, + explicit KontierungDialog(const QMap &projekte, const ZeiterfassungSettings &settings, QWidget *parent = 0); ~KontierungDialog(); diff --git a/main.cpp b/main.cpp index 55b37ad..53af6f6 100755 --- a/main.cpp +++ b/main.cpp @@ -1,10 +1,10 @@ #include #include #include -#include #include #include +#include "zeiterfassungsettings.h" #include "zeiterfassung.h" #include "eventloopwithstatus.h" #include "dialogs/authenticationdialog.h" @@ -36,22 +36,11 @@ int main(int argc, char *argv[]) splashScreen.showMessage(QObject::tr("Loading settings...")); splashScreen.show(); - QSettings settings; - - if(settings.value("url").isNull()) - { - bool ok; - auto url = QInputDialog::getText(&splashScreen, QObject::tr("Base url"), - QObject::tr("Please enter the base url to the Zeiterfassung:"), - QLineEdit::Normal, QString(), &ok); - if(!ok) - return -1; - settings.setValue("url", url); - } + ZeiterfassungSettings settings(&app); splashScreen.showMessage(QObject::tr("Loading login page...")); - Zeiterfassung erfassung(settings.value("url").toString()); + Zeiterfassung erfassung(settings.url(), &app); { EventLoopWithStatus eventLoop; @@ -69,10 +58,10 @@ int main(int argc, char *argv[]) auto url = QInputDialog::getText(&splashScreen, QObject::tr("Base url"), QObject::tr("Please enter the base url to the Zeiterfassung:"), - QLineEdit::Normal, settings.value("url").toString(), &ok); + QLineEdit::Normal, settings.url(), &ok); if(!ok) return -1; - settings.setValue("url", url); + settings.setUrl(url); erfassung.setUrl(url); goto again1; } @@ -80,13 +69,13 @@ int main(int argc, char *argv[]) splashScreen.showMessage(QObject::tr("Authenticating...")); - if(settings.value("username").isNull() || settings.value("password").isNull()) + if(settings.username().isNull() || settings.password().isNull()) { AuthenticationDialog dialog(&splashScreen); if(dialog.exec() != QDialog::Accepted) return -1; - settings.setValue("username", dialog.username()); - settings.setValue("password", dialog.password()); + settings.setUsername(dialog.username()); + settings.setPassword(dialog.password()); } { @@ -94,7 +83,7 @@ int main(int argc, char *argv[]) QObject::connect(&erfassung, &Zeiterfassung::loginFinished, &eventLoop, &EventLoopWithStatus::quitWithStatus); again2: - erfassung.doLogin(settings.value("username").toString(), settings.value("password").toString()); + erfassung.doLogin(settings.username(), settings.password()); eventLoop.exec(); if(!eventLoop.success()) @@ -103,12 +92,12 @@ int main(int argc, char *argv[]) QObject::tr("The Zeiterfassung authentication was not successful:\n\n%0").arg(eventLoop.message())); AuthenticationDialog dialog(&splashScreen); - dialog.setUsername(settings.value("username").toString()); - dialog.setPassword(settings.value("password").toString()); + dialog.setUsername(settings.username()); + dialog.setPassword(settings.password()); if(dialog.exec() != QDialog::Accepted) return -1; - settings.setValue("username", dialog.username()); - settings.setValue("password", dialog.password()); + settings.setUsername(dialog.username()); + settings.setPassword(dialog.password()); goto again2; } diff --git a/mainwindow.cpp b/mainwindow.cpp index 771e5c5..1cd446a 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include @@ -15,6 +14,7 @@ #include #include +#include "zeiterfassungsettings.h" #include "eventloopwithstatus.h" #include "dialogs/aboutmedialog.h" #include "dialogs/buchungdialog.h" @@ -24,7 +24,7 @@ #include "models/buchungenmodel.h" #include "models/kontierungenmodel.h" -MainWindow::MainWindow(QSettings &settings, Zeiterfassung &erfassung, const Zeiterfassung::UserInfo &userInfo, QWidget *parent) : +MainWindow::MainWindow(ZeiterfassungSettings &settings, Zeiterfassung &erfassung, const Zeiterfassung::UserInfo &userInfo, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), m_settings(settings), @@ -522,10 +522,10 @@ void MainWindow::contextMenuKontierung(const QPoint &pos) ui->pushButtonEnd->setEnabled(false); ui->treeViewKontierungen->setEnabled(false); - addPreferedEntry("projekte", dialog.getProjekt()); - addPreferedEntry("subprojekte", dialog.getSubprojekt()); - addPreferedEntry("workpackages", dialog.getWorkpackage()); - addPreferedEntry("texte", dialog.getText()); + m_settings.prependProjekt(dialog.getProjekt()); + m_settings.prependSubprojekt(dialog.getSubprojekt()); + m_settings.prependWorkpackage(dialog.getWorkpackage()); + m_settings.prependText(dialog.getText()); clearStrips(); @@ -639,10 +639,10 @@ void MainWindow::contextMenuKontierung(const QPoint &pos) ui->pushButtonEnd->setEnabled(false); ui->treeViewKontierungen->setEnabled(false); - addPreferedEntry("projekte", dialog.getProjekt()); - addPreferedEntry("subprojekte", dialog.getSubprojekt()); - addPreferedEntry("workpackages", dialog.getWorkpackage()); - addPreferedEntry("texte", dialog.getText()); + m_settings.prependProjekt(dialog.getProjekt()); + m_settings.prependSubprojekt(dialog.getSubprojekt()); + m_settings.prependWorkpackage(dialog.getWorkpackage()); + m_settings.prependText(dialog.getText()); clearStrips(); @@ -745,10 +745,10 @@ void MainWindow::pushButtonStartPressed() return; } - addPreferedEntry("projekte", ui->comboBoxProjekt->currentData().toString()); - addPreferedEntry("subprojekte", ui->comboBoxSubprojekt->currentText()); - addPreferedEntry("workpackages", ui->comboBoxWorkpackage->currentText()); - addPreferedEntry("texte", ui->comboBoxText->currentText()); + m_settings.prependProjekt(ui->comboBoxProjekt->currentData().toString()); + m_settings.prependSubprojekt(ui->comboBoxSubprojekt->currentText()); + m_settings.prependWorkpackage(ui->comboBoxWorkpackage->currentText()); + m_settings.prependText(ui->comboBoxText->currentText()); updateComboboxes(); @@ -802,17 +802,6 @@ void MainWindow::pushButtonEndPressed() refresh(); } -void MainWindow::addPreferedEntry(const QString &name, const QString &value) -{ - if(value.trimmed().isEmpty()) - return; - - QStringList entries = m_settings.value(name, QStringList()).toStringList(); - entries.removeAll(value); - entries.prepend(value); - m_settings.setValue(name, entries); -} - void MainWindow::validateEntries() { ui->timeEditTime->setMinimumTime(QTime(0, 0)); @@ -1082,7 +1071,7 @@ void MainWindow::updateComboboxes() ui->comboBoxProjekt->clear(); { - auto preferedProjekte = m_settings.value("projekte", QStringList()).toStringList(); + auto preferedProjekte = m_settings.projekte(); for(const auto &preferedProjekt : preferedProjekte) { @@ -1108,7 +1097,7 @@ void MainWindow::updateComboboxes() ui->comboBoxSubprojekt->clear(); { - auto subprojekte = m_settings.value("subprojekte", QStringList()).toStringList(); + auto subprojekte = m_settings.subprojekte(); for(const auto &subprojekt : subprojekte) ui->comboBoxSubprojekt->addItem(subprojekt); if(subprojekte.count()) @@ -1118,7 +1107,7 @@ void MainWindow::updateComboboxes() ui->comboBoxWorkpackage->clear(); { - auto workpackages = m_settings.value("workpackages", QStringList()).toStringList(); + auto workpackages = m_settings.workpackages(); for(const auto &workpackage : workpackages) ui->comboBoxWorkpackage->addItem(workpackage); if(workpackages.count()) @@ -1128,7 +1117,7 @@ void MainWindow::updateComboboxes() ui->comboBoxText->clear(); { - auto texte = m_settings.value("texte", QStringList()).toStringList(); + auto texte = m_settings.texte(); for(const auto &text : texte) ui->comboBoxText->addItem(text); if(texte.count()) diff --git a/mainwindow.h b/mainwindow.h index 57f6ce0..f2dcb07 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -6,10 +6,10 @@ #include "zeiterfassung.h" -class QSettings; class QLabel; namespace Ui { class MainWindow; } +class ZeiterfassungSettings; class BuchungenModel; class KontierungenModel; @@ -18,7 +18,7 @@ class MainWindow : public QMainWindow Q_OBJECT public: - explicit MainWindow(QSettings &settings, Zeiterfassung &erfassung, const Zeiterfassung::UserInfo &userInfo, QWidget *parent = 0); + explicit MainWindow(ZeiterfassungSettings &settings, Zeiterfassung &erfassung, const Zeiterfassung::UserInfo &userInfo, QWidget *parent = 0); ~MainWindow(); static int timeToSeconds(const QTime &time); @@ -40,7 +40,6 @@ private Q_SLOTS: void pushButtonEndPressed(); private: - void addPreferedEntry(const QString &name, const QString &value); void validateEntries(); void updateComboboxes(); void updateAuswertung(); @@ -49,7 +48,7 @@ private: QString buildProjektString(const QString &projekt); Ui::MainWindow *ui; - QSettings &m_settings; + ZeiterfassungSettings &m_settings; Zeiterfassung &m_erfassung; const Zeiterfassung::UserInfo &m_userInfo; QMap m_projekte; diff --git a/zeiterfassung.pro b/zeiterfassung.pro index a6342a9..181acd7 100755 --- a/zeiterfassung.pro +++ b/zeiterfassung.pro @@ -27,7 +27,8 @@ SOURCES += main.cpp \ models/kontierungenmodel.cpp \ eventloopwithstatus.cpp \ strips/buchungstrip.cpp \ - strips/kontierungstrip.cpp + strips/kontierungstrip.cpp \ + zeiterfassungsettings.cpp HEADERS += \ zeiterfassung.h \ @@ -40,7 +41,8 @@ HEADERS += \ models/kontierungenmodel.h \ eventloopwithstatus.h \ strips/buchungstrip.h \ - strips/kontierungstrip.h + strips/kontierungstrip.h \ + zeiterfassungsettings.h RESOURCES += \ resources.qrc