From a456318a065f48c5ffe9aa65d18218a25e2d4cdb Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Mon, 18 Dec 2017 21:41:39 +0100 Subject: [PATCH] Moved advanced view code into plugin --- .../advancedviewplugin/advancedviewplugin.pro | 24 +- .../advancedviewplugin/advanvedviewdialog.cpp | 275 +++++++++++++++++- .../advancedviewplugin/advanvedviewdialog.h | 11 +- .../advancedviewplugin/advanvedviewdialog.ui | 24 +- .../dialogs/bookingdialog.cpp | 0 .../dialogs/bookingdialog.h | 0 .../dialogs/bookingdialog.ui | 0 .../dialogs/timeassignmentdialog.cpp | 0 .../dialogs/timeassignmentdialog.h | 0 .../dialogs/timeassignmentdialog.ui | 0 .../models/bookingsmodel.cpp | 88 ++++++ .../models/bookingsmodel.h | 11 +- .../models/timeassignmentsmodel.cpp | 92 ++++++ .../models/timeassignmentsmodel.h | 9 +- .../advancedviewplugin/views/bookingsview.cpp | 7 - .../advancedviewplugin/views/bookingsview.h | 14 - .../views/timeassignmentsview.cpp | 7 - .../views/timeassignmentsview.h | 14 - zeiterfassunglib/mainwindow.cpp | 244 +--------------- zeiterfassunglib/mainwindow.h | 2 - zeiterfassunglib/mainwindow.ui | 80 ++--- zeiterfassunglib/models/bookingsmodel.cpp | 123 -------- .../models/timeassignmentsmodel.cpp | 127 -------- zeiterfassunglib/stripswidget.cpp | 4 +- zeiterfassunglib/stripswidget.h | 2 +- zeiterfassunglib/zeiterfassunglib.pro | 16 +- 26 files changed, 521 insertions(+), 653 deletions(-) rename {zeiterfassunglib => plugins/advancedviewplugin}/dialogs/bookingdialog.cpp (100%) rename {zeiterfassunglib => plugins/advancedviewplugin}/dialogs/bookingdialog.h (100%) rename {zeiterfassunglib => plugins/advancedviewplugin}/dialogs/bookingdialog.ui (100%) rename {zeiterfassunglib => plugins/advancedviewplugin}/dialogs/timeassignmentdialog.cpp (100%) rename {zeiterfassunglib => plugins/advancedviewplugin}/dialogs/timeassignmentdialog.h (100%) rename {zeiterfassunglib => plugins/advancedviewplugin}/dialogs/timeassignmentdialog.ui (100%) create mode 100644 plugins/advancedviewplugin/models/bookingsmodel.cpp rename {zeiterfassunglib => plugins/advancedviewplugin}/models/bookingsmodel.h (67%) create mode 100644 plugins/advancedviewplugin/models/timeassignmentsmodel.cpp rename {zeiterfassunglib => plugins/advancedviewplugin}/models/timeassignmentsmodel.h (75%) delete mode 100644 plugins/advancedviewplugin/views/bookingsview.cpp delete mode 100644 plugins/advancedviewplugin/views/bookingsview.h delete mode 100644 plugins/advancedviewplugin/views/timeassignmentsview.cpp delete mode 100644 plugins/advancedviewplugin/views/timeassignmentsview.h delete mode 100644 zeiterfassunglib/models/bookingsmodel.cpp delete mode 100644 zeiterfassunglib/models/timeassignmentsmodel.cpp diff --git a/plugins/advancedviewplugin/advancedviewplugin.pro b/plugins/advancedviewplugin/advancedviewplugin.pro index 7e2e846..a4436d6 100644 --- a/plugins/advancedviewplugin/advancedviewplugin.pro +++ b/plugins/advancedviewplugin/advancedviewplugin.pro @@ -14,19 +14,25 @@ DEPENDPATH += $$PWD/../../zeiterfassunglib DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT -HEADERS += advancedviewplugin.h \ +HEADERS += advanvedviewdialog.h \ + advancedviewplugin.h \ advancedviewwidget.h \ - advanvedviewdialog.h \ - views/bookingsview.h \ - views/timeassignmentsview.h + dialogs/bookingdialog.h \ + dialogs/timeassignmentdialog.h \ + models/bookingsmodel.h \ + models/timeassignmentsmodel.h -SOURCES += advancedviewplugin.cpp \ +SOURCES += advanvedviewdialog.cpp \ + advancedviewplugin.cpp \ advancedviewwidget.cpp \ - advanvedviewdialog.cpp \ - views/bookingsview.cpp \ - views/timeassignmentsview.cpp + dialogs/bookingdialog.cpp \ + dialogs/timeassignmentdialog.cpp \ + models/bookingsmodel.cpp \ + models/timeassignmentsmodel.cpp -FORMS += advanvedviewdialog.ui +FORMS += advanvedviewdialog.ui \ + dialogs/bookingdialog.ui \ + dialogs/timeassignmentdialog.ui RESOURCES += advancedviewplugin_resources.qrc diff --git a/plugins/advancedviewplugin/advanvedviewdialog.cpp b/plugins/advancedviewplugin/advanvedviewdialog.cpp index 93a8a16..fb56af4 100644 --- a/plugins/advancedviewplugin/advanvedviewdialog.cpp +++ b/plugins/advancedviewplugin/advanvedviewdialog.cpp @@ -1,18 +1,291 @@ #include "advanvedviewdialog.h" #include "ui_advanvedviewdialog.h" +#include +#include +#include +#include +#include + +#include "replies/createbookingreply.h" +#include "replies/updatebookingreply.h" +#include "replies/deletebookingreply.h" +#include "replies/createtimeassignmentreply.h" +#include "replies/updatetimeassignmentreply.h" +#include "replies/deletetimeassignmentreply.h" + #include "stripswidget.h" #include "mainwindow.h" +#include "timeutils.h" +#include "dialogs/bookingdialog.h" +#include "dialogs/timeassignmentdialog.h" +#include "models/bookingsmodel.h" +#include "models/timeassignmentsmodel.h" AdvanvedViewDialog::AdvanvedViewDialog(StripsWidget &stripsWidget) : QDialog(&stripsWidget.mainWindow()), ui(new Ui::AdvanvedViewDialog), - m_stripsWidget(stripsWidget) + m_stripsWidget(stripsWidget), + m_bookingsModel(new BookingsModel(stripsWidget, this)), + m_timeAssignmentsModel(new TimeAssignmentsModel(stripsWidget, this)) { ui->setupUi(this); + + ui->bookingsView->setModel(m_bookingsModel); + connect(m_bookingsModel, &BookingsModel::enabledChanged, ui->bookingsView, &QWidget::setEnabled); + connect(ui->bookingsView, &QWidget::customContextMenuRequested, this, &AdvanvedViewDialog::contextMenuBooking); + + ui->timeAssignmentsView->setModel(m_timeAssignmentsModel); + connect(m_timeAssignmentsModel, &TimeAssignmentsModel::enabledChanged, ui->timeAssignmentsView, &QWidget::setEnabled); + connect(ui->timeAssignmentsView, &QWidget::customContextMenuRequested, this, &AdvanvedViewDialog::contextMenuTimeAssignment); } AdvanvedViewDialog::~AdvanvedViewDialog() { delete ui; } + +void AdvanvedViewDialog::contextMenuBooking(const QPoint &pos) +{ + auto index = ui->bookingsView->indexAt(pos); + + if(!index.isValid()) + { + QMenu menu; + auto createAction = menu.addAction(tr("Create booking")); + auto refreshAction = menu.addAction(QIcon(QPixmap(QStringLiteral(":/zeiterfassunglib/images/refresh.png"))), tr("Refresh bookings")); + auto selectedAction = menu.exec(ui->bookingsView->viewport()->mapToGlobal(pos)); + if(selectedAction == createAction) + { + BookingDialog dialog(this); + dialog.setTime(timeNormalise(QTime::currentTime())); + again2: + if(dialog.exec() == QDialog::Accepted) + { + auto reply = m_stripsWidget.mainWindow().erfassung().doCreateBooking( + m_stripsWidget.mainWindow().userInfo().userId, + m_stripsWidget.date(), + dialog.getTime(), + dialog.getTimespan(), + dialog.getType(), + dialog.getText() + ); + + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } + + if(reply->success()) + { + m_stripsWidget.refreshBookings(); + } + else + { + QMessageBox::warning(this, tr("Could not create booking!"), tr("Could not create booking!") % "\n\n" % reply->message()); + goto again2; + } + } + } + else if(selectedAction == refreshAction) + { + m_stripsWidget.refreshBookings(); + } + } + else + { + auto booking = m_stripsWidget.bookings().at(index.row()); + + QMenu menu; + auto editAction = menu.addAction(tr("Edit booking")); + auto deleteAction = menu.addAction(tr("Delete booking")); + auto selectedAction = menu.exec(ui->bookingsView->viewport()->mapToGlobal(pos)); + if(selectedAction == editAction) + { + BookingDialog dialog(this); + dialog.setTime(booking.time); + dialog.setTimespan(booking.timespan); + dialog.setType(booking.type); + dialog.setText(booking.text); + again1: + if(dialog.exec() == QDialog::Accepted) + { + auto reply = m_stripsWidget.mainWindow().erfassung().doUpdateBooking( + booking.id, + m_stripsWidget.mainWindow().userInfo().userId, + m_stripsWidget.date(), + dialog.getTime(), + dialog.getTimespan(), + dialog.getType(), + dialog.getText() + ); + + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } + + if(reply->success()) + { + m_stripsWidget.refreshBookings(); + } + else + { + QMessageBox::warning(this, tr("Could not edit booking!"), tr("Could not edit booking!") % "\n\n" % reply->message()); + goto again1; + } + } + } + else if(selectedAction == deleteAction) + { + QMessageBox msgBox; + msgBox.setText(tr("Do you really want to delete the booking?")); + msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Cancel); + if(msgBox.exec() == QMessageBox::Yes) + { + auto reply = m_stripsWidget.mainWindow().erfassung().doDeleteBooking(booking.id); + + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } + + if(reply->success()) + m_stripsWidget.refreshBookings(); + else + QMessageBox::warning(this, tr("Could not delete booking!"), tr("Could not delete booking!") % "\n\n" % reply->message()); + } + } + } +} + +void AdvanvedViewDialog::contextMenuTimeAssignment(const QPoint &pos) +{ + auto index = ui->timeAssignmentsView->indexAt(pos); + + if(!index.isValid()) + { + QMenu menu; + auto createAction = menu.addAction(tr("Create time assignment")); + auto refreshAction = menu.addAction(QIcon(QPixmap(QStringLiteral(":/zeiterfassunglib/images/refresh.png"))), tr("Refresh time assignments")); + auto selectedAction = menu.exec(ui->timeAssignmentsView->viewport()->mapToGlobal(pos)); + if(selectedAction == createAction) + { + TimeAssignmentDialog dialog(m_stripsWidget.mainWindow().projects(), + m_stripsWidget.mainWindow().settings(), this); + again2: + if(dialog.exec() == QDialog::Accepted) + { + auto reply = m_stripsWidget.mainWindow().erfassung().doCreateTimeAssignment( + m_stripsWidget.mainWindow().userInfo().userId, + m_stripsWidget.date(), + dialog.getTime(), + dialog.getTimespan(), + dialog.getProject(), + dialog.getSubproject(), + dialog.getWorkpackage(), + dialog.getText() + ); + + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } + + if(reply->success()) + { + m_stripsWidget.refreshTimeAssignments(); + } + else + { + QMessageBox::warning(this, tr("Could not create time assignment!"), tr("Could not create time assignment!") % "\n\n" % reply->message()); + goto again2; + } + } + } + else if(selectedAction == refreshAction) + { + m_stripsWidget.refreshTimeAssignments(); + } + } + else + { + auto timeAssignment = m_stripsWidget.timeAssignments().at(index.row()); + + QMenu menu; + auto editAction = menu.addAction(tr("Edit time assignment")); + auto deleteAction = menu.addAction(tr("Delete time assignment")); + auto selectedAction = menu.exec(ui->timeAssignmentsView->viewport()->mapToGlobal(pos)); + if(selectedAction == editAction) + { + TimeAssignmentDialog dialog(m_stripsWidget.mainWindow().projects(), + m_stripsWidget.mainWindow().settings(), this); + dialog.setTime(timeAssignment.time); + dialog.setTimespan(timeAssignment.timespan); + dialog.setProject(timeAssignment.project); + dialog.setSubproject(timeAssignment.subproject); + dialog.setWorkpackage(timeAssignment.workpackage); + dialog.setText(timeAssignment.text); + again1: + if(dialog.exec() == QDialog::Accepted) + { + auto reply = m_stripsWidget.mainWindow().erfassung().doUpdateTimeAssignment( + timeAssignment.id, + m_stripsWidget.mainWindow().userInfo().userId, + m_stripsWidget.date(), + dialog.getTime(), + dialog.getTimespan(), + dialog.getProject(), + dialog.getSubproject(), + dialog.getWorkpackage(), + dialog.getText() + ); + + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } + + if(reply->success()) + { + m_stripsWidget.refreshTimeAssignments(); + } + else + { + QMessageBox::warning(this, tr("Could not edit time assignment!"), tr("Could not edit time assignment!") % "\n\n" % reply->message()); + goto again1; + } + } + } + else if(selectedAction == deleteAction) + { + QMessageBox msgBox; + msgBox.setText(tr("Do you really want to delete the time assignment?")); + msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Cancel); + if(msgBox.exec() == QMessageBox::Yes) + { + auto reply = m_stripsWidget.mainWindow().erfassung().doDeleteTimeAssignment(timeAssignment.id); + + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } + + if(reply->success()) + { + m_stripsWidget.refreshTimeAssignments(); + } + else + QMessageBox::warning(this, tr("Could not delete time assignment!"), tr("Could not delete time assignment!") % "\n\n" % reply->message()); + } + } + } +} diff --git a/plugins/advancedviewplugin/advanvedviewdialog.h b/plugins/advancedviewplugin/advanvedviewdialog.h index deba798..4423716 100644 --- a/plugins/advancedviewplugin/advanvedviewdialog.h +++ b/plugins/advancedviewplugin/advanvedviewdialog.h @@ -3,8 +3,10 @@ #include -class StripsWidget; namespace Ui { class AdvanvedViewDialog; } +class StripsWidget; +class BookingsModel; +class TimeAssignmentsModel; class AdvanvedViewDialog : public QDialog { @@ -14,10 +16,17 @@ public: explicit AdvanvedViewDialog(StripsWidget &stripsWidget); ~AdvanvedViewDialog(); +private Q_SLOTS: + void contextMenuBooking(const QPoint &pos); + void contextMenuTimeAssignment(const QPoint &pos); + private: Ui::AdvanvedViewDialog *ui; StripsWidget &m_stripsWidget; + + BookingsModel *m_bookingsModel; + TimeAssignmentsModel *m_timeAssignmentsModel; }; #endif // ADVANVEDVIEWDIALOG_H diff --git a/plugins/advancedviewplugin/advanvedviewdialog.ui b/plugins/advancedviewplugin/advanvedviewdialog.ui index da2fe7c..9418d8e 100644 --- a/plugins/advancedviewplugin/advanvedviewdialog.ui +++ b/plugins/advancedviewplugin/advanvedviewdialog.ui @@ -19,8 +19,16 @@ Qt::Vertical - - + + + Qt::CustomContextMenu + + + + + Qt::CustomContextMenu + + @@ -35,18 +43,6 @@ - - - BookingsView - QTreeView -
views/bookingsview.h
-
- - TimeAssignmentsView - QTreeView -
views/timeassignmentsview.h
-
-
diff --git a/zeiterfassunglib/dialogs/bookingdialog.cpp b/plugins/advancedviewplugin/dialogs/bookingdialog.cpp similarity index 100% rename from zeiterfassunglib/dialogs/bookingdialog.cpp rename to plugins/advancedviewplugin/dialogs/bookingdialog.cpp diff --git a/zeiterfassunglib/dialogs/bookingdialog.h b/plugins/advancedviewplugin/dialogs/bookingdialog.h similarity index 100% rename from zeiterfassunglib/dialogs/bookingdialog.h rename to plugins/advancedviewplugin/dialogs/bookingdialog.h diff --git a/zeiterfassunglib/dialogs/bookingdialog.ui b/plugins/advancedviewplugin/dialogs/bookingdialog.ui similarity index 100% rename from zeiterfassunglib/dialogs/bookingdialog.ui rename to plugins/advancedviewplugin/dialogs/bookingdialog.ui diff --git a/zeiterfassunglib/dialogs/timeassignmentdialog.cpp b/plugins/advancedviewplugin/dialogs/timeassignmentdialog.cpp similarity index 100% rename from zeiterfassunglib/dialogs/timeassignmentdialog.cpp rename to plugins/advancedviewplugin/dialogs/timeassignmentdialog.cpp diff --git a/zeiterfassunglib/dialogs/timeassignmentdialog.h b/plugins/advancedviewplugin/dialogs/timeassignmentdialog.h similarity index 100% rename from zeiterfassunglib/dialogs/timeassignmentdialog.h rename to plugins/advancedviewplugin/dialogs/timeassignmentdialog.h diff --git a/zeiterfassunglib/dialogs/timeassignmentdialog.ui b/plugins/advancedviewplugin/dialogs/timeassignmentdialog.ui similarity index 100% rename from zeiterfassunglib/dialogs/timeassignmentdialog.ui rename to plugins/advancedviewplugin/dialogs/timeassignmentdialog.ui diff --git a/plugins/advancedviewplugin/models/bookingsmodel.cpp b/plugins/advancedviewplugin/models/bookingsmodel.cpp new file mode 100644 index 0000000..15a4896 --- /dev/null +++ b/plugins/advancedviewplugin/models/bookingsmodel.cpp @@ -0,0 +1,88 @@ +#include "bookingsmodel.h" + +#include "stripswidget.h" + +BookingsModel::BookingsModel(StripsWidget &stripsWidget, QObject *parent) : + QAbstractListModel(parent), + m_stripsWidget(stripsWidget) +{ + connect(&stripsWidget, &StripsWidget::bookingsChanged, this, &BookingsModel::bookingsChanged); + connect(&stripsWidget, &StripsWidget::refreshingBookingsChanged, this, &BookingsModel::enabledChanged); +} + +StripsWidget &BookingsModel::stripsWidget() const +{ + return m_stripsWidget; +} + +bool BookingsModel::enabled() const +{ + return !m_stripsWidget.refreshingBookings(); +} + +int BookingsModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + + return m_stripsWidget.bookings().count(); +} + +int BookingsModel::columnCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + + return 5; +} + +QVariant BookingsModel::data(const QModelIndex &index, int role) const +{ + Q_ASSERT(index.row() < m_stripsWidget.bookings().count()); + const auto &booking = m_stripsWidget.bookings().at(index.row()); + + switch(role) + { + case Qt::DisplayRole: + case Qt::EditRole: + switch(index.column()) + { + case 0: return booking.id; + case 1: return booking.time; + case 2: return booking.timespan; + case 3: return booking.type; + case 4: return booking.text; + } + } + + return QVariant(); +} + +QVariant BookingsModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + switch(orientation) + { + case Qt::Horizontal: + switch(role) + { + case Qt::DisplayRole: + case Qt::EditRole: + switch(section) + { + case 0: return tr("ID"); + case 1: return tr("Time"); + case 2: return tr("Timespan"); + case 3: return tr("Type"); + case 4: return tr("Text"); + } + } + default: + qt_noop(); + } + + return QVariant(); +} + +void BookingsModel::bookingsChanged() +{ + beginResetModel(); + endResetModel(); +} diff --git a/zeiterfassunglib/models/bookingsmodel.h b/plugins/advancedviewplugin/models/bookingsmodel.h similarity index 67% rename from zeiterfassunglib/models/bookingsmodel.h rename to plugins/advancedviewplugin/models/bookingsmodel.h index c6a0e5e..0c02b3e 100644 --- a/zeiterfassunglib/models/bookingsmodel.h +++ b/plugins/advancedviewplugin/models/bookingsmodel.h @@ -12,14 +12,12 @@ class StripsWidget; class ZEITERFASSUNGLIBSHARED_EXPORT BookingsModel : public QAbstractListModel { Q_OBJECT - Q_PROPERTY(StripsWidget* stripsWidget READ stripsWidget WRITE setStripsWidget NOTIFY stripsWidgetChanged) Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged) public: - explicit BookingsModel(QObject *parent = Q_NULLPTR); + explicit BookingsModel(StripsWidget &stripsWidget, QObject *parent = Q_NULLPTR); - StripsWidget *stripsWidget() const; - void setStripsWidget(StripsWidget *stripsWidget); + StripsWidget &stripsWidget() const; bool enabled() const; @@ -30,16 +28,13 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE; Q_SIGNALS: - void stripsWidgetChanged(StripsWidget *stripsWidget); void enabledChanged(bool enabled); private Q_SLOTS: void bookingsChanged(); - void refreshingChanged(bool refreshing); private: - StripsWidget *m_stripsWidget; - bool m_enabled; + StripsWidget &m_stripsWidget; }; #endif // BOOKINGSMODEL_H diff --git a/plugins/advancedviewplugin/models/timeassignmentsmodel.cpp b/plugins/advancedviewplugin/models/timeassignmentsmodel.cpp new file mode 100644 index 0000000..623efba --- /dev/null +++ b/plugins/advancedviewplugin/models/timeassignmentsmodel.cpp @@ -0,0 +1,92 @@ +#include "timeassignmentsmodel.h" + +#include "stripswidget.h" + +TimeAssignmentsModel::TimeAssignmentsModel(StripsWidget &stripsWidget, QObject *parent) : + QAbstractListModel(parent), + m_stripsWidget(stripsWidget) +{ + connect(&stripsWidget, &StripsWidget::timeAssignmentsChanged, this, &TimeAssignmentsModel::timeAssignmentsChanged); + connect(&stripsWidget, &StripsWidget::refreshingBookingsChanged, this, &TimeAssignmentsModel::enabledChanged); +} + +StripsWidget &TimeAssignmentsModel::stripsWidget() const +{ + return m_stripsWidget; +} + +bool TimeAssignmentsModel::enabled() const +{ + return !m_stripsWidget.refreshingTimeAssignments(); +} + +int TimeAssignmentsModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + + return m_stripsWidget.timeAssignments().count(); +} + +int TimeAssignmentsModel::columnCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + + return 7; +} + +QVariant TimeAssignmentsModel::data(const QModelIndex &index, int role) const +{ + Q_ASSERT(index.row() < m_stripsWidget.timeAssignments().count()); + const auto &timeAssignment = m_stripsWidget.timeAssignments().at(index.row()); + + switch(role) + { + case Qt::DisplayRole: + case Qt::EditRole: + switch(index.column()) + { + case 0: return timeAssignment.id; + case 1: return timeAssignment.time; + case 2: return timeAssignment.timespan; + case 3: return timeAssignment.project; + case 4: return timeAssignment.subproject; + case 5: return timeAssignment.workpackage; + case 6: return timeAssignment.text; + } + } + + return QVariant(); +} + +QVariant TimeAssignmentsModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + switch(orientation) + { + case Qt::Horizontal: + switch(role) + { + case Qt::DisplayRole: + case Qt::EditRole: + switch(section) + { + case 0: return tr("ID"); + case 1: return tr("Time"); + case 2: return tr("Timespan"); + case 3: return tr("Project"); + case 4: return tr("Subproject"); + case 5: return tr("Workpackage"); + case 6: return tr("Text"); + } + } + default: + qt_noop(); + } + + return QVariant(); +} + +void TimeAssignmentsModel::timeAssignmentsChanged() +{ + beginResetModel(); + endResetModel(); +} diff --git a/zeiterfassunglib/models/timeassignmentsmodel.h b/plugins/advancedviewplugin/models/timeassignmentsmodel.h similarity index 75% rename from zeiterfassunglib/models/timeassignmentsmodel.h rename to plugins/advancedviewplugin/models/timeassignmentsmodel.h index a860a40..b4bb8f3 100644 --- a/zeiterfassunglib/models/timeassignmentsmodel.h +++ b/plugins/advancedviewplugin/models/timeassignmentsmodel.h @@ -12,14 +12,12 @@ class StripsWidget; class ZEITERFASSUNGLIBSHARED_EXPORT TimeAssignmentsModel : public QAbstractListModel { Q_OBJECT - Q_PROPERTY(StripsWidget* stripsWidget READ stripsWidget WRITE setStripsWidget NOTIFY stripsWidgetChanged) Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged) public: - explicit TimeAssignmentsModel(QObject *parent = Q_NULLPTR); + explicit TimeAssignmentsModel(StripsWidget &stripsWidget, QObject *parent = Q_NULLPTR); - StripsWidget *stripsWidget() const; - void setStripsWidget(StripsWidget *stripsWidget); + StripsWidget &stripsWidget() const; bool enabled() const; @@ -38,8 +36,7 @@ private Q_SLOTS: void refreshingChanged(bool refreshing); private: - StripsWidget *m_stripsWidget; - bool m_enabled; + StripsWidget &m_stripsWidget; }; #endif // TIMEASSIGNMENTSMODEL_H diff --git a/plugins/advancedviewplugin/views/bookingsview.cpp b/plugins/advancedviewplugin/views/bookingsview.cpp deleted file mode 100644 index 07e5b0f..0000000 --- a/plugins/advancedviewplugin/views/bookingsview.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "bookingsview.h" - -BookingsView::BookingsView(QWidget *parent) : - QTreeView(parent) -{ - -} diff --git a/plugins/advancedviewplugin/views/bookingsview.h b/plugins/advancedviewplugin/views/bookingsview.h deleted file mode 100644 index 97966f3..0000000 --- a/plugins/advancedviewplugin/views/bookingsview.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef BOOKINGSVIEW_H -#define BOOKINGSVIEW_H - -#include - -class BookingsView : public QTreeView -{ - Q_OBJECT - -public: - explicit BookingsView(QWidget *parent = Q_NULLPTR); -}; - -#endif // BOOKINGSVIEW_H diff --git a/plugins/advancedviewplugin/views/timeassignmentsview.cpp b/plugins/advancedviewplugin/views/timeassignmentsview.cpp deleted file mode 100644 index 4d862c5..0000000 --- a/plugins/advancedviewplugin/views/timeassignmentsview.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "timeassignmentsview.h" - -TimeAssignmentsView::TimeAssignmentsView(QWidget *parent) : - QTreeView(parent) -{ - -} diff --git a/plugins/advancedviewplugin/views/timeassignmentsview.h b/plugins/advancedviewplugin/views/timeassignmentsview.h deleted file mode 100644 index 3064a33..0000000 --- a/plugins/advancedviewplugin/views/timeassignmentsview.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef TIMEASSIGNMENTSVIEW_H -#define TIMEASSIGNMENTSVIEW_H - -#include - -class TimeAssignmentsView : public QTreeView -{ - Q_OBJECT - -public: - explicit TimeAssignmentsView(QWidget *parent = 0); -}; - -#endif // TIMEASSIGNMENTSVIEW_H diff --git a/zeiterfassunglib/mainwindow.cpp b/zeiterfassunglib/mainwindow.cpp index 87eeb07..6c3e90d 100644 --- a/zeiterfassunglib/mainwindow.cpp +++ b/zeiterfassunglib/mainwindow.cpp @@ -21,21 +21,13 @@ #include "stripfactory.h" #include "stripswidget.h" #include "dialogs/aboutmedialog.h" -#include "dialogs/bookingdialog.h" -#include "dialogs/timeassignmentdialog.h" #include "dialogs/settingsdialog.h" #include "dialogs/updatedialog.h" -#include "models/bookingsmodel.h" -#include "models/timeassignmentsmodel.h" #include "replies/getprojectsreply.h" #include "replies/getauswertungreply.h" -#include "replies/updatebookingreply.h" -#include "replies/deletebookingreply.h" #include "replies/createbookingreply.h" -#include "replies/updatetimeassignmentreply.h" -#include "replies/deletetimeassignmentreply.h" #include "replies/createtimeassignmentreply.h" -#include "replies/createbookingreply.h" +#include "replies/updatetimeassignmentreply.h" MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfassung, const GetUserInfoReply::UserInfo &userInfo, StripFactory &stripFactory, QWidget *parent) : @@ -47,15 +39,13 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass m_stripFactory(stripFactory), m_getProjectsReply(Q_NULLPTR), m_getAuswertungReply(Q_NULLPTR), - m_bookingsModel(new BookingsModel(this)), - m_timeAssignmentsModel(new TimeAssignmentsModel(this)), m_currentStripWidget(Q_NULLPTR) { ui->setupUi(this); for(quint8 i = 0; i < 7; i++) { - m_stripsWidgets[i] = new StripsWidget(*this); + m_stripsWidgets[i] = new StripsWidget(*this, ui->widgetWeek); connect(m_stripsWidgets[i], &StripsWidget::refreshingChanged, this, &MainWindow::refreshingChanged); ui->layoutWeek->addWidget(m_stripsWidgets[i]); } @@ -100,14 +90,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass connect(ui->pushButtonStart, &QAbstractButton::pressed, this, &MainWindow::pushButtonStartPressed); connect(ui->pushButtonEnd, &QAbstractButton::pressed, this, &MainWindow::pushButtonEndPressed); - ui->treeViewBookings->setModel(m_bookingsModel); - connect(m_bookingsModel, &BookingsModel::enabledChanged, ui->treeViewBookings, &QWidget::setEnabled); - connect(ui->treeViewBookings, &QWidget::customContextMenuRequested, this, &MainWindow::contextMenuBooking); - - ui->treeViewTimeAssignments->setModel(m_timeAssignmentsModel); - connect(m_timeAssignmentsModel, &TimeAssignmentsModel::enabledChanged, ui->treeViewTimeAssignments, &QWidget::setEnabled); - connect(ui->treeViewTimeAssignments, &QWidget::customContextMenuRequested, this, &MainWindow::contextMenuTimeAssignment); - ui->statusbar->addPermanentWidget(m_balanceLabel = new QLabel(ui->statusbar)); m_balanceLabel->setFrameShape(QFrame::Panel); m_balanceLabel->setFrameShadow(QFrame::Sunken); @@ -254,225 +236,6 @@ void MainWindow::getAuswertungFinished() m_getAuswertungReply = Q_NULLPTR; } -void MainWindow::contextMenuBooking(const QPoint &pos) -{ - auto index = ui->treeViewBookings->indexAt(pos); - - if(!index.isValid()) - { - QMenu menu; - auto createAction = menu.addAction(tr("Create booking")); - auto refreshAction = menu.addAction(QIcon(QPixmap(QStringLiteral(":/zeiterfassunglib/images/refresh.png"))), tr("Refresh bookings")); - auto selectedAction = menu.exec(ui->treeViewBookings->viewport()->mapToGlobal(pos)); - if(selectedAction == createAction) - { - BookingDialog dialog(this); - dialog.setTime(timeNormalise(QTime::currentTime())); - again2: - if(dialog.exec() == QDialog::Accepted) - { - auto reply = m_erfassung.doCreateBooking(m_userInfo.userId, ui->dateEditDate->date(), - dialog.getTime(), dialog.getTimespan(), - dialog.getType(), dialog.getText()); - - { - QEventLoop eventLoop; - connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } - - if(reply->success()) - { - m_currentStripWidget->refreshBookings(); - } - else - { - QMessageBox::warning(this, tr("Could not create booking!"), tr("Could not create booking!") % "\n\n" % reply->message()); - goto again2; - } - } - } - else if(selectedAction == refreshAction) - { - m_currentStripWidget->refreshBookings(); - } - } - else - { - auto booking = m_currentStripWidget->bookings().at(index.row()); - - QMenu menu; - auto editAction = menu.addAction(tr("Edit booking")); - auto deleteAction = menu.addAction(tr("Delete booking")); - auto selectedAction = menu.exec(ui->treeViewBookings->viewport()->mapToGlobal(pos)); - if(selectedAction == editAction) - { - BookingDialog dialog(this); - dialog.setTime(booking.time); - dialog.setTimespan(booking.timespan); - dialog.setType(booking.type); - dialog.setText(booking.text); - again1: - if(dialog.exec() == QDialog::Accepted) - { - auto reply = m_erfassung.doUpdateBooking(booking.id, m_userInfo.userId, ui->dateEditDate->date(), - dialog.getTime(), dialog.getTimespan(), - dialog.getType(), dialog.getText()); - - { - QEventLoop eventLoop; - connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } - - if(reply->success()) - { - m_currentStripWidget->refreshBookings(); - } - else - { - QMessageBox::warning(this, tr("Could not edit booking!"), tr("Could not edit booking!") % "\n\n" % reply->message()); - goto again1; - } - } - } - else if(selectedAction == deleteAction) - { - QMessageBox msgBox; - msgBox.setText(tr("Do you really want to delete the booking?")); - msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); - msgBox.setDefaultButton(QMessageBox::Cancel); - if(msgBox.exec() == QMessageBox::Yes) - { - auto reply = m_erfassung.doDeleteBooking(booking.id); - - { - QEventLoop eventLoop; - connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } - - if(reply->success()) - m_currentStripWidget->refreshBookings(); - else - QMessageBox::warning(this, tr("Could not delete booking!"), tr("Could not delete booking!") % "\n\n" % reply->message()); - } - } - } -} - -void MainWindow::contextMenuTimeAssignment(const QPoint &pos) -{ - auto index = ui->treeViewTimeAssignments->indexAt(pos); - - if(!index.isValid()) - { - QMenu menu; - auto createAction = menu.addAction(tr("Create time assignment")); - auto refreshAction = menu.addAction(QIcon(QPixmap(QStringLiteral(":/zeiterfassunglib/images/refresh.png"))), tr("Refresh time assignments")); - auto selectedAction = menu.exec(ui->treeViewTimeAssignments->viewport()->mapToGlobal(pos)); - if(selectedAction == createAction) - { - TimeAssignmentDialog dialog(m_projects, m_settings, this); - again2: - if(dialog.exec() == QDialog::Accepted) - { - auto reply = m_erfassung.doCreateTimeAssignment(m_userInfo.userId, ui->dateEditDate->date(), - dialog.getTime(), dialog.getTimespan(), - dialog.getProject(), dialog.getSubproject(), - dialog.getWorkpackage(), dialog.getText()); - - { - QEventLoop eventLoop; - connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } - - if(reply->success()) - { - m_currentStripWidget->refreshTimeAssignments(); - } - else - { - QMessageBox::warning(this, tr("Could not create time assignment!"), tr("Could not create time assignment!") % "\n\n" % reply->message()); - goto again2; - } - } - } - else if(selectedAction == refreshAction) - { - m_currentStripWidget->refreshTimeAssignments(); - } - } - else - { - auto timeAssignment = m_currentStripWidget->timeAssignments().at(index.row()); - - QMenu menu; - auto editAction = menu.addAction(tr("Edit time assignment")); - auto deleteAction = menu.addAction(tr("Delete time assignment")); - auto selectedAction = menu.exec(ui->treeViewTimeAssignments->viewport()->mapToGlobal(pos)); - if(selectedAction == editAction) - { - TimeAssignmentDialog dialog(m_projects, m_settings, this); - dialog.setTime(timeAssignment.time); - dialog.setTimespan(timeAssignment.timespan); - dialog.setProject(timeAssignment.project); - dialog.setSubproject(timeAssignment.subproject); - dialog.setWorkpackage(timeAssignment.workpackage); - dialog.setText(timeAssignment.text); - again1: - if(dialog.exec() == QDialog::Accepted) - { - auto reply = m_erfassung.doUpdateTimeAssignment(timeAssignment.id, m_userInfo.userId, ui->dateEditDate->date(), - dialog.getTime(), dialog.getTimespan(), - dialog.getProject(), dialog.getSubproject(), - dialog.getWorkpackage(), dialog.getText()); - - { - QEventLoop eventLoop; - connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } - - if(reply->success()) - { - m_currentStripWidget->refreshTimeAssignments(); - } - else - { - QMessageBox::warning(this, tr("Could not edit time assignment!"), tr("Could not edit time assignment!") % "\n\n" % reply->message()); - goto again1; - } - } - } - else if(selectedAction == deleteAction) - { - QMessageBox msgBox; - msgBox.setText(tr("Do you really want to delete the time assignment?")); - msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); - msgBox.setDefaultButton(QMessageBox::Cancel); - if(msgBox.exec() == QMessageBox::Yes) - { - auto reply = m_erfassung.doDeleteTimeAssignment(timeAssignment.id); - - { - QEventLoop eventLoop; - connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } - - if(reply->success()) - { - m_currentStripWidget->refreshTimeAssignments(); - } - else - QMessageBox::warning(this, tr("Could not delete time assignment!"), tr("Could not delete time assignment!") % "\n\n" % reply->message()); - } - } - } -} - void MainWindow::pushButtonStartPressed() { auto bookingsChanged = false; @@ -652,9 +415,6 @@ void MainWindow::dateChanged(bool force) m_currentStripWidget = m_stripsWidgets[i]; - m_bookingsModel->setStripsWidget(m_currentStripWidget); - m_timeAssignmentsModel->setStripsWidget(m_currentStripWidget); - minimumTimeChanged(); startEnabledChanged(); endEnabledChanged(); diff --git a/zeiterfassunglib/mainwindow.h b/zeiterfassunglib/mainwindow.h index e5e9e62..c74ae2a 100644 --- a/zeiterfassunglib/mainwindow.h +++ b/zeiterfassunglib/mainwindow.h @@ -47,8 +47,6 @@ public: private Q_SLOTS: void getProjectsFinished(); void getAuswertungFinished(); - void contextMenuBooking(const QPoint &pos); - void contextMenuTimeAssignment(const QPoint &pos); void pushButtonStartPressed(); void pushButtonEndPressed(); void dateChanged(bool force = false); diff --git a/zeiterfassunglib/mainwindow.ui b/zeiterfassunglib/mainwindow.ui index 1097f45..9bfdf0b 100644 --- a/zeiterfassunglib/mainwindow.ui +++ b/zeiterfassunglib/mainwindow.ui @@ -167,70 +167,26 @@ - - - 0 + + + QFrame::NoFrame - - - QFrame::NoFrame + + QFrame::Plain + + + true + + + + + 0 + 0 + 1393 + 440 + - - QFrame::Plain - - - true - - - Optimized view - - - - - 0 - 0 - 1389 - 409 - - - - - - - - Qt::Vertical - - - Advanced view - - - - Bookings - - - - - - Qt::CustomContextMenu - - - - - - - - Time assignments - - - - - - Qt::CustomContextMenu - - - - - + diff --git a/zeiterfassunglib/models/bookingsmodel.cpp b/zeiterfassunglib/models/bookingsmodel.cpp deleted file mode 100644 index cc95afd..0000000 --- a/zeiterfassunglib/models/bookingsmodel.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include "bookingsmodel.h" - -#include - -#include "stripswidget.h" - -BookingsModel::BookingsModel(QObject *parent) : - QAbstractListModel(parent), - m_stripsWidget(Q_NULLPTR), - m_enabled(false) -{ -} - -StripsWidget *BookingsModel::stripsWidget() const -{ - return m_stripsWidget; -} - -void BookingsModel::setStripsWidget(StripsWidget *stripsWidget) -{ - if(m_stripsWidget != stripsWidget) - { - if(m_stripsWidget) - { - disconnect(m_stripsWidget, &StripsWidget::bookingsChanged, this, &BookingsModel::bookingsChanged); - disconnect(m_stripsWidget, &StripsWidget::refreshingBookingsChanged, this, &BookingsModel::refreshingChanged); - } - - beginResetModel(); - Q_EMIT stripsWidgetChanged(m_stripsWidget = stripsWidget); - endResetModel(); - - if(m_stripsWidget) - { - connect(m_stripsWidget, &StripsWidget::bookingsChanged, this, &BookingsModel::bookingsChanged); - connect(m_stripsWidget, &StripsWidget::refreshingBookingsChanged, this, &BookingsModel::refreshingChanged); - - if(m_enabled == m_stripsWidget->refreshingBookings()) - Q_EMIT enabledChanged(m_enabled = !m_stripsWidget->refreshingBookings()); - } - else if(m_enabled) - Q_EMIT enabledChanged(m_enabled = false); - } -} - -bool BookingsModel::enabled() const -{ - return m_enabled; -} - -int BookingsModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - - return m_stripsWidget ? m_stripsWidget->bookings().count() : 0; -} - -int BookingsModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - - return 5; -} - -QVariant BookingsModel::data(const QModelIndex &index, int role) const -{ - Q_ASSERT(m_stripsWidget != Q_NULLPTR); - Q_ASSERT(index.row() < m_stripsWidget->bookings().count()); - const auto &booking = m_stripsWidget->bookings().at(index.row()); - - switch(role) - { - case Qt::DisplayRole: - case Qt::EditRole: - switch(index.column()) - { - case 0: return booking.id; - case 1: return booking.time; - case 2: return booking.timespan; - case 3: return booking.type; - case 4: return booking.text; - } - } - - return QVariant(); -} - -QVariant BookingsModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - switch(orientation) - { - case Qt::Horizontal: - switch(role) - { - case Qt::DisplayRole: - case Qt::EditRole: - switch(section) - { - case 0: return tr("ID"); - case 1: return tr("Time"); - case 2: return tr("Timespan"); - case 3: return tr("Type"); - case 4: return tr("Text"); - } - } - default: - qt_noop(); - } - - return QVariant(); -} - -void BookingsModel::bookingsChanged() -{ - beginResetModel(); - endResetModel(); -} - -void BookingsModel::refreshingChanged(bool refreshing) -{ - if(m_enabled == refreshing) - Q_EMIT enabledChanged(m_enabled = !refreshing); -} diff --git a/zeiterfassunglib/models/timeassignmentsmodel.cpp b/zeiterfassunglib/models/timeassignmentsmodel.cpp deleted file mode 100644 index 6080dc3..0000000 --- a/zeiterfassunglib/models/timeassignmentsmodel.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include "timeassignmentsmodel.h" - -#include - -#include "stripswidget.h" - -TimeAssignmentsModel::TimeAssignmentsModel(QObject *parent) : - QAbstractListModel(parent), - m_stripsWidget(Q_NULLPTR), - m_enabled(false) -{ -} - -StripsWidget *TimeAssignmentsModel::stripsWidget() const -{ - return m_stripsWidget; -} - -void TimeAssignmentsModel::setStripsWidget(StripsWidget *stripsWidget) -{ - if(m_stripsWidget != stripsWidget) - { - if(m_stripsWidget) - { - disconnect(m_stripsWidget, &StripsWidget::timeAssignmentsChanged, this, &TimeAssignmentsModel::timeAssignmentsChanged); - disconnect(m_stripsWidget, &StripsWidget::refreshingTimeAssignmentsChanged, this, &TimeAssignmentsModel::refreshingChanged); - } - - beginResetModel(); - m_stripsWidget = stripsWidget; - endResetModel(); - - if(m_stripsWidget) - { - connect(m_stripsWidget, &StripsWidget::timeAssignmentsChanged, this, &TimeAssignmentsModel::timeAssignmentsChanged); - connect(m_stripsWidget, &StripsWidget::refreshingTimeAssignmentsChanged, this, &TimeAssignmentsModel::refreshingChanged); - - if(m_enabled == m_stripsWidget->refreshingTimeAssignments()) - Q_EMIT enabledChanged(m_enabled = !m_stripsWidget->refreshingTimeAssignments()); - } - else if(m_enabled) - Q_EMIT enabledChanged(m_enabled = false); - } -} - -bool TimeAssignmentsModel::enabled() const -{ - return m_enabled; -} - -int TimeAssignmentsModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - - return m_stripsWidget ? m_stripsWidget->timeAssignments().count() : 0; -} - -int TimeAssignmentsModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - - return 7; -} - -QVariant TimeAssignmentsModel::data(const QModelIndex &index, int role) const -{ - Q_ASSERT(m_stripsWidget != Q_NULLPTR); - Q_ASSERT(index.row() < m_stripsWidget->timeAssignments().count()); - const auto &timeAssignment = m_stripsWidget->timeAssignments().at(index.row()); - - switch(role) - { - case Qt::DisplayRole: - case Qt::EditRole: - switch(index.column()) - { - case 0: return timeAssignment.id; - case 1: return timeAssignment.time; - case 2: return timeAssignment.timespan; - case 3: return timeAssignment.project; - case 4: return timeAssignment.subproject; - case 5: return timeAssignment.workpackage; - case 6: return timeAssignment.text; - } - } - - return QVariant(); -} - -QVariant TimeAssignmentsModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - switch(orientation) - { - case Qt::Horizontal: - switch(role) - { - case Qt::DisplayRole: - case Qt::EditRole: - switch(section) - { - case 0: return tr("ID"); - case 1: return tr("Time"); - case 2: return tr("Timespan"); - case 3: return tr("Project"); - case 4: return tr("Subproject"); - case 5: return tr("Workpackage"); - case 6: return tr("Text"); - } - } - default: - qt_noop(); - } - - return QVariant(); -} - -void TimeAssignmentsModel::timeAssignmentsChanged() -{ - beginResetModel(); - endResetModel(); -} - -void TimeAssignmentsModel::refreshingChanged(bool refreshing) -{ - if(m_enabled == refreshing) - Q_EMIT enabledChanged(m_enabled = !refreshing); -} diff --git a/zeiterfassunglib/stripswidget.cpp b/zeiterfassunglib/stripswidget.cpp index 1896485..31d061a 100644 --- a/zeiterfassunglib/stripswidget.cpp +++ b/zeiterfassunglib/stripswidget.cpp @@ -12,8 +12,8 @@ #include "timeutils.h" #include "stripfactory.h" -StripsWidget::StripsWidget(MainWindow &mainWindow) : - QWidget(&mainWindow), +StripsWidget::StripsWidget(MainWindow &mainWindow, QWidget *parent) : + QWidget(parent), m_mainWindow(mainWindow), m_refreshing(false), m_refreshingBookings(false), diff --git a/zeiterfassunglib/stripswidget.h b/zeiterfassunglib/stripswidget.h index 3cc1a8c..c1b2b64 100644 --- a/zeiterfassunglib/stripswidget.h +++ b/zeiterfassunglib/stripswidget.h @@ -21,7 +21,7 @@ class ZEITERFASSUNGLIBSHARED_EXPORT StripsWidget : public QWidget Q_OBJECT public: - explicit StripsWidget(MainWindow &mainWindow); + explicit StripsWidget(MainWindow &mainWindow, QWidget *parent = Q_NULLPTR); MainWindow &mainWindow() const; diff --git a/zeiterfassunglib/zeiterfassunglib.pro b/zeiterfassunglib/zeiterfassunglib.pro index 4b10025..62c40c9 100644 --- a/zeiterfassunglib/zeiterfassunglib.pro +++ b/zeiterfassunglib/zeiterfassunglib.pro @@ -19,13 +19,9 @@ SOURCES += mainwindow.cpp \ zeiterfassungsettings.cpp \ dialogs/aboutmedialog.cpp \ dialogs/authenticationdialog.cpp \ - dialogs/bookingdialog.cpp \ dialogs/languageselectiondialog.cpp \ dialogs/settingsdialog.cpp \ - dialogs/timeassignmentdialog.cpp \ dialogs/updatedialog.cpp \ - models/bookingsmodel.cpp \ - models/timeassignmentsmodel.cpp \ replies/createbookingreply.cpp \ replies/createtimeassignmentreply.cpp \ replies/deletebookingreply.cpp \ @@ -40,7 +36,7 @@ SOURCES += mainwindow.cpp \ replies/updatebookingreply.cpp \ replies/updatetimeassignmentreply.cpp \ replies/zeiterfassungreply.cpp \ - replies/getuserinforeply.cpp + replies/getuserinforeply.cpp HEADERS += cpp14polyfills.h \ mainwindow.h \ @@ -53,13 +49,9 @@ HEADERS += cpp14polyfills.h \ zeiterfassungsettings.h \ dialogs/aboutmedialog.h \ dialogs/authenticationdialog.h \ - dialogs/bookingdialog.h \ dialogs/languageselectiondialog.h \ dialogs/settingsdialog.h \ - dialogs/timeassignmentdialog.h \ dialogs/updatedialog.h \ - models/bookingsmodel.h \ - models/timeassignmentsmodel.h \ replies/createbookingreply.h \ replies/createtimeassignmentreply.h \ replies/deletebookingreply.h \ @@ -74,16 +66,14 @@ HEADERS += cpp14polyfills.h \ replies/updatebookingreply.h \ replies/updatetimeassignmentreply.h \ replies/zeiterfassungreply.h \ - replies/getuserinforeply.h + replies/getuserinforeply.h FORMS += mainwindow.ui \ dialogs/updatedialog.ui \ dialogs/settingsdialog.ui \ dialogs/languageselectiondialog.ui \ dialogs/authenticationdialog.ui \ - dialogs/bookingdialog.ui \ - dialogs/aboutmedialog.ui \ - dialogs/timeassignmentdialog.ui + dialogs/aboutmedialog.ui RESOURCES += resources.qrc