Moved settings into own class.

This commit is contained in:
0xFEEDC0DE64
2017-12-03 22:22:07 +01:00
parent 317156c85a
commit b8b14a385b
6 changed files with 50 additions and 71 deletions

View File

@@ -2,11 +2,12 @@
#include "ui_kontierungdialog.h" #include "ui_kontierungdialog.h"
#include <QMap> #include <QMap>
#include <QSettings>
#include <QStringBuilder> #include <QStringBuilder>
#include <QDebug> #include <QDebug>
KontierungDialog::KontierungDialog(const QMap<QString, QString> &projekte, const QSettings &settings, #include "zeiterfassungsettings.h"
KontierungDialog::KontierungDialog(const QMap<QString, QString> &projekte, const ZeiterfassungSettings &settings,
QWidget *parent) : QWidget *parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::KontierungDialog) ui(new Ui::KontierungDialog)
@@ -14,9 +15,7 @@ KontierungDialog::KontierungDialog(const QMap<QString, QString> &projekte, const
ui->setupUi(this); ui->setupUi(this);
{ {
auto preferedProjekte = settings.value("projekte", QStringList()).toStringList(); for(const auto &preferedProjekt : settings.projekte())
for(const auto &preferedProjekt : preferedProjekte)
{ {
if(!projekte.contains(preferedProjekt)) if(!projekte.contains(preferedProjekt))
{ {
@@ -27,25 +26,25 @@ KontierungDialog::KontierungDialog(const QMap<QString, QString> &projekte, const
ui->comboBoxProjekt->addItem(projekte.value(preferedProjekt) % " (" % preferedProjekt % ')', preferedProjekt); ui->comboBoxProjekt->addItem(projekte.value(preferedProjekt) % " (" % preferedProjekt % ')', preferedProjekt);
} }
if(preferedProjekte.count()) if(settings.projekte().count())
ui->comboBoxProjekt->insertSeparator(ui->comboBoxProjekt->count()); ui->comboBoxProjekt->insertSeparator(ui->comboBoxProjekt->count());
for(auto iter = projekte.constBegin(); iter != projekte.constEnd(); iter++) 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()); 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->addItem(subprojekt);
ui->comboBoxSubprojekt->clearEditText(); ui->comboBoxSubprojekt->clearEditText();
for(const auto &workpackage : settings.value("workpackages", QStringList()).toStringList()) for(const auto &workpackage : settings.workpackages())
ui->comboBoxWorkpackage->addItem(workpackage); ui->comboBoxWorkpackage->addItem(workpackage);
ui->comboBoxWorkpackage->clearEditText(); ui->comboBoxWorkpackage->clearEditText();
for(const auto &text : settings.value("texte", QStringList()).toStringList()) for(const auto &text : settings.texte())
ui->comboBoxText->addItem(text); ui->comboBoxText->addItem(text);
ui->comboBoxText->clearEditText(); ui->comboBoxText->clearEditText();
} }

View File

@@ -5,7 +5,8 @@
#include <QTime> #include <QTime>
template <class Key, class T> class QMap; template <class Key, class T> class QMap;
class QSettings;
class ZeiterfassungSettings;
namespace Ui { class KontierungDialog; } namespace Ui { class KontierungDialog; }
@@ -14,7 +15,7 @@ class KontierungDialog : public QDialog
Q_OBJECT Q_OBJECT
public: public:
explicit KontierungDialog(const QMap<QString, QString> &projekte, const QSettings &settings, explicit KontierungDialog(const QMap<QString, QString> &projekte, const ZeiterfassungSettings &settings,
QWidget *parent = 0); QWidget *parent = 0);
~KontierungDialog(); ~KontierungDialog();

View File

@@ -1,10 +1,10 @@
#include <QApplication> #include <QApplication>
#include <QSplashScreen> #include <QSplashScreen>
#include <QPixmap> #include <QPixmap>
#include <QSettings>
#include <QInputDialog> #include <QInputDialog>
#include <QMessageBox> #include <QMessageBox>
#include "zeiterfassungsettings.h"
#include "zeiterfassung.h" #include "zeiterfassung.h"
#include "eventloopwithstatus.h" #include "eventloopwithstatus.h"
#include "dialogs/authenticationdialog.h" #include "dialogs/authenticationdialog.h"
@@ -36,22 +36,11 @@ int main(int argc, char *argv[])
splashScreen.showMessage(QObject::tr("Loading settings...")); splashScreen.showMessage(QObject::tr("Loading settings..."));
splashScreen.show(); splashScreen.show();
QSettings settings; ZeiterfassungSettings settings(&app);
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);
}
splashScreen.showMessage(QObject::tr("Loading login page...")); splashScreen.showMessage(QObject::tr("Loading login page..."));
Zeiterfassung erfassung(settings.value("url").toString()); Zeiterfassung erfassung(settings.url(), &app);
{ {
EventLoopWithStatus eventLoop; EventLoopWithStatus eventLoop;
@@ -69,10 +58,10 @@ int main(int argc, char *argv[])
auto url = QInputDialog::getText(&splashScreen, QObject::tr("Base url"), auto url = QInputDialog::getText(&splashScreen, QObject::tr("Base url"),
QObject::tr("Please enter the base url to the Zeiterfassung:"), QObject::tr("Please enter the base url to the Zeiterfassung:"),
QLineEdit::Normal, settings.value("url").toString(), &ok); QLineEdit::Normal, settings.url(), &ok);
if(!ok) if(!ok)
return -1; return -1;
settings.setValue("url", url); settings.setUrl(url);
erfassung.setUrl(url); erfassung.setUrl(url);
goto again1; goto again1;
} }
@@ -80,13 +69,13 @@ int main(int argc, char *argv[])
splashScreen.showMessage(QObject::tr("Authenticating...")); splashScreen.showMessage(QObject::tr("Authenticating..."));
if(settings.value("username").isNull() || settings.value("password").isNull()) if(settings.username().isNull() || settings.password().isNull())
{ {
AuthenticationDialog dialog(&splashScreen); AuthenticationDialog dialog(&splashScreen);
if(dialog.exec() != QDialog::Accepted) if(dialog.exec() != QDialog::Accepted)
return -1; return -1;
settings.setValue("username", dialog.username()); settings.setUsername(dialog.username());
settings.setValue("password", dialog.password()); settings.setPassword(dialog.password());
} }
{ {
@@ -94,7 +83,7 @@ int main(int argc, char *argv[])
QObject::connect(&erfassung, &Zeiterfassung::loginFinished, &eventLoop, &EventLoopWithStatus::quitWithStatus); QObject::connect(&erfassung, &Zeiterfassung::loginFinished, &eventLoop, &EventLoopWithStatus::quitWithStatus);
again2: again2:
erfassung.doLogin(settings.value("username").toString(), settings.value("password").toString()); erfassung.doLogin(settings.username(), settings.password());
eventLoop.exec(); eventLoop.exec();
if(!eventLoop.success()) 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())); QObject::tr("The Zeiterfassung authentication was not successful:\n\n%0").arg(eventLoop.message()));
AuthenticationDialog dialog(&splashScreen); AuthenticationDialog dialog(&splashScreen);
dialog.setUsername(settings.value("username").toString()); dialog.setUsername(settings.username());
dialog.setPassword(settings.value("password").toString()); dialog.setPassword(settings.password());
if(dialog.exec() != QDialog::Accepted) if(dialog.exec() != QDialog::Accepted)
return -1; return -1;
settings.setValue("username", dialog.username()); settings.setUsername(dialog.username());
settings.setValue("password", dialog.password()); settings.setPassword(dialog.password());
goto again2; goto again2;
} }

