From ac7ab6639e147ab859f5647f023024f80531d673 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Fri, 29 Dec 2017 01:56:17 +0100 Subject: [PATCH] Added AbsencesModel --- plugins/absenceplugin/absencedialog.cpp | 6 ++- plugins/absenceplugin/absencedialog.h | 4 +- plugins/absenceplugin/absenceplugin.pro | 2 + plugins/absenceplugin/absencesmodel.cpp | 49 +++++++++++++++++++++++++ plugins/absenceplugin/absencesmodel.h | 42 +++++++++++++++++++++ plugins/absenceplugin/absencewidget.cpp | 4 +- 6 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 plugins/absenceplugin/absencesmodel.cpp create mode 100644 plugins/absenceplugin/absencesmodel.h diff --git a/plugins/absenceplugin/absencedialog.cpp b/plugins/absenceplugin/absencedialog.cpp index f80265a..5b92c91 100644 --- a/plugins/absenceplugin/absencedialog.cpp +++ b/plugins/absenceplugin/absencedialog.cpp @@ -3,7 +3,9 @@ #include -AbsenceDialog::AbsenceDialog(const QDate &date, QWidget *parent) : +#include "absencesmodel.h" + +AbsenceDialog::AbsenceDialog(int userId, const QDate &date, ZeiterfassungApi &erfassung, QWidget *parent) : QDialog(parent), ui(new Ui::AbsenceDialog) { @@ -16,6 +18,8 @@ AbsenceDialog::AbsenceDialog(const QDate &date, QWidget *parent) : #endif ui->labelTitle->setText(tr("Absences for %0").arg(date.toString(tr("dd.MM.yyyy")))); + + ui->treeView->setModel(new AbsencesModel(userId, date, erfassung, this)); } AbsenceDialog::~AbsenceDialog() diff --git a/plugins/absenceplugin/absencedialog.h b/plugins/absenceplugin/absencedialog.h index ceecb15..0f2b51a 100644 --- a/plugins/absenceplugin/absencedialog.h +++ b/plugins/absenceplugin/absencedialog.h @@ -4,6 +4,8 @@ class QDate; +class ZeiterfassungApi; + namespace Ui { class AbsenceDialog; } class AbsenceDialog : public QDialog @@ -11,7 +13,7 @@ class AbsenceDialog : public QDialog Q_OBJECT public: - explicit AbsenceDialog(const QDate &date, QWidget *parent = 0); + explicit AbsenceDialog(int userId, const QDate &date, ZeiterfassungApi &erfassung, QWidget *parent = 0); ~AbsenceDialog(); private: diff --git a/plugins/absenceplugin/absenceplugin.pro b/plugins/absenceplugin/absenceplugin.pro index 464f5ed..d938567 100644 --- a/plugins/absenceplugin/absenceplugin.pro +++ b/plugins/absenceplugin/absenceplugin.pro @@ -17,10 +17,12 @@ DEPENDPATH += $$PWD/$${PROJECT_ROOT}/zeiterfassungcorelib $$PWD/$${PROJECT_ROOT} DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT HEADERS += absencedialog.h \ + absencesmodel.h \ absenceplugin.h \ absencewidget.h SOURCES += absencedialog.cpp \ + absencesmodel.cpp \ absenceplugin.cpp \ absencewidget.cpp diff --git a/plugins/absenceplugin/absencesmodel.cpp b/plugins/absenceplugin/absencesmodel.cpp new file mode 100644 index 0000000..f302efc --- /dev/null +++ b/plugins/absenceplugin/absencesmodel.cpp @@ -0,0 +1,49 @@ +#include "absencesmodel.h" + +#include "zeiterfassungapi.h" + +AbsencesModel::AbsencesModel(int userId, const QDate &date, ZeiterfassungApi &erfassung, QObject *parent) : + QAbstractListModel(parent), + m_userId(userId), + m_erfassung(erfassung) +{ + setDate(date); +} + +bool AbsencesModel::enabled() const +{ + return m_reply == Q_NULLPTR; +} + +int AbsencesModel::rowCount(const QModelIndex &parent) const +{ + +} + +int AbsencesModel::columnCount(const QModelIndex &parent) const +{ + +} + +QVariant AbsencesModel::data(const QModelIndex &index, int role) const +{ + +} + +QVariant AbsencesModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + +} + +void AbsencesModel::setDate(const QDate &date) +{ + m_date = date; + + m_reply = m_erfassung.doGetAbsences(m_userId, m_date, m_date); + connect(m_reply.get(), &ZeiterfassungReply::finished, this, &AbsencesModel::finished); +} + +void AbsencesModel::finished() +{ + +} diff --git a/plugins/absenceplugin/absencesmodel.h b/plugins/absenceplugin/absencesmodel.h new file mode 100644 index 0000000..92541a3 --- /dev/null +++ b/plugins/absenceplugin/absencesmodel.h @@ -0,0 +1,42 @@ +#pragma once + +#include + +#include +#include + +#include "replies/getabsencesreply.h" + +class ZeiterfassungApi; + +class AbsencesModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged) + +public: + explicit AbsencesModel(int userId, const QDate &date, ZeiterfassungApi &erfassung, QObject *parent = Q_NULLPTR); + + bool enabled() const; + + // QAbstractItemModel interface + int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &parent) const Q_DECL_OVERRIDE; + QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE; + QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE; + +Q_SIGNALS: + void enabledChanged(bool enabled); + +public Q_SLOTS: + void setDate(const QDate &date); + +private Q_SLOTS: + void finished(); + +private: + int m_userId; + QDate m_date; + ZeiterfassungApi &m_erfassung; + std::unique_ptr m_reply; +}; diff --git a/plugins/absenceplugin/absencewidget.cpp b/plugins/absenceplugin/absencewidget.cpp index 4e83ec9..444f87f 100644 --- a/plugins/absenceplugin/absencewidget.cpp +++ b/plugins/absenceplugin/absencewidget.cpp @@ -1,6 +1,7 @@ #include "absencewidget.h" #include "stripswidget.h" +#include "mainwindow.h" #include "absencedialog.h" @@ -16,6 +17,7 @@ AbsenceWidget::AbsenceWidget(StripsWidget &stripsWidget) : void AbsenceWidget::pressedSlot() { - AbsenceDialog dialog(m_stripsWidget.date(), this); + AbsenceDialog dialog(m_stripsWidget.mainWindow().userInfo().userId, m_stripsWidget.date(), + m_stripsWidget.mainWindow().erfassung(), this); dialog.exec(); }