From 22646bc946b2ac17aa6c14f92bb31c4bb8b149b9 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Wed, 13 Dec 2017 23:59:14 +0100 Subject: [PATCH] Introduced std::unique_ptr to avoid memory leaks --- dialogs/aboutmedialog.ui | 32 +++++++-- images/about.png | Bin 0 -> 5513 bytes images/help.png | Bin 0 -> 4971 bytes images/user.png | Bin 0 -> 5577 bytes main.cpp | 18 +----- mainwindow.cpp | 90 ++++++++------------------ mainwindow.h | 6 +- mainwindow.ui | 18 ++++++ replies/createbookingreply.cpp | 8 +-- replies/createbookingreply.h | 10 +-- replies/createtimeassignmentreply.cpp | 8 +-- replies/createtimeassignmentreply.h | 10 +-- replies/deletebookingreply.cpp | 9 +-- replies/deletebookingreply.h | 10 +-- replies/deletetimeassignmentreply.cpp | 9 +-- replies/deletetimeassignmentreply.h | 10 +-- replies/getauswertungreply.cpp | 16 ++--- replies/getauswertungreply.h | 9 +-- replies/getbookingsreply.cpp | 8 +-- replies/getbookingsreply.h | 9 +-- replies/getprojectsreply.cpp | 8 +-- replies/getprojectsreply.h | 9 +-- replies/gettimeassignmentsreply.cpp | 7 +- replies/gettimeassignmentsreply.h | 9 +-- replies/loginpagereply.cpp | 7 +- replies/loginpagereply.h | 10 +-- replies/loginreply.cpp | 7 +- replies/loginreply.h | 10 +-- replies/updatebookingreply.cpp | 8 +-- replies/updatebookingreply.h | 10 +-- replies/updatetimeassignmentreply.cpp | 8 +-- replies/updatetimeassignmentreply.h | 10 +-- replies/userinforeply.cpp | 8 +-- replies/userinforeply.h | 10 +-- resources.qrc | 3 + stripfactory.cpp | 12 ++-- stripfactory.h | 9 ++- stripswidget.cpp | 14 ++-- stripswidget.h | 10 +-- zeiterfassung.pro | 2 +- zeiterfassungapi.cpp | 90 ++++++++++++++------------ zeiterfassungapi.h | 43 ++++++------ 42 files changed, 293 insertions(+), 291 deletions(-) create mode 100644 images/about.png create mode 100644 images/help.png create mode 100644 images/user.png diff --git a/dialogs/aboutmedialog.ui b/dialogs/aboutmedialog.ui index 6b6bc52..3564b77 100644 --- a/dialogs/aboutmedialog.ui +++ b/dialogs/aboutmedialog.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 236 + 454 + 0 @@ -19,7 +19,7 @@ About me - + @@ -124,8 +124,32 @@ + + + + QDialogButtonBox::Close + + + - + + + buttonBox + rejected() + AboutMeDialog + close() + + + 226 + 5 + + + 226 + 0 + + + + diff --git a/images/about.png b/images/about.png new file mode 100644 index 0000000000000000000000000000000000000000..b83e92690f3924b705dbafa712f98f50683c8744 GIT binary patch literal 5513 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 E0I9tt2><{9 literal 0 HcmV?d00001 diff --git a/images/user.png b/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e955fcc9165f5bc8b6b7ce89bc2263dcd199e8 GIT binary patch literal 5577 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 goto again1; } - - reply->deleteLater(); } splashScreen.showMessage(QCoreApplication::translate("main", "Authenticating...")); @@ -188,7 +185,7 @@ int main(int argc, char *argv[]) { QEventLoop eventLoop; - QObject::connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + QObject::connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -205,11 +202,8 @@ int main(int argc, char *argv[]) settings.setUsername(dialog.username()); settings.setPassword(dialog.password()); - reply->deleteLater(); goto again2; } - - reply->deleteLater(); } splashScreen.showMessage(QCoreApplication::translate("main", "Getting user information...")); @@ -221,7 +215,7 @@ int main(int argc, char *argv[]) { QEventLoop eventLoop; - QObject::connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + QObject::connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -229,13 +223,10 @@ int main(int argc, char *argv[]) { QMessageBox::warning(&splashScreen, QCoreApplication::translate("main", "Could not get user information!"), QCoreApplication::translate("main", "Could not get user information!") % "\n\n" % reply->message()); - - reply->deleteLater(); return -1; } userInfo = reply->userInfo(); - reply->deleteLater(); } splashScreen.showMessage(QCoreApplication::translate("main", "Loading strip layouts...")); @@ -256,7 +247,6 @@ int main(int argc, char *argv[]) QCoreApplication::translate("main", "Could not load strips!") % "\n\n" % stripFactory.errorString()); return -1; } - widget->deleteLater(); } { @@ -267,7 +257,6 @@ int main(int argc, char *argv[]) QCoreApplication::translate("main", "Could not load strips!") % "\n\n" % stripFactory.errorString()); return -1; } - widget->deleteLater(); } { @@ -278,7 +267,6 @@ int main(int argc, char *argv[]) QCoreApplication::translate("main", "Could not load strips!") % "\n\n" % stripFactory.errorString()); return -1; } - widget->deleteLater(); } MainWindow mainWindow(settings, erfassung, userInfo, stripFactory); diff --git a/mainwindow.cpp b/mainwindow.cpp index 5405732..5a3800e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -86,7 +86,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass connect(ui->pushButtonNow, &QAbstractButton::pressed, [=](){ ui->timeEditTime->setTime(QTime::currentTime()); }); m_getProjectsReply = erfassung.doGetProjects(userInfo.userId, QDate::currentDate()); - connect(m_getProjectsReply, &ZeiterfassungReply::finished, this, &MainWindow::getProjectsFinished); + connect(m_getProjectsReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getProjectsFinished); ui->comboBoxProject->setMaxVisibleItems(10); @@ -140,7 +140,6 @@ void MainWindow::getProjectsFinished() QMessageBox::warning(this, tr("Could not load bookings!"), tr("Could not load bookings!") % "\n\n" % m_getProjectsReply->message()); - m_getProjectsReply->deleteLater(); m_getProjectsReply = Q_NULLPTR; } @@ -161,7 +160,6 @@ void MainWindow::getAuswertungFinished() { m_auswertungDate = QDate(); QMessageBox::warning(this, tr("Could not load Auswertung!"), tr("Could not load Auswertung!") % "\n\n" % m_getAuswertungReply->message()); - m_getAuswertungReply->deleteLater(); m_getAuswertungReply = Q_NULLPTR; return; } @@ -202,7 +200,6 @@ void MainWindow::getAuswertungFinished() m_balanceLabel->setText(tr("%0: %1").arg(tr("Balance")).arg(gleitzeit)); m_holidaysLabel->setText(tr("%0: %1").arg(tr("Holidays")).arg(urlaubsAnspruch)); - m_getAuswertungReply->deleteLater(); m_getAuswertungReply = Q_NULLPTR; } @@ -229,7 +226,7 @@ void MainWindow::contextMenuBooking(const QPoint &pos) { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -240,11 +237,8 @@ void MainWindow::contextMenuBooking(const QPoint &pos) else { QMessageBox::warning(this, tr("Could not create booking!"), tr("Could not create booking!") % "\n\n" % reply->message()); - reply->deleteLater(); goto again2; } - - reply->deleteLater(); } } else if(selectedAction == refreshAction) @@ -276,7 +270,7 @@ void MainWindow::contextMenuBooking(const QPoint &pos) { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -287,11 +281,8 @@ void MainWindow::contextMenuBooking(const QPoint &pos) else { QMessageBox::warning(this, tr("Could not edit booking!"), tr("Could not edit booking!") % "\n\n" % reply->message()); - reply->deleteLater(); goto again1; } - - reply->deleteLater(); } } else if(selectedAction == deleteAction) @@ -306,18 +297,14 @@ void MainWindow::contextMenuBooking(const QPoint &pos) { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + 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()); - - reply->deleteLater(); } } } @@ -346,7 +333,7 @@ void MainWindow::contextMenuTimeAssignment(const QPoint &pos) { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -357,11 +344,8 @@ void MainWindow::contextMenuTimeAssignment(const QPoint &pos) else { QMessageBox::warning(this, tr("Could not create time assignment!"), tr("Could not create time assignment!") % "\n\n" % reply->message()); - reply->deleteLater(); goto again2; } - - reply->deleteLater(); } } else if(selectedAction == refreshAction) @@ -396,7 +380,7 @@ void MainWindow::contextMenuTimeAssignment(const QPoint &pos) { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -407,11 +391,8 @@ void MainWindow::contextMenuTimeAssignment(const QPoint &pos) else { QMessageBox::warning(this, tr("Could not edit time assignment!"), tr("Could not edit time assignment!") % "\n\n" % reply->message()); - reply->deleteLater(); goto again1; } - - reply->deleteLater(); } } else if(selectedAction == deleteAction) @@ -426,7 +407,7 @@ void MainWindow::contextMenuTimeAssignment(const QPoint &pos) { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -436,8 +417,6 @@ void MainWindow::contextMenuTimeAssignment(const QPoint &pos) } else QMessageBox::warning(this, tr("Could not delete time assignment!"), tr("Could not delete time assignment!") % "\n\n" % reply->message()); - - reply->deleteLater(); } } } @@ -456,7 +435,7 @@ void MainWindow::pushButtonStartPressed() { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -464,12 +443,9 @@ void MainWindow::pushButtonStartPressed() { QMessageBox::warning(this, tr("Could not create booking!"), tr("Could not create booking!") % "\n\n" % reply->message()); m_currentStripWidget->refresh(); - reply->deleteLater(); return; } - reply->deleteLater(); - bookingsChanged = true; } @@ -489,7 +465,7 @@ void MainWindow::pushButtonStartPressed() { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -499,34 +475,30 @@ void MainWindow::pushButtonStartPressed() { QMessageBox::warning(this, tr("Could not edit time assignment!"), tr("Could not edit time assignment!") % "\n\n" % reply->message()); m_currentStripWidget->refresh(); - reply->deleteLater(); return; } - - reply->deleteLater(); } } - auto reply = m_erfassung.doCreateTimeAssignment(m_userInfo.userId, ui->dateEditDate->date(), - timeAssignmentTime, QTime(0, 0), - ui->comboBoxProject->currentData().toString(), ui->comboBoxSubproject->currentText(), - ui->comboBoxWorkpackage->currentText(), ui->comboBoxText->currentText()); - { - QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); - eventLoop.exec(); - } + auto reply = m_erfassung.doCreateTimeAssignment(m_userInfo.userId, ui->dateEditDate->date(), + timeAssignmentTime, QTime(0, 0), + ui->comboBoxProject->currentData().toString(), ui->comboBoxSubproject->currentText(), + ui->comboBoxWorkpackage->currentText(), ui->comboBoxText->currentText()); - if(!reply->success()) - { - QMessageBox::warning(this, tr("Could not create time assignment!"), tr("Could not create time assignment!") % "\n\n" % reply->message()); - m_currentStripWidget->refresh(); - reply->deleteLater(); - return; - } + { + QEventLoop eventLoop; + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + } - reply->deleteLater(); + if(!reply->success()) + { + QMessageBox::warning(this, tr("Could not create time assignment!"), tr("Could not create time assignment!") % "\n\n" % reply->message()); + m_currentStripWidget->refresh(); + return; + } + } m_settings.prependProject(ui->comboBoxProject->currentData().toString()); m_settings.prependSubproject(ui->comboBoxSubproject->currentText()); @@ -566,7 +538,7 @@ void MainWindow::pushButtonEndPressed() { QEventLoop eventLoop; - connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit())); + connect(reply.get(), SIGNAL(finished()), &eventLoop, SLOT(quit())); eventLoop.exec(); } @@ -574,11 +546,8 @@ void MainWindow::pushButtonEndPressed() { QMessageBox::warning(this, tr("Could not edit time assignment!"), tr("Could not edit time assignment!") % "\n\n" % reply->message()); m_currentStripWidget->refresh(); - reply->deleteLater(); return; } - - reply->deleteLater(); } { @@ -588,7 +557,7 @@ void MainWindow::pushButtonEndPressed() { QEventLoop eventLoop; - connect(reply, &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); + connect(reply.get(), &ZeiterfassungReply::finished, &eventLoop, &QEventLoop::quit); eventLoop.exec(); } @@ -596,11 +565,8 @@ void MainWindow::pushButtonEndPressed() { QMessageBox::warning(this, tr("Could not create booking!"), tr("Could not create booking!") % "\n\n" % reply->message()); m_currentStripWidget->refresh(); - reply->deleteLater(); return; } - - reply->deleteLater(); } m_currentStripWidget->refresh(); @@ -745,7 +711,7 @@ void MainWindow::refreshAuswertung() m_auswertungDate = QDate(ui->dateEditDate->date().year(), ui->dateEditDate->date().month(), 1); m_getAuswertungReply = m_erfassung.doGetAuswertung(m_userInfo.userId, m_auswertungDate); - connect(m_getAuswertungReply, &ZeiterfassungReply::finished, this, &MainWindow::getAuswertungFinished); + connect(m_getAuswertungReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getAuswertungFinished); } void MainWindow::updateComboboxes() diff --git a/mainwindow.h b/mainwindow.h index df337ee..5d8421e 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -1,6 +1,8 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H +#include + #include #include @@ -52,8 +54,8 @@ private: const ZeiterfassungApi::UserInfo &m_userInfo; StripFactory &m_stripFactory; - GetProjectsReply *m_getProjectsReply; - GetAuswertungReply *m_getAuswertungReply; + std::unique_ptr m_getProjectsReply; + std::unique_ptr m_getAuswertungReply; BookingsModel *m_bookingsModel; TimeAssignmentsModel *m_timeAssignmentsModel; diff --git a/mainwindow.ui b/mainwindow.ui index 2737c4f..87a9f30 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -257,6 +257,7 @@ + @@ -302,11 +303,19 @@ + + + :/zeiterfassung/images/user.png:/zeiterfassung/images/user.png + About &Me + + + :/zeiterfassung/images/about.png:/zeiterfassung/images/about.png + About &zeiterfassung @@ -352,6 +361,15 @@ &Settings + + + + :/zeiterfassung/images/help.png:/zeiterfassung/images/help.png + + + Help + + diff --git a/replies/createbookingreply.cpp b/replies/createbookingreply.cpp index 9127140..07cd2c3 100644 --- a/replies/createbookingreply.cpp +++ b/replies/createbookingreply.cpp @@ -1,17 +1,16 @@ #include "createbookingreply.h" -#include #include #include #include #include -CreateBookingReply::CreateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +CreateBookingReply::CreateBookingReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply), + m_reply(std::move(reply)), m_bookingId(-1) { - connect(reply, &QNetworkReply::finished, this, &CreateBookingReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &CreateBookingReply::requestFinished); } int CreateBookingReply::bookingId() const @@ -59,7 +58,6 @@ void CreateBookingReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/createbookingreply.h b/replies/createbookingreply.h index dfa0d73..accc5dd 100644 --- a/replies/createbookingreply.h +++ b/replies/createbookingreply.h @@ -1,16 +1,18 @@ #ifndef CREATEBOOKINGREPLY_H #define CREATEBOOKINGREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class CreateBookingReply : public ZeiterfassungReply { Q_OBJECT public: - CreateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + CreateBookingReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); int bookingId() const; @@ -18,7 +20,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; int m_bookingId; }; diff --git a/replies/createtimeassignmentreply.cpp b/replies/createtimeassignmentreply.cpp index 9ff1ec4..51c3a62 100644 --- a/replies/createtimeassignmentreply.cpp +++ b/replies/createtimeassignmentreply.cpp @@ -1,17 +1,16 @@ #include "createtimeassignmentreply.h" -#include #include #include #include #include -CreateTimeAssignmentReply::CreateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +CreateTimeAssignmentReply::CreateTimeAssignmentReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply), + m_reply(std::move(reply)), m_timeAssignmentId(-1) { - connect(reply, &QNetworkReply::finished, this, &CreateTimeAssignmentReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &CreateTimeAssignmentReply::requestFinished); } int CreateTimeAssignmentReply::timeAssignmentId() const @@ -59,7 +58,6 @@ void CreateTimeAssignmentReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/createtimeassignmentreply.h b/replies/createtimeassignmentreply.h index bd9da80..634b907 100644 --- a/replies/createtimeassignmentreply.h +++ b/replies/createtimeassignmentreply.h @@ -1,16 +1,18 @@ #ifndef CREATETIMEASSIGNMENTREPLY_H #define CREATETIMEASSIGNMENTREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class CreateTimeAssignmentReply : public ZeiterfassungReply { Q_OBJECT public: - CreateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + CreateTimeAssignmentReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); int timeAssignmentId() const; @@ -18,7 +20,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; int m_timeAssignmentId; }; diff --git a/replies/deletebookingreply.cpp b/replies/deletebookingreply.cpp index c059365..5549f32 100644 --- a/replies/deletebookingreply.cpp +++ b/replies/deletebookingreply.cpp @@ -1,12 +1,10 @@ #include "deletebookingreply.h" -#include - -DeleteBookingReply::DeleteBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +DeleteBookingReply::DeleteBookingReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &DeleteBookingReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &DeleteBookingReply::requestFinished); } void DeleteBookingReply::requestFinished() @@ -23,7 +21,6 @@ void DeleteBookingReply::requestFinished() setSuccess(true); end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/deletebookingreply.h b/replies/deletebookingreply.h index 604f965..94796c4 100644 --- a/replies/deletebookingreply.h +++ b/replies/deletebookingreply.h @@ -1,22 +1,24 @@ #ifndef DELETEBOOKINGREPLY_H #define DELETEBOOKINGREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class DeleteBookingReply : public ZeiterfassungReply { Q_OBJECT public: - DeleteBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + DeleteBookingReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; }; #endif // DELETEBOOKINGREPLY_H diff --git a/replies/deletetimeassignmentreply.cpp b/replies/deletetimeassignmentreply.cpp index 9412e1d..5c3ea75 100644 --- a/replies/deletetimeassignmentreply.cpp +++ b/replies/deletetimeassignmentreply.cpp @@ -1,12 +1,10 @@ #include "deletetimeassignmentreply.h" -#include - -DeleteTimeAssignmentReply::DeleteTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +DeleteTimeAssignmentReply::DeleteTimeAssignmentReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &DeleteTimeAssignmentReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &DeleteTimeAssignmentReply::requestFinished); } void DeleteTimeAssignmentReply::requestFinished() @@ -23,7 +21,6 @@ void DeleteTimeAssignmentReply::requestFinished() setSuccess(true); end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/deletetimeassignmentreply.h b/replies/deletetimeassignmentreply.h index 10e7a1c..b2a545e 100644 --- a/replies/deletetimeassignmentreply.h +++ b/replies/deletetimeassignmentreply.h @@ -1,22 +1,24 @@ #ifndef DELETETIMEASSIGNMENT_H #define DELETETIMEASSIGNMENT_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class DeleteTimeAssignmentReply : public ZeiterfassungReply { Q_OBJECT public: - DeleteTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + DeleteTimeAssignmentReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; }; #endif // DELETETIMEASSIGNMENT_H diff --git a/replies/getauswertungreply.cpp b/replies/getauswertungreply.cpp index 8c2ad8a..3a2e0bd 100644 --- a/replies/getauswertungreply.cpp +++ b/replies/getauswertungreply.cpp @@ -1,14 +1,12 @@ #include "getauswertungreply.h" -#include - #include "zeiterfassungapi.h" -GetAuswertungReply::GetAuswertungReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +GetAuswertungReply::GetAuswertungReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &GetAuswertungReply::request0Finished); + connect(m_reply.get(), &QNetworkReply::finished, this, &GetAuswertungReply::request0Finished); } const QByteArray &GetAuswertungReply::auswertung() const @@ -22,7 +20,6 @@ void GetAuswertungReply::request0Finished() { setSuccess(false); setMessage(tr("Request error occured: %0").arg(m_reply->error())); - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); return; @@ -31,10 +28,8 @@ void GetAuswertungReply::request0Finished() QUrl url(zeiterfassung()->url()); url.setPath(QString(m_reply->readAll())); - m_reply->deleteLater(); - - m_reply = zeiterfassung()->manager()->get(QNetworkRequest(url)); - connect(m_reply, &QNetworkReply::finished, this, &GetAuswertungReply::request1Finished); + m_reply = std::unique_ptr(zeiterfassung()->manager()->get(QNetworkRequest(url))); + connect(m_reply.get(), &QNetworkReply::finished, this, &GetAuswertungReply::request1Finished); } void GetAuswertungReply::request1Finished() @@ -50,7 +45,6 @@ void GetAuswertungReply::request1Finished() m_auswertung = m_reply->readAll(); end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/getauswertungreply.h b/replies/getauswertungreply.h index c42597d..b220880 100644 --- a/replies/getauswertungreply.h +++ b/replies/getauswertungreply.h @@ -1,18 +1,19 @@ #ifndef GETAUSWERTUNGREPLY_H #define GETAUSWERTUNGREPLY_H +#include + +#include #include #include "zeiterfassungreply.h" -class QNetworkReply; - class GetAuswertungReply : public ZeiterfassungReply { Q_OBJECT public: - GetAuswertungReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + GetAuswertungReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); const QByteArray &auswertung() const; @@ -21,7 +22,7 @@ private Q_SLOTS: void request1Finished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; QByteArray m_auswertung; }; diff --git a/replies/getbookingsreply.cpp b/replies/getbookingsreply.cpp index 7bab592..6f97f50 100644 --- a/replies/getbookingsreply.cpp +++ b/replies/getbookingsreply.cpp @@ -1,17 +1,16 @@ #include "getbookingsreply.h" -#include #include #include #include #include #include -GetBookingsReply::GetBookingsReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +GetBookingsReply::GetBookingsReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &GetBookingsReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &GetBookingsReply::requestFinished); } const QVector &GetBookingsReply::bookings() const @@ -65,7 +64,6 @@ void GetBookingsReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/getbookingsreply.h b/replies/getbookingsreply.h index 6dff267..459a426 100644 --- a/replies/getbookingsreply.h +++ b/replies/getbookingsreply.h @@ -1,19 +1,20 @@ #ifndef GETBOOKINGSREPLY_H #define GETBOOKINGSREPLY_H +#include + +#include #include #include "zeiterfassungreply.h" #include "zeiterfassungapi.h" -class QNetworkReply; - class GetBookingsReply : public ZeiterfassungReply { Q_OBJECT public: - GetBookingsReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + GetBookingsReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); const QVector &bookings() const; @@ -21,7 +22,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; QVector m_bookings; }; diff --git a/replies/getprojectsreply.cpp b/replies/getprojectsreply.cpp index 687e4fd..ab2fb73 100644 --- a/replies/getprojectsreply.cpp +++ b/replies/getprojectsreply.cpp @@ -1,17 +1,16 @@ #include "getprojectsreply.h" -#include #include #include #include #include #include -GetProjectsReply::GetProjectsReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +GetProjectsReply::GetProjectsReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &GetProjectsReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &GetProjectsReply::requestFinished); } const QVector &GetProjectsReply::projects() const @@ -79,7 +78,6 @@ void GetProjectsReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/getprojectsreply.h b/replies/getprojectsreply.h index d7231bb..faa4886 100644 --- a/replies/getprojectsreply.h +++ b/replies/getprojectsreply.h @@ -1,19 +1,20 @@ #ifndef GETPROJECTSREPLY_H #define GETPROJECTSREPLY_H +#include + +#include #include #include "zeiterfassungreply.h" #include "zeiterfassungapi.h" -class QNetworkReply; - class GetProjectsReply : public ZeiterfassungReply { Q_OBJECT public: - GetProjectsReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + GetProjectsReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); const QVector &projects() const; @@ -21,7 +22,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; QVector m_projects; }; diff --git a/replies/gettimeassignmentsreply.cpp b/replies/gettimeassignmentsreply.cpp index 14bf9dc..bd86c93 100644 --- a/replies/gettimeassignmentsreply.cpp +++ b/replies/gettimeassignmentsreply.cpp @@ -7,11 +7,11 @@ #include #include -GetTimeAssignmentsReply::GetTimeAssignmentsReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +GetTimeAssignmentsReply::GetTimeAssignmentsReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &GetTimeAssignmentsReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &GetTimeAssignmentsReply::requestFinished); } const QVector &GetTimeAssignmentsReply::timeAssignments() const @@ -69,7 +69,6 @@ void GetTimeAssignmentsReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/gettimeassignmentsreply.h b/replies/gettimeassignmentsreply.h index dfdb628..153064e 100644 --- a/replies/gettimeassignmentsreply.h +++ b/replies/gettimeassignmentsreply.h @@ -1,19 +1,20 @@ #ifndef GETTIMEASSIGNMENTSREPLY_H #define GETTIMEASSIGNMENTSREPLY_H +#include + +#include #include #include "zeiterfassungreply.h" #include "zeiterfassungapi.h" -class QNetworkReply; - class GetTimeAssignmentsReply : public ZeiterfassungReply { Q_OBJECT public: - GetTimeAssignmentsReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + GetTimeAssignmentsReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); const QVector &timeAssignments() const; @@ -21,7 +22,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; QVector m_timeAssignments; }; diff --git a/replies/loginpagereply.cpp b/replies/loginpagereply.cpp index 206b7c7..f05f60e 100644 --- a/replies/loginpagereply.cpp +++ b/replies/loginpagereply.cpp @@ -2,11 +2,11 @@ #include -LoginPageReply::LoginPageReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +LoginPageReply::LoginPageReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &LoginPageReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &LoginPageReply::requestFinished); } void LoginPageReply::requestFinished() @@ -28,7 +28,6 @@ void LoginPageReply::requestFinished() setSuccess(true); end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/loginpagereply.h b/replies/loginpagereply.h index f8dfaee..203cb5d 100644 --- a/replies/loginpagereply.h +++ b/replies/loginpagereply.h @@ -1,22 +1,24 @@ #ifndef LOGINPAGEREPLY_H #define LOGINPAGEREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class LoginPageReply : public ZeiterfassungReply { Q_OBJECT public: - LoginPageReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + LoginPageReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; }; #endif // LOGINPAGEREPLY_H diff --git a/replies/loginreply.cpp b/replies/loginreply.cpp index 675bc7b..a81971b 100644 --- a/replies/loginreply.cpp +++ b/replies/loginreply.cpp @@ -2,11 +2,11 @@ #include -LoginReply::LoginReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +LoginReply::LoginReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &LoginReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &LoginReply::requestFinished); } void LoginReply::requestFinished() @@ -48,7 +48,6 @@ void LoginReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/loginreply.h b/replies/loginreply.h index 5796daf..bcf7dc1 100644 --- a/replies/loginreply.h +++ b/replies/loginreply.h @@ -1,22 +1,24 @@ #ifndef LOGINREPLY_H #define LOGINREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class LoginReply : public ZeiterfassungReply { Q_OBJECT public: - LoginReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + LoginReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; }; #endif // LOGINREPLY_H diff --git a/replies/updatebookingreply.cpp b/replies/updatebookingreply.cpp index 59bc716..8feb6c9 100644 --- a/replies/updatebookingreply.cpp +++ b/replies/updatebookingreply.cpp @@ -1,17 +1,16 @@ #include "updatebookingreply.h" -#include #include #include #include #include -UpdateBookingReply::UpdateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +UpdateBookingReply::UpdateBookingReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply), + m_reply(std::move(reply)), m_bookingId(-1) { - connect(reply, &QNetworkReply::finished, this, &UpdateBookingReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &UpdateBookingReply::requestFinished); } void UpdateBookingReply::requestFinished() @@ -54,7 +53,6 @@ void UpdateBookingReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/updatebookingreply.h b/replies/updatebookingreply.h index a0fa90b..f61e179 100644 --- a/replies/updatebookingreply.h +++ b/replies/updatebookingreply.h @@ -1,22 +1,24 @@ #ifndef UPDATEBOOKINGREPLY_H #define UPDATEBOOKINGREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class UpdateBookingReply : public ZeiterfassungReply { Q_OBJECT public: - UpdateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + UpdateBookingReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; int m_bookingId; }; diff --git a/replies/updatetimeassignmentreply.cpp b/replies/updatetimeassignmentreply.cpp index c33bdb9..6a08740 100644 --- a/replies/updatetimeassignmentreply.cpp +++ b/replies/updatetimeassignmentreply.cpp @@ -1,17 +1,16 @@ #include "updatetimeassignmentreply.h" -#include #include #include #include #include -UpdateTimeAssignmentReply::UpdateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +UpdateTimeAssignmentReply::UpdateTimeAssignmentReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply), + m_reply(std::move(reply)), m_timeAssignmentId(-1) { - connect(reply, &QNetworkReply::finished, this, &UpdateTimeAssignmentReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &UpdateTimeAssignmentReply::requestFinished); } int UpdateTimeAssignmentReply::timeAssignmentId() const @@ -59,7 +58,6 @@ void UpdateTimeAssignmentReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/updatetimeassignmentreply.h b/replies/updatetimeassignmentreply.h index d053315..84b4cca 100644 --- a/replies/updatetimeassignmentreply.h +++ b/replies/updatetimeassignmentreply.h @@ -1,16 +1,18 @@ #ifndef UPDATETIMEASSIGNMENTREPLY_H #define UPDATETIMEASSIGNMENTREPLY_H -#include "zeiterfassungreply.h" +#include -class QNetworkReply; +#include + +#include "zeiterfassungreply.h" class UpdateTimeAssignmentReply : public ZeiterfassungReply { Q_OBJECT public: - UpdateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + UpdateTimeAssignmentReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); int timeAssignmentId() const; @@ -18,7 +20,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; int m_timeAssignmentId; }; diff --git a/replies/userinforeply.cpp b/replies/userinforeply.cpp index 07a9b4c..4e45625 100644 --- a/replies/userinforeply.cpp +++ b/replies/userinforeply.cpp @@ -1,16 +1,15 @@ #include "userinforeply.h" -#include #include #include #include #include -UserInfoReply::UserInfoReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : +UserInfoReply::UserInfoReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), - m_reply(reply) + m_reply(std::move(reply)) { - connect(reply, &QNetworkReply::finished, this, &UserInfoReply::requestFinished); + connect(m_reply.get(), &QNetworkReply::finished, this, &UserInfoReply::requestFinished); } const ZeiterfassungApi::UserInfo &UserInfoReply::userInfo() const @@ -75,7 +74,6 @@ void UserInfoReply::requestFinished() } end: - m_reply->deleteLater(); m_reply = Q_NULLPTR; Q_EMIT finished(); diff --git a/replies/userinforeply.h b/replies/userinforeply.h index a2f454b..aeee527 100644 --- a/replies/userinforeply.h +++ b/replies/userinforeply.h @@ -1,17 +1,19 @@ #ifndef USERINFOREPLY_H #define USERINFOREPLY_H +#include + +#include + #include "zeiterfassungreply.h" #include "zeiterfassungapi.h" -class QNetworkReply; - class UserInfoReply : public ZeiterfassungReply { Q_OBJECT public: - UserInfoReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + UserInfoReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); const ZeiterfassungApi::UserInfo &userInfo() const; @@ -19,7 +21,7 @@ private Q_SLOTS: void requestFinished(); private: - QNetworkReply *m_reply; + std::unique_ptr m_reply; ZeiterfassungApi::UserInfo m_userInfo; }; diff --git a/resources.qrc b/resources.qrc index bfcebf5..37eb951 100644 --- a/resources.qrc +++ b/resources.qrc @@ -1,7 +1,9 @@ + images/about.png images/auswertung.png images/authentication.png + images/help.png images/icon.png images/next.png images/now.png @@ -11,5 +13,6 @@ images/settings.png images/splash.png images/today.png + images/user.png diff --git a/stripfactory.cpp b/stripfactory.cpp index ea36ab6..d48b282 100644 --- a/stripfactory.cpp +++ b/stripfactory.cpp @@ -55,7 +55,7 @@ const QString &StripFactory::errorString() const return m_errorString; } -QWidget *StripFactory::createBookingStartStrip(QWidget *parent) +std::unique_ptr StripFactory::createBookingStartStrip(QWidget *parent) { QBuffer buffer(&m_bookingStartStrip); if(!buffer.open(QIODevice::ReadOnly)) @@ -64,7 +64,7 @@ QWidget *StripFactory::createBookingStartStrip(QWidget *parent) return Q_NULLPTR; } - auto widget = m_loader->load(&buffer, parent); + auto widget = std::unique_ptr(m_loader->load(&buffer, parent)); if(!widget) m_errorString = m_loader->errorString(); @@ -72,7 +72,7 @@ QWidget *StripFactory::createBookingStartStrip(QWidget *parent) return widget; } -QWidget *StripFactory::createBookingEndStrip(QWidget *parent) +std::unique_ptr StripFactory::createBookingEndStrip(QWidget *parent) { QBuffer buffer(&m_bookingEndStrip); if(!buffer.open(QIODevice::ReadOnly)) @@ -81,7 +81,7 @@ QWidget *StripFactory::createBookingEndStrip(QWidget *parent) return Q_NULLPTR; } - auto widget = m_loader->load(&buffer, parent); + auto widget = std::unique_ptr(m_loader->load(&buffer, parent)); if(!widget) m_errorString = m_loader->errorString(); @@ -89,7 +89,7 @@ QWidget *StripFactory::createBookingEndStrip(QWidget *parent) return widget; } -QWidget *StripFactory::createTimeAssignmentStrip(QWidget *parent) +std::unique_ptr StripFactory::createTimeAssignmentStrip(QWidget *parent) { QBuffer buffer(&m_timeAssignmentStrip); if(!buffer.open(QIODevice::ReadOnly)) @@ -98,7 +98,7 @@ QWidget *StripFactory::createTimeAssignmentStrip(QWidget *parent) return Q_NULLPTR; } - auto widget = m_loader->load(&buffer, parent); + auto widget = std::unique_ptr(m_loader->load(&buffer, parent)); if(!widget) m_errorString = m_loader->errorString(); diff --git a/stripfactory.h b/stripfactory.h index a8135ab..4aae50e 100644 --- a/stripfactory.h +++ b/stripfactory.h @@ -1,7 +1,10 @@ #ifndef STRIPFACTORY_H #define STRIPFACTORY_H +#include + #include +#include class QUiLoader; class QByteArray; @@ -16,9 +19,9 @@ public: bool load(const QString &stripsPath); const QString &errorString() const; - QWidget *createBookingStartStrip(QWidget *parent = Q_NULLPTR); - QWidget *createBookingEndStrip(QWidget *parent = Q_NULLPTR); - QWidget *createTimeAssignmentStrip(QWidget *parent = Q_NULLPTR); + std::unique_ptr createBookingStartStrip(QWidget *parent = Q_NULLPTR); + std::unique_ptr createBookingEndStrip(QWidget *parent = Q_NULLPTR); + std::unique_ptr createTimeAssignmentStrip(QWidget *parent = Q_NULLPTR); private: QUiLoader *m_loader; diff --git a/stripswidget.cpp b/stripswidget.cpp index 877e52b..150a711 100644 --- a/stripswidget.cpp +++ b/stripswidget.cpp @@ -7,8 +7,6 @@ #include #include -#include "replies/getbookingsreply.h" -#include "replies/gettimeassignmentsreply.h" #include "timeutils.h" #include "stripfactory.h" @@ -126,7 +124,7 @@ void StripsWidget::refreshBookings() invalidateValues(); m_getBookingsReply = m_erfassung.doGetBookings(m_userId, m_date, m_date); - connect(m_getBookingsReply, &ZeiterfassungReply::finished, this, &StripsWidget::getBookingsFinished); + connect(m_getBookingsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getBookingsFinished); } void StripsWidget::refreshTimeAssignments() @@ -152,7 +150,7 @@ void StripsWidget::refreshTimeAssignments() invalidateValues(); m_getTimeAssignmentsReply = m_erfassung.doGetTimeAssignments(m_userId, m_date, m_date); - connect(m_getTimeAssignmentsReply, &ZeiterfassungReply::finished, this, &StripsWidget::getTimeAssignmentsFinished); + connect(m_getTimeAssignmentsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getTimeAssignmentsFinished); } bool StripsWidget::createStrips() @@ -469,7 +467,6 @@ void StripsWidget::getBookingsFinished() createStrips(); } - m_getBookingsReply->deleteLater(); m_getBookingsReply = Q_NULLPTR; } @@ -488,7 +485,6 @@ void StripsWidget::getTimeAssignmentsFinished() createStrips(); } - m_getTimeAssignmentsReply->deleteLater(); m_getTimeAssignmentsReply = Q_NULLPTR; } @@ -523,7 +519,7 @@ QString StripsWidget::buildProjectString(const QString &project) QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) { - auto widget = m_stripFactory.createBookingStartStrip(this); + auto widget = m_stripFactory.createBookingStartStrip(this).release(); if(auto labelTime = widget->findChild(QStringLiteral("labelTime"))) labelTime->setProperty("text", time.toString(tr("HH:mm"))); @@ -542,7 +538,7 @@ QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time) { - auto widget = m_stripFactory.createBookingEndStrip(this); + auto widget = m_stripFactory.createBookingEndStrip(this).release(); if(auto labelTime = widget->findChild(QStringLiteral("labelTime"))) labelTime->setProperty("text", time.toString(tr("HH:mm"))); @@ -561,7 +557,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); + auto widget = m_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/stripswidget.h b/stripswidget.h index fe64532..689511d 100644 --- a/stripswidget.h +++ b/stripswidget.h @@ -1,18 +1,20 @@ #ifndef STRIPSWIDGET_H #define STRIPSWIDGET_H +#include + #include #include #include "zeiterfassungapi.h" +#include "replies/getbookingsreply.h" +#include "replies/gettimeassignmentsreply.h" class QBoxLayout; template class QMap; template class QVector; class StripFactory; -class GetBookingsReply; -class GetTimeAssignmentsReply; class StripsWidget : public QWidget { @@ -91,8 +93,8 @@ private: bool m_startEnabled; bool m_endEnabled; - GetBookingsReply *m_getBookingsReply; - GetTimeAssignmentsReply *m_getTimeAssignmentsReply; + std::unique_ptr m_getBookingsReply; + std::unique_ptr m_getTimeAssignmentsReply; }; #endif // STRIPSWIDGET_H diff --git a/zeiterfassung.pro b/zeiterfassung.pro index 6ca243a..42e32dd 100755 --- a/zeiterfassung.pro +++ b/zeiterfassung.pro @@ -1,6 +1,6 @@ QT += network gui widgets uitools -CONFIG += c++11 +CONFIG += c++14 CONFIG -= app_bundle # The following define makes your compiler emit warnings if you use diff --git a/zeiterfassungapi.cpp b/zeiterfassungapi.cpp index da1fbdf..6e95090 100644 --- a/zeiterfassungapi.cpp +++ b/zeiterfassungapi.cpp @@ -45,16 +45,16 @@ QNetworkAccessManager *ZeiterfassungApi::manager() const return m_manager; } -LoginPageReply *ZeiterfassungApi::doLoginPage() +std::unique_ptr ZeiterfassungApi::doLoginPage() { QNetworkRequest request(QUrl(m_url % "pages/login.jsp")); - auto reply = m_manager->get(request); + auto reply = std::unique_ptr(m_manager->get(request)); - return new LoginPageReply(reply, this); + return std::make_unique(std::move(reply), this); } -LoginReply *ZeiterfassungApi::doLogin(const QString &username, const QString &password) +std::unique_ptr ZeiterfassungApi::doLogin(const QString &username, const QString &password) { QNetworkRequest request(QUrl(m_url % "pages/j_spring_security_check")); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/x-www-form-urlencoded")); @@ -62,22 +62,22 @@ LoginReply *ZeiterfassungApi::doLogin(const QString &username, const QString &pa auto data = QStringLiteral("j_username=%0&j_password=%1&login=Anmelden").arg(username).arg(password).toUtf8(); - auto reply = m_manager->post(request, data); + auto reply = std::unique_ptr(m_manager->post(request, data)); - return new LoginReply(reply, this); + return std::make_unique(std::move(reply), this); } -UserInfoReply *ZeiterfassungApi::doUserInfo() +std::unique_ptr ZeiterfassungApi::doUserInfo() { QNetworkRequest request(QUrl(m_url % "json/evoAppsUserInfoDialogController/load-EvoAppsUserInfoTO")); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("home")); - auto reply = m_manager->get(request); + auto reply = std::unique_ptr(m_manager->get(request)); - return new UserInfoReply(reply, this); + return std::make_unique(std::move(reply), this); } -GetBookingsReply *ZeiterfassungApi::doGetBookings(int userId, const QDate &start, const QDate &end) +std::unique_ptr ZeiterfassungApi::doGetBookings(int userId, const QDate &start, const QDate &end) { QNetworkRequest request(QUrl(QStringLiteral("%0json/bookings?start=%1&end=%2&pnrLst=%3") .arg(m_url) @@ -86,12 +86,13 @@ GetBookingsReply *ZeiterfassungApi::doGetBookings(int userId, const QDate &start .arg(userId))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); - auto reply = m_manager->get(request); + auto reply = std::unique_ptr(m_manager->get(request)); - return new GetBookingsReply(reply, this); + return std::make_unique(std::move(reply), this); } -CreateBookingReply *ZeiterfassungApi::doCreateBooking(int userId, const QDate &date, const QTime &time, const QTime ×pan, const QString &type, const QString &text) +std::unique_ptr ZeiterfassungApi::doCreateBooking(int userId, const QDate &date, const QTime &time, const QTime ×pan, + const QString &type, const QString &text) { QNetworkRequest request(QUrl(m_url % "json/booking")); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); @@ -108,12 +109,13 @@ CreateBookingReply *ZeiterfassungApi::doCreateBooking(int userId, const QDate &d obj[QStringLiteral("bewEinh")] = QStringLiteral(""); obj[QStringLiteral("text")] = text; - auto reply = m_manager->post(request, QJsonDocument(obj).toJson()); + auto reply = std::unique_ptr(m_manager->post(request, QJsonDocument(obj).toJson())); - return new CreateBookingReply(reply, this); + return std::make_unique(std::move(reply), this); } -UpdateBookingReply *ZeiterfassungApi::doUpdateBooking(int bookingId, int userId, const QDate &date, const QTime &time, const QTime ×pan, const QString &type, const QString &text) +std::unique_ptr ZeiterfassungApi::doUpdateBooking(int bookingId, int userId, const QDate &date, const QTime &time, + const QTime ×pan, const QString &type, const QString &text) { QNetworkRequest request(QUrl(QStringLiteral("%0json/booking/%1").arg(m_url).arg(bookingId))); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); @@ -133,24 +135,24 @@ UpdateBookingReply *ZeiterfassungApi::doUpdateBooking(int bookingId, int userId, auto data = QJsonDocument(obj).toJson(); - auto reply = m_manager->put(request, data); + auto reply = std::unique_ptr(m_manager->put(request, data)); - return new UpdateBookingReply(reply, this); + return std::make_unique(std::move(reply), this); } -DeleteBookingReply *ZeiterfassungApi::doDeleteBooking(int bookingId) +std::unique_ptr ZeiterfassungApi::doDeleteBooking(int bookingId) { QNetworkRequest request(QUrl(QStringLiteral("%0json/booking/%1?text=") .arg(m_url) .arg(bookingId))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); - auto reply = m_manager->deleteResource(request); + auto reply = std::unique_ptr(m_manager->deleteResource(request)); - return new DeleteBookingReply(reply, this); + return std::make_unique(std::move(reply), this); } -GetTimeAssignmentsReply *ZeiterfassungApi::doGetTimeAssignments(int userId, const QDate &start, const QDate &end) +std::unique_ptr ZeiterfassungApi::doGetTimeAssignments(int userId, const QDate &start, const QDate &end) { QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking?start=%1&end=%2&pnrLst=%3") .arg(m_url) @@ -159,14 +161,15 @@ GetTimeAssignmentsReply *ZeiterfassungApi::doGetTimeAssignments(int userId, cons .arg(userId))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); - auto reply = m_manager->get(request); + auto reply = std::unique_ptr(m_manager->get(request)); - return new GetTimeAssignmentsReply(reply, this); + return std::make_unique(std::move(reply), this); } -CreateTimeAssignmentReply *ZeiterfassungApi::doCreateTimeAssignment(int userId, const QDate &date, const QTime &time, const QTime ×pan, - const QString &project, const QString &subproject, const QString &workpackage, - const QString &text) +std::unique_ptr ZeiterfassungApi::doCreateTimeAssignment(int userId, const QDate &date, const QTime &time, + const QTime ×pan, const QString &project, + const QString &subproject, const QString &workpackage, + const QString &text) { QNetworkRequest request(QUrl(m_url % "json/azebooking")); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); @@ -201,14 +204,15 @@ CreateTimeAssignmentReply *ZeiterfassungApi::doCreateTimeAssignment(int userId, auto data = QJsonDocument(obj).toJson(); - auto reply = m_manager->post(request, data); + auto reply = std::unique_ptr(m_manager->post(request, data)); - return new CreateTimeAssignmentReply(reply, this); + return std::make_unique(std::move(reply), this); } -UpdateTimeAssignmentReply *ZeiterfassungApi::doUpdateTimeAssignment(int timeAssignmentId, int userId, const QDate &date, const QTime &time, - const QTime ×pan, const QString &project, const QString &subproject, - const QString &workpackage, const QString &text) +std::unique_ptr ZeiterfassungApi::doUpdateTimeAssignment(int timeAssignmentId, int userId, const QDate &date, + const QTime &time, const QTime ×pan, const QString &project, + const QString &subproject, const QString &workpackage, + const QString &text) { QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking/%1").arg(m_url).arg(timeAssignmentId))); request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/json")); @@ -248,24 +252,24 @@ UpdateTimeAssignmentReply *ZeiterfassungApi::doUpdateTimeAssignment(int timeAssi auto data = QJsonDocument(obj).toJson(); - auto reply = m_manager->put(request, data); + auto reply = std::unique_ptr(m_manager->put(request, data)); - return new UpdateTimeAssignmentReply(reply, this); + return std::make_unique(std::move(reply), this); } -DeleteTimeAssignmentReply *ZeiterfassungApi::doDeleteTimeAssignment(int timeAssignmentId) +std::unique_ptr ZeiterfassungApi::doDeleteTimeAssignment(int timeAssignmentId) { QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking/%1") .arg(m_url) .arg(timeAssignmentId))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); - auto reply = m_manager->deleteResource(request); + auto reply = std::unique_ptr(m_manager->deleteResource(request)); - return new DeleteTimeAssignmentReply(reply,this); + return std::make_unique(std::move(reply), this); } -GetProjectsReply *ZeiterfassungApi::doGetProjects(int userId, const QDate &date) +std::unique_ptr ZeiterfassungApi::doGetProjects(int userId, const QDate &date) { QNetworkRequest request(QUrl(QStringLiteral("%0json/combobox?persnr=%1&date=%2&dqkey=KOST&kowert0=&kowert1=&kowert2=&term=") .arg(m_url) @@ -273,12 +277,12 @@ GetProjectsReply *ZeiterfassungApi::doGetProjects(int userId, const QDate &date) .arg(date.toString(QStringLiteral("yyyyMMdd"))))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); - auto reply = m_manager->get(request); + auto reply = std::unique_ptr(m_manager->get(request)); - return new GetProjectsReply(reply, this); + return std::make_unique(std::move(reply), this); } -GetAuswertungReply *ZeiterfassungApi::doGetAuswertung(int userId, const QDate &date) +std::unique_ptr ZeiterfassungApi::doGetAuswertung(int userId, const QDate &date) { QNetworkRequest request(QUrl(QStringLiteral("%0json/auswertung/month?persNr=%1&date=%2") .arg(m_url) @@ -286,7 +290,7 @@ GetAuswertungReply *ZeiterfassungApi::doGetAuswertung(int userId, const QDate &d .arg(date.toString(QStringLiteral("yyyyMMdd"))))); request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar")); - auto reply = m_manager->get(request); + auto reply = std::unique_ptr(m_manager->get(request)); - return new GetAuswertungReply(reply, this); + return std::make_unique(std::move(reply), this); } diff --git a/zeiterfassungapi.h b/zeiterfassungapi.h index 7c25380..e403c2a 100644 --- a/zeiterfassungapi.h +++ b/zeiterfassungapi.h @@ -1,6 +1,8 @@ #ifndef ZEITERFASSUNGAPI_H #define ZEITERFASSUNGAPI_H +#include + #include #include #include @@ -71,29 +73,30 @@ public: QString value; }; -public Q_SLOTS: - LoginPageReply *doLoginPage(); - LoginReply *doLogin(const QString &username, const QString &password); - UserInfoReply *doUserInfo(); + std::unique_ptr doLoginPage(); + std::unique_ptr doLogin(const QString &username, const QString &password); + std::unique_ptr doUserInfo(); - GetBookingsReply *doGetBookings(int userId, const QDate &start, const QDate &end); - CreateBookingReply *doCreateBooking(int userId, const QDate &date, const QTime &time, const QTime ×pan, - const QString &type, const QString &text); - UpdateBookingReply *doUpdateBooking(int bookingId, int userId, const QDate &date, const QTime &time, - const QTime ×pan, const QString &type, const QString &text); - DeleteBookingReply *doDeleteBooking(int bookingId); + std::unique_ptr doGetBookings(int userId, const QDate &start, const QDate &end); + std::unique_ptr doCreateBooking(int userId, const QDate &date, const QTime &time, const QTime ×pan, + const QString &type, const QString &text); + std::unique_ptr doUpdateBooking(int bookingId, int userId, const QDate &date, const QTime &time, + const QTime ×pan, const QString &type, const QString &text); + std::unique_ptr doDeleteBooking(int bookingId); - GetTimeAssignmentsReply *doGetTimeAssignments(int userId, const QDate &start, const QDate &end); - CreateTimeAssignmentReply *doCreateTimeAssignment(int userId, const QDate &date, const QTime &time, const QTime ×pan, - const QString &project, const QString &subproject, const QString &workpackage, - const QString &text); - UpdateTimeAssignmentReply *doUpdateTimeAssignment(int timeAssignmentId, int userId, const QDate &date, const QTime &time, - const QTime ×pan, const QString &project, const QString &subproject, - const QString &workpackage, const QString &text); - DeleteTimeAssignmentReply *doDeleteTimeAssignment(int timeAssignmentId); + std::unique_ptr doGetTimeAssignments(int userId, const QDate &start, const QDate &end); + std::unique_ptr doCreateTimeAssignment(int userId, const QDate &date, const QTime &time, + const QTime ×pan, const QString &project, + const QString &subproject, const QString &workpackage, + const QString &text); + std::unique_ptr doUpdateTimeAssignment(int timeAssignmentId, int userId, const QDate &date, + const QTime &time, const QTime ×pan, const QString &project, + const QString &subproject, const QString &workpackage, + const QString &text); + std::unique_ptr doDeleteTimeAssignment(int timeAssignmentId); - GetProjectsReply *doGetProjects(int userId, const QDate &date); - GetAuswertungReply *doGetAuswertung(int userId, const QDate &date); + std::unique_ptr doGetProjects(int userId, const QDate &date); + std::unique_ptr doGetAuswertung(int userId, const QDate &date); private: QString m_url;