View File

@@ -4,7 +4,6 @@
#include <QUrl> #include <QUrl>
#include <QLineEdit> #include <QLineEdit>
#include <QMessageBox> #include <QMessageBox>
#include <QSettings>
#include <QStandardItem> #include <QStandardItem>
#include <QStringBuilder> #include <QStringBuilder>
#include <QMenu> #include <QMenu>
@@ -15,6 +14,7 @@
#include <QRegularExpression> #include <QRegularExpression>
#include <QDebug> #include <QDebug>
#include "zeiterfassungsettings.h"
#include "eventloopwithstatus.h" #include "eventloopwithstatus.h"
#include "dialogs/aboutmedialog.h" #include "dialogs/aboutmedialog.h"
#include "dialogs/buchungdialog.h" #include "dialogs/buchungdialog.h"
@@ -24,7 +24,7 @@
#include "models/buchungenmodel.h" #include "models/buchungenmodel.h"
#include "models/kontierungenmodel.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), QMainWindow(parent),
ui(new Ui::MainWindow), ui(new Ui::MainWindow),
m_settings(settings), m_settings(settings),
@@ -522,10 +522,10 @@ void MainWindow::contextMenuKontierung(const QPoint &pos)
ui->pushButtonEnd->setEnabled(false); ui->pushButtonEnd->setEnabled(false);
ui->treeViewKontierungen->setEnabled(false); ui->treeViewKontierungen->setEnabled(false);
addPreferedEntry("projekte", dialog.getProjekt()); m_settings.prependProjekt(dialog.getProjekt());
addPreferedEntry("subprojekte", dialog.getSubprojekt()); m_settings.prependSubprojekt(dialog.getSubprojekt());
addPreferedEntry("workpackages", dialog.getWorkpackage()); m_settings.prependWorkpackage(dialog.getWorkpackage());
addPreferedEntry("texte", dialog.getText()); m_settings.prependText(dialog.getText());
clearStrips(); clearStrips();
@@ -639,10 +639,10 @@ void MainWindow::contextMenuKontierung(const QPoint &pos)
ui->pushButtonEnd->setEnabled(false); ui->pushButtonEnd->setEnabled(false);
ui->treeViewKontierungen->setEnabled(false); ui->treeViewKontierungen->setEnabled(false);
addPreferedEntry("projekte", dialog.getProjekt()); m_settings.prependProjekt(dialog.getProjekt());
addPreferedEntry("subprojekte", dialog.getSubprojekt()); m_settings.prependSubprojekt(dialog.getSubprojekt());
addPreferedEntry("workpackages", dialog.getWorkpackage()); m_settings.prependWorkpackage(dialog.getWorkpackage());
addPreferedEntry("texte", dialog.getText()); m_settings.prependText(dialog.getText());
clearStrips(); clearStrips();
@@ -745,10 +745,10 @@ void MainWindow::pushButtonStartPressed()
return; return;
} }
addPreferedEntry("projekte", ui->comboBoxProjekt->currentData().toString()); m_settings.prependProjekt(ui->comboBoxProjekt->currentData().toString());
addPreferedEntry("subprojekte", ui->comboBoxSubprojekt->currentText()); m_settings.prependSubprojekt(ui->comboBoxSubprojekt->currentText());
addPreferedEntry("workpackages", ui->comboBoxWorkpackage->currentText()); m_settings.prependWorkpackage(ui->comboBoxWorkpackage->currentText());
addPreferedEntry("texte", ui->comboBoxText->currentText()); m_settings.prependText(ui->comboBoxText->currentText());
updateComboboxes(); updateComboboxes();
@@ -802,17 +802,6 @@ void MainWindow::pushButtonEndPressed()
refresh(); 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() void MainWindow::validateEntries()
{ {
ui->timeEditTime->setMinimumTime(QTime(0, 0)); ui->timeEditTime->setMinimumTime(QTime(0, 0));
@@ -1082,7 +1071,7 @@ void MainWindow::updateComboboxes()
ui->comboBoxProjekt->clear(); ui->comboBoxProjekt->clear();
{ {
auto preferedProjekte = m_settings.value("projekte", QStringList()).toStringList(); auto preferedProjekte = m_settings.projekte();
for(const auto &preferedProjekt : preferedProjekte) for(const auto &preferedProjekt : preferedProjekte)
{ {
@@ -1108,7 +1097,7 @@ void MainWindow::updateComboboxes()
ui->comboBoxSubprojekt->clear(); ui->comboBoxSubprojekt->clear();
{ {
auto subprojekte = m_settings.value("subprojekte", QStringList()).toStringList(); auto subprojekte = m_settings.subprojekte();
for(const auto &subprojekt : subprojekte) for(const auto &subprojekt : subprojekte)
ui->comboBoxSubprojekt->addItem(subprojekt); ui->comboBoxSubprojekt->addItem(subprojekt);
if(subprojekte.count()) if(subprojekte.count())
@@ -1118,7 +1107,7 @@ void MainWindow::updateComboboxes()
ui->comboBoxWorkpackage->clear(); ui->comboBoxWorkpackage->clear();
{ {
auto workpackages = m_settings.value("workpackages", QStringList()).toStringList(); auto workpackages = m_settings.workpackages();
for(const auto &workpackage : workpackages) for(const auto &workpackage : workpackages)
ui->comboBoxWorkpackage->addItem(workpackage); ui->comboBoxWorkpackage->addItem(workpackage);
if(workpackages.count()) if(workpackages.count())
@@ -1128,7 +1117,7 @@ void MainWindow::updateComboboxes()
ui->comboBoxText->clear(); ui->comboBoxText->clear();
{ {
auto texte = m_settings.value("texte", QStringList()).toStringList(); auto texte = m_settings.texte();
for(const auto &text : texte) for(const auto &text : texte)
ui->comboBoxText->addItem(text); ui->comboBoxText->addItem(text);
if(texte.count()) if(texte.count())

View File

@@ -6,10 +6,10 @@
#include "zeiterfassung.h" #include "zeiterfassung.h"
class QSettings;
class QLabel; class QLabel;
namespace Ui { class MainWindow; } namespace Ui { class MainWindow; }
class ZeiterfassungSettings;
class BuchungenModel; class BuchungenModel;
class KontierungenModel; class KontierungenModel;
@@ -18,7 +18,7 @@ class MainWindow : public QMainWindow
Q_OBJECT Q_OBJECT
public: 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(); ~MainWindow();
static int timeToSeconds(const QTime &time); static int timeToSeconds(const QTime &time);
@@ -40,7 +40,6 @@ private Q_SLOTS:
void pushButtonEndPressed(); void pushButtonEndPressed();
private: private:
void addPreferedEntry(const QString &name, const QString &value);
void validateEntries(); void validateEntries();
void updateComboboxes(); void updateComboboxes();
void updateAuswertung(); void updateAuswertung();
@@ -49,7 +48,7 @@ private:
QString buildProjektString(const QString &projekt); QString buildProjektString(const QString &projekt);
Ui::MainWindow *ui; Ui::MainWindow *ui;
QSettings &m_settings; ZeiterfassungSettings &m_settings;
Zeiterfassung &m_erfassung; Zeiterfassung &m_erfassung;
const Zeiterfassung::UserInfo &m_userInfo; const Zeiterfassung::UserInfo &m_userInfo;
QMap<QString, QString> m_projekte; QMap<QString, QString> m_projekte;

View File

@@ -27,7 +27,8 @@ SOURCES += main.cpp \
models/kontierungenmodel.cpp \ models/kontierungenmodel.cpp \
eventloopwithstatus.cpp \ eventloopwithstatus.cpp \
strips/buchungstrip.cpp \ strips/buchungstrip.cpp \
strips/kontierungstrip.cpp strips/kontierungstrip.cpp \
zeiterfassungsettings.cpp
HEADERS += \ HEADERS += \
zeiterfassung.h \ zeiterfassung.h \
@@ -40,7 +41,8 @@ HEADERS += \
models/kontierungenmodel.h \ models/kontierungenmodel.h \
eventloopwithstatus.h \ eventloopwithstatus.h \
strips/buchungstrip.h \ strips/buchungstrip.h \
strips/kontierungstrip.h strips/kontierungstrip.h \
zeiterfassungsettings.h
RESOURCES += \ RESOURCES += \
resources.qrc resources.qrc