Moved settings into own class.

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

View File

@@ -2,11 +2,12 @@
#include "ui_kontierungdialog.h"
#include <QMap>
#include <QSettings>
#include <QStringBuilder>
#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) :
QDialog(parent),
ui(new Ui::KontierungDialog)
@@ -14,9 +15,7 @@ KontierungDialog::KontierungDialog(const QMap<QString, QString> &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<QString, QString> &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();
}

View File

@@ -5,7 +5,8 @@
#include <QTime>
template <class Key, class T> 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<QString, QString> &projekte, const QSettings &settings,
explicit KontierungDialog(const QMap<QString, QString> &projekte, const ZeiterfassungSettings &settings,
QWidget *parent = 0);
~KontierungDialog();

View File

@@ -1,10 +1,10 @@
#include <QApplication>
#include <QSplashScreen>
#include <QPixmap>
#include <QSettings>
#include <QInputDialog>
#include <QMessageBox>
#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;
}

View File

@@ -4,7 +4,6 @@
#include <QUrl>
#include <QLineEdit>
#include <QMessageBox>
#include <QSettings>
#include <QStandardItem>
#include <QStringBuilder>
#include <QMenu>
@@ -15,6 +14,7 @@
#include <QRegularExpression>
#include <QDebug>
#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())

View File

@@ -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<QString, QString> m_projekte;

View File

@@ -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