From 27b3a5d7af1adc07dc918bf423ce1318b9e3ca69 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Mon, 18 Dec 2017 20:52:10 +0100 Subject: [PATCH] Added dialog to advanced view plugin --- .../advancedviewplugin/advancedviewplugin.pro | 11 +-- .../advancedviewplugin/advancedviewwidget.cpp | 13 +++- .../advancedviewplugin/advancedviewwidget.h | 5 +- .../advancedviewplugin/advanvedviewdialog.cpp | 18 +++++ .../advancedviewplugin/advanvedviewdialog.h | 23 ++++++ .../advancedviewplugin/advanvedviewdialog.ui | 71 +++++++++++++++++++ zeiterfassunglib/mainwindow.cpp | 2 +- zeiterfassunglib/stripswidget.cpp | 36 +++++----- zeiterfassunglib/stripswidget.h | 19 ++--- 9 files changed, 158 insertions(+), 40 deletions(-) create mode 100644 plugins/advancedviewplugin/advanvedviewdialog.cpp create mode 100644 plugins/advancedviewplugin/advanvedviewdialog.h create mode 100644 plugins/advancedviewplugin/advanvedviewdialog.ui diff --git a/plugins/advancedviewplugin/advancedviewplugin.pro b/plugins/advancedviewplugin/advancedviewplugin.pro index 3a3116b..348a6bc 100644 --- a/plugins/advancedviewplugin/advancedviewplugin.pro +++ b/plugins/advancedviewplugin/advancedviewplugin.pro @@ -15,15 +15,16 @@ DEPENDPATH += $$PWD/../../zeiterfassunglib DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT HEADERS += advancedviewplugin.h \ - advancedviewwidget.h + advancedviewwidget.h \ + advanvedviewdialog.h SOURCES += advancedviewplugin.cpp \ - advancedviewwidget.cpp + advancedviewwidget.cpp \ + advanvedviewdialog.cpp -FORMS += +FORMS += advanvedviewdialog.ui -RESOURCES += \ - advancedviewplugin_resources.qrc +RESOURCES += advancedviewplugin_resources.qrc TRANSLATIONS += diff --git a/plugins/advancedviewplugin/advancedviewwidget.cpp b/plugins/advancedviewplugin/advancedviewwidget.cpp index aab7f36..a48699c 100644 --- a/plugins/advancedviewplugin/advancedviewwidget.cpp +++ b/plugins/advancedviewplugin/advancedviewwidget.cpp @@ -3,18 +3,27 @@ #include #include "stripswidget.h" +#include "advanvedviewdialog.h" AdvancedViewWidget::AdvancedViewWidget(StripsWidget &stripsWidget) : - QToolButton(&stripsWidget), + QPushButton(&stripsWidget), m_stripsWidget(stripsWidget) { setIcon(QIcon(QStringLiteral(":/zeiterfassunglib/plugins/advancedviewplugin/images/advanced-view.png"))); - setText(tr("Advanced view")); + connect(&stripsWidget, &StripsWidget::dateChanged, this, &AdvancedViewWidget::dateChanged); dateChanged(stripsWidget.date()); + + connect(this, &QAbstractButton::pressed, this, &AdvancedViewWidget::pressedSlot); } void AdvancedViewWidget::dateChanged(const QDate &date) { setEnabled(date.isValid()); } + +void AdvancedViewWidget::pressedSlot() +{ + AdvanvedViewDialog dialog(m_stripsWidget); + dialog.exec(); +} diff --git a/plugins/advancedviewplugin/advancedviewwidget.h b/plugins/advancedviewplugin/advancedviewwidget.h index b1c33bc..cb3bcd9 100644 --- a/plugins/advancedviewplugin/advancedviewwidget.h +++ b/plugins/advancedviewplugin/advancedviewwidget.h @@ -1,11 +1,11 @@ #ifndef ADVANCEDVIEWWIDGET_H #define ADVANCEDVIEWWIDGET_H -#include +#include class StripsWidget; -class AdvancedViewWidget : public QToolButton +class AdvancedViewWidget : public QPushButton { Q_OBJECT @@ -14,6 +14,7 @@ public: private Q_SLOTS: void dateChanged(const QDate &date); + void pressedSlot(); private: StripsWidget &m_stripsWidget; diff --git a/plugins/advancedviewplugin/advanvedviewdialog.cpp b/plugins/advancedviewplugin/advanvedviewdialog.cpp new file mode 100644 index 0000000..93a8a16 --- /dev/null +++ b/plugins/advancedviewplugin/advanvedviewdialog.cpp @@ -0,0 +1,18 @@ +#include "advanvedviewdialog.h" +#include "ui_advanvedviewdialog.h" + +#include "stripswidget.h" +#include "mainwindow.h" + +AdvanvedViewDialog::AdvanvedViewDialog(StripsWidget &stripsWidget) : + QDialog(&stripsWidget.mainWindow()), + ui(new Ui::AdvanvedViewDialog), + m_stripsWidget(stripsWidget) +{ + ui->setupUi(this); +} + +AdvanvedViewDialog::~AdvanvedViewDialog() +{ + delete ui; +} diff --git a/plugins/advancedviewplugin/advanvedviewdialog.h b/plugins/advancedviewplugin/advanvedviewdialog.h new file mode 100644 index 0000000..deba798 --- /dev/null +++ b/plugins/advancedviewplugin/advanvedviewdialog.h @@ -0,0 +1,23 @@ +#ifndef ADVANVEDVIEWDIALOG_H +#define ADVANVEDVIEWDIALOG_H + +#include + +class StripsWidget; +namespace Ui { class AdvanvedViewDialog; } + +class AdvanvedViewDialog : public QDialog +{ + Q_OBJECT + +public: + explicit AdvanvedViewDialog(StripsWidget &stripsWidget); + ~AdvanvedViewDialog(); + +private: + Ui::AdvanvedViewDialog *ui; + + StripsWidget &m_stripsWidget; +}; + +#endif // ADVANVEDVIEWDIALOG_H diff --git a/plugins/advancedviewplugin/advanvedviewdialog.ui b/plugins/advancedviewplugin/advanvedviewdialog.ui new file mode 100644 index 0000000..fc814f5 --- /dev/null +++ b/plugins/advancedviewplugin/advanvedviewdialog.ui @@ -0,0 +1,71 @@ + + + + + AdvanvedViewDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 30 + 240 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + buttonBox + accepted() + AdvanvedViewDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + AdvanvedViewDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/zeiterfassunglib/mainwindow.cpp b/zeiterfassunglib/mainwindow.cpp index 0c6e72a..87eeb07 100644 --- a/zeiterfassunglib/mainwindow.cpp +++ b/zeiterfassunglib/mainwindow.cpp @@ -55,7 +55,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass for(quint8 i = 0; i < 7; i++) { - m_stripsWidgets[i] = new StripsWidget(m_erfassung, m_userInfo.userId, m_stripFactory, m_projects, ui->widgetWeek); + m_stripsWidgets[i] = new StripsWidget(*this); connect(m_stripsWidgets[i], &StripsWidget::refreshingChanged, this, &MainWindow::refreshingChanged); ui->layoutWeek->addWidget(m_stripsWidgets[i]); } diff --git a/zeiterfassunglib/stripswidget.cpp b/zeiterfassunglib/stripswidget.cpp index b0bd6fe..1896485 100644 --- a/zeiterfassunglib/stripswidget.cpp +++ b/zeiterfassunglib/stripswidget.cpp @@ -7,24 +7,19 @@ #include #include +#include "mainwindow.h" #include "zeiterfassungapi.h" #include "timeutils.h" #include "stripfactory.h" -StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory &stripFactory, - const QMap &projects, QWidget *parent) : - QWidget(parent), - m_erfassung(erfassung), - m_userId(userId), - m_stripFactory(stripFactory), - m_projects(projects), +StripsWidget::StripsWidget(MainWindow &mainWindow) : + QWidget(&mainWindow), + m_mainWindow(mainWindow), m_refreshing(false), m_refreshingBookings(false), m_refreshingTimeAssignments(false), m_startEnabled(false), - m_endEnabled(false), - m_getBookingsReply(Q_NULLPTR), - m_getTimeAssignmentsReply(Q_NULLPTR) + m_endEnabled(false) { auto layout = new QVBoxLayout(this); @@ -46,6 +41,11 @@ StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory setLayout(layout); } +MainWindow &StripsWidget::mainWindow() const +{ + return m_mainWindow; +} + QBoxLayout *StripsWidget::headerLayout() const { return m_headerLayout; @@ -166,7 +166,7 @@ void StripsWidget::refreshBookings() invalidateValues(); - m_getBookingsReply = m_erfassung.doGetBookings(m_userId, m_date, m_date); + m_getBookingsReply = m_mainWindow.erfassung().doGetBookings(m_mainWindow.userInfo().userId, m_date, m_date); connect(m_getBookingsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getBookingsFinished); } @@ -192,7 +192,7 @@ void StripsWidget::refreshTimeAssignments() invalidateValues(); - m_getTimeAssignmentsReply = m_erfassung.doGetTimeAssignments(m_userId, m_date, m_date); + m_getTimeAssignmentsReply = m_mainWindow.erfassung().doGetTimeAssignments(m_mainWindow.userInfo().userId, m_date, m_date); connect(m_getTimeAssignmentsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getTimeAssignmentsFinished); } @@ -532,10 +532,10 @@ void StripsWidget::invalidateValues() Q_EMIT endEnabledChanged(m_endEnabled = false); } -QString StripsWidget::buildProjectString(const QString &project) +QString StripsWidget::buildProjectString(const QString &project) const { - if(m_projects.contains(project)) - return m_projects.value(project) % "\n" % project; + if(m_mainWindow.projects().contains(project)) + return m_mainWindow.projects().value(project) % "\n" % project; else { qWarning() << "could not find project" << project; @@ -545,7 +545,7 @@ QString StripsWidget::buildProjectString(const QString &project) QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) { - auto widget = m_stripFactory.createBookingStartStrip(this).release(); + auto widget = m_mainWindow.stripFactory().createBookingStartStrip(this).release(); if(auto labelTime = widget->findChild(QStringLiteral("labelTime"))) labelTime->setProperty("text", time.toString(tr("HH:mm"))); @@ -564,7 +564,7 @@ QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time) { - auto widget = m_stripFactory.createBookingEndStrip(this).release(); + auto widget = m_mainWindow.stripFactory().createBookingEndStrip(this).release(); if(auto labelTime = widget->findChild(QStringLiteral("labelTime"))) labelTime->setProperty("text", time.toString(tr("HH:mm"))); @@ -583,7 +583,7 @@ QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time) QWidget *StripsWidget::appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject, const QString &workpackage, const QString &text) { - auto widget = m_stripFactory.createTimeAssignmentStrip(this).release(); + auto widget = m_mainWindow.stripFactory().createTimeAssignmentStrip(this).release(); if(auto labelTime = widget->findChild(QStringLiteral("labelTime"))) labelTime->setProperty("text", duration == QTime(0, 0) ? tr("Open") : duration.toString(tr("HH:mm"))); diff --git a/zeiterfassunglib/stripswidget.h b/zeiterfassunglib/stripswidget.h index 26ffc14..3cc1a8c 100644 --- a/zeiterfassunglib/stripswidget.h +++ b/zeiterfassunglib/stripswidget.h @@ -12,19 +12,18 @@ class QBoxLayout; class QLabel; -template class QMap; template class QVector; -class ZeiterfassungApi; -class StripFactory; +class MainWindow; class ZEITERFASSUNGLIBSHARED_EXPORT StripsWidget : public QWidget { Q_OBJECT public: - explicit StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory &stripFactory, - const QMap &projects, QWidget *parent = Q_NULLPTR); + explicit StripsWidget(MainWindow &mainWindow); + + MainWindow &mainWindow() const; QBoxLayout *headerLayout() const; QBoxLayout *stripsLayout() const; @@ -72,19 +71,15 @@ private Q_SLOTS: void getTimeAssignmentsFinished(); private: - void invalidateValues(); - - QString buildProjectString(const QString &project); + void invalidateValues(); + QString buildProjectString(const QString &project) const; QWidget *appendBookingStartStrip(int id, const QTime &time); QWidget *appendBookingEndStrip(int id, const QTime &time); QWidget *appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject, const QString &workpackage, const QString &text); - ZeiterfassungApi &m_erfassung; - int m_userId; - StripFactory &m_stripFactory; - const QMap &m_projects; + MainWindow &m_mainWindow; QBoxLayout *m_headerLayout; QBoxLayout *m_stripsLayout;