From 54aa0e9379b9001efed83ee29af49a6a4351cd87 Mon Sep 17 00:00:00 2001 From: Daniel Brunner <0xFEEDC0DE64@gmail.com> Date: Sat, 24 Mar 2018 13:12:49 +0100 Subject: [PATCH] Added settings to presenceplugin for interval #80 --- plugins/presenceplugin/presenceplugin.cpp | 6 ++++ plugins/presenceplugin/presenceplugin.h | 2 ++ plugins/presenceplugin/presenceplugin.pro | 8 +++-- plugins/presenceplugin/presencesettings.cpp | 27 +++++++++++++++++ plugins/presenceplugin/presencesettings.h | 29 +++++++++++++++++++ .../presenceplugin/presencesettingswidget.cpp | 29 +++++++++++++++++++ .../presenceplugin/presencesettingswidget.h | 28 ++++++++++++++++++ plugins/presenceplugin/presencewidget.cpp | 8 ++--- 8 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 plugins/presenceplugin/presencesettings.cpp create mode 100644 plugins/presenceplugin/presencesettings.h create mode 100644 plugins/presenceplugin/presencesettingswidget.cpp create mode 100644 plugins/presenceplugin/presencesettingswidget.h diff --git a/plugins/presenceplugin/presenceplugin.cpp b/plugins/presenceplugin/presenceplugin.cpp index 870f593..c954e20 100644 --- a/plugins/presenceplugin/presenceplugin.cpp +++ b/plugins/presenceplugin/presenceplugin.cpp @@ -9,6 +9,7 @@ #include "mainwindow.h" #include "presencewidget.h" +#include "presencesettingswidget.h" PresencePlugin::PresencePlugin(QObject *parent) : ZeiterfassungPlugin(parent) @@ -34,3 +35,8 @@ void PresencePlugin::attachTo(MainWindow &mainWindow) { mainWindow.statusBar()->addWidget(new PresenceWidget(mainWindow)); } + +SettingsWidget *PresencePlugin::settingsWidget(ZeiterfassungSettings &settings, QWidget *parent) const +{ + return new PresenceSettingsWidget(settings, parent); +} diff --git a/plugins/presenceplugin/presenceplugin.h b/plugins/presenceplugin/presenceplugin.h index 2907b7f..2f578dc 100644 --- a/plugins/presenceplugin/presenceplugin.h +++ b/plugins/presenceplugin/presenceplugin.h @@ -19,6 +19,8 @@ public: // ZeiterfassungPlugin interface void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; + virtual SettingsWidget *settingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR) const Q_DECL_OVERRIDE; + private: QTranslator m_translator; }; diff --git a/plugins/presenceplugin/presenceplugin.pro b/plugins/presenceplugin/presenceplugin.pro index c4b421b..82d4ba5 100644 --- a/plugins/presenceplugin/presenceplugin.pro +++ b/plugins/presenceplugin/presenceplugin.pro @@ -17,10 +17,14 @@ DEPENDPATH += $$PWD/$${PROJECT_ROOT}/zeiterfassungcorelib $$PWD/$${PROJECT_ROOT} DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT HEADERS += presenceplugin.h \ - presencewidget.h + presencewidget.h \ + presencesettings.h \ + presencesettingswidget.h SOURCES += presenceplugin.cpp \ - presencewidget.cpp + presencewidget.cpp \ + presencesettings.cpp \ + presencesettingswidget.cpp FORMS += diff --git a/plugins/presenceplugin/presencesettings.cpp b/plugins/presenceplugin/presencesettings.cpp new file mode 100644 index 0000000..d1e315c --- /dev/null +++ b/plugins/presenceplugin/presencesettings.cpp @@ -0,0 +1,27 @@ +#include "presencesettings.h" + +#include "zeiterfassungsettings.h" + +const QString PresenceSettings::m_interval("PresencePlugin/interval"); +const int PresenceSettings::m_defaultInterval(60000); + +PresenceSettings::PresenceSettings(ZeiterfassungSettings &settings, QObject *parent) : + QObject(parent), + m_settings(settings) +{ + +} + +int PresenceSettings::interval() const +{ + return m_settings.value(m_interval, m_defaultInterval).toInt(); +} + +void PresenceSettings::setInterval(int interval) +{ + if(this->interval() != interval) + { + m_settings.setValue(m_interval, interval); + Q_EMIT intervalChanged(interval); + } +} diff --git a/plugins/presenceplugin/presencesettings.h b/plugins/presenceplugin/presencesettings.h new file mode 100644 index 0000000..5df7126 --- /dev/null +++ b/plugins/presenceplugin/presencesettings.h @@ -0,0 +1,29 @@ +#ifndef PRESENCESETTINGS_H +#define PRESENCESETTINGS_H + +#include + +class ZeiterfassungSettings; + +class PresenceSettings : public QObject +{ + Q_OBJECT + Q_PROPERTY(int interval READ interval WRITE setInterval NOTIFY intervalChanged) + +public: + PresenceSettings(ZeiterfassungSettings &settings, QObject *parent = Q_NULLPTR); + + int interval() const; + void setInterval(int interval); + +Q_SIGNALS: + void intervalChanged(int interval); + +private: + ZeiterfassungSettings &m_settings; + + static const QString m_interval; + static const int m_defaultInterval; +}; + +#endif // PRESENCESETTINGS_H diff --git a/plugins/presenceplugin/presencesettingswidget.cpp b/plugins/presenceplugin/presencesettingswidget.cpp new file mode 100644 index 0000000..bd7e027 --- /dev/null +++ b/plugins/presenceplugin/presencesettingswidget.cpp @@ -0,0 +1,29 @@ +#include "presencesettingswidget.h" + +#include +#include + +PresenceSettingsWidget::PresenceSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent) : + SettingsWidget(parent), + m_settings(settings) +{ + auto layout = new QFormLayout(this); + layout->setMargin(0); + + m_spinBox = new QSpinBox(this); + m_spinBox->setRange(0, std::numeric_limits::max()); + m_spinBox->setValue(m_settings.interval()); + layout->addRow(tr("Interval(ms):"), m_spinBox); + + setLayout(layout); +} + +bool PresenceSettingsWidget::isValid(QString &message) const +{ + return true; +} + +void PresenceSettingsWidget::apply() +{ + m_settings.setInterval(m_spinBox->value()); +} diff --git a/plugins/presenceplugin/presencesettingswidget.h b/plugins/presenceplugin/presencesettingswidget.h new file mode 100644 index 0000000..6aaf882 --- /dev/null +++ b/plugins/presenceplugin/presencesettingswidget.h @@ -0,0 +1,28 @@ +#ifndef PRESENCESETTINGSWIDGET_H +#define PRESENCESETTINGSWIDGET_H + +#include "settingswidget.h" + +#include "presencesettings.h" + +class QSpinBox; + +class PresenceSettingsWidget : public SettingsWidget +{ + Q_OBJECT + +public: + explicit PresenceSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR); + + virtual bool isValid(QString &message) const Q_DECL_OVERRIDE; + +public Q_SLOTS: + virtual void apply() Q_DECL_OVERRIDE; + +private: + PresenceSettings m_settings; + + QSpinBox *m_spinBox; +}; + +#endif // PRESENCESETTINGSWIDGET_H diff --git a/plugins/presenceplugin/presencewidget.cpp b/plugins/presenceplugin/presencewidget.cpp index ee7ddbb..85af498 100644 --- a/plugins/presenceplugin/presencewidget.cpp +++ b/plugins/presenceplugin/presencewidget.cpp @@ -1,17 +1,17 @@ #include "presencewidget.h" #include -#include +#include #include #include #include #include -#include - #include "mainwindow.h" #include "zeiterfassungapi.h" +#include "presencesettings.h" + PresenceWidget::PresenceWidget(MainWindow &mainWindow) : QPushButton(&mainWindow), m_mainWindow(mainWindow) @@ -27,7 +27,7 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) : m_mainWindow.menuView()->addAction(m_action); auto timer = new QTimer(this); - timer->setInterval(60000); + timer->setInterval(PresenceSettings(mainWindow.settings()).interval()); connect(timer, &QTimer::timeout, this, &PresenceWidget::refresh); timer->start();