From b52a357f67d3b88384b137a5472dffb6087e2df7 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Sun, 10 Dec 2017 23:29:12 +0100 Subject: [PATCH] Fixed error handling of StripFactory --- main.cpp | 11 ++++++++++- mainwindow.cpp | 14 ++++---------- mainwindow.h | 5 +++-- stripswidget.cpp | 12 ++++++------ stripswidget.h | 6 +++--- 5 files changed, 26 insertions(+), 22 deletions(-) diff --git a/main.cpp b/main.cpp index 37394f3..11538a0 100755 --- a/main.cpp +++ b/main.cpp @@ -17,6 +17,7 @@ #include "replies/loginpagereply.h" #include "replies/loginreply.h" #include "replies/userinforeply.h" +#include "stripfactory.h" bool loadAndInstallTranslator(QTranslator &translator, const QLocale &locale, @@ -198,7 +199,15 @@ int main(int argc, char *argv[]) reply->deleteLater(); } - MainWindow mainWindow(settings, erfassung, userInfo); + StripFactory stripFactory(&app); + if(!stripFactory.load(QDir(QCoreApplication::applicationDirPath()).absoluteFilePath("strips"))) + { + QMessageBox::warning(&splashScreen, QCoreApplication::translate("main", "Could not load strips!"), + QCoreApplication::translate("main", "Could not load strips!") % "\n\n" % stripFactory.errorString()); + return -1; + } + + MainWindow mainWindow(settings, erfassung, userInfo, stripFactory); mainWindow.show(); splashScreen.finish(&mainWindow); diff --git a/mainwindow.cpp b/mainwindow.cpp index e4ba912..3423eee 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -36,13 +36,14 @@ #include "replies/createtimeassignmentreply.h" #include "replies/createbookingreply.h" -MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfassung, const ZeiterfassungApi::UserInfo &userInfo, QWidget *parent) : +MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfassung, const ZeiterfassungApi::UserInfo &userInfo, + StripFactory &stripFactory, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), m_settings(settings), m_erfassung(erfassung), m_userInfo(userInfo), - m_stripFactory(new StripFactory(this)), + m_stripFactory(stripFactory), m_currentStripWidget(Q_NULLPTR) { ui->setupUi(this); @@ -63,7 +64,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass layout->addWidget(label); } - m_stripsWidgets[i] = new StripsWidget(m_erfassung, m_stripFactory, m_userInfo.userId, m_projects, widget); + m_stripsWidgets[i] = new StripsWidget(m_erfassung, m_userInfo.userId, m_stripFactory, m_projects, widget); layout->addWidget(m_stripsWidgets[i++]); layout->addStretch(1); @@ -126,13 +127,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass m_holidaysLabel->setFrameShape(QFrame::Panel); m_holidaysLabel->setFrameShadow(QFrame::Sunken); - if(!m_stripFactory->load(QDir(QCoreApplication::applicationDirPath()).absoluteFilePath("strips"))) - { - QMessageBox::warning(this, tr("Could not load strips!"), tr("Could not load strips!") % "\n\n" % m_stripFactory->errorString()); - qApp->exit(-1); - return; - } - dateChanged(); if(settings.lastUpdateCheck().isNull() || settings.lastUpdateCheck() < QDate::currentDate()) diff --git a/mainwindow.h b/mainwindow.h index 011c897..ed1788b 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -21,7 +21,8 @@ class MainWindow : public QMainWindow Q_OBJECT public: - explicit MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfassung, const ZeiterfassungApi::UserInfo &userInfo, QWidget *parent = Q_NULLPTR); + explicit MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfassung, const ZeiterfassungApi::UserInfo &userInfo, + StripFactory &stripFactory, QWidget *parent = Q_NULLPTR); ~MainWindow(); private Q_SLOTS: @@ -60,7 +61,7 @@ private: QLabel *m_balanceLabel; QLabel *m_holidaysLabel; - StripFactory *m_stripFactory; + StripFactory &m_stripFactory; StripsWidget *m_stripsWidgets[7]; StripsWidget *m_currentStripWidget; }; diff --git a/stripswidget.cpp b/stripswidget.cpp index 4fcf8ce..87ad8da 100644 --- a/stripswidget.cpp +++ b/stripswidget.cpp @@ -15,12 +15,12 @@ #include "timeutils.h" #include "stripfactory.h" -StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, StripFactory *stripFactory, - int userId, const QMap &projects, QWidget *parent) : +StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory &stripFactory, + const QMap &projects, QWidget *parent) : QWidget(parent), m_erfassung(erfassung), - m_stripFactory(stripFactory), m_userId(userId), + m_stripFactory(stripFactory), m_projects(projects), m_layout(new QVBoxLayout(this)), m_bookingsModel(new BookingsModel(this)), @@ -440,7 +440,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); if(auto labelTime = widget->findChild("labelTime")) labelTime->setProperty("text", time.toString(QStringLiteral("HH:mm"))); @@ -459,7 +459,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); if(auto labelTime = widget->findChild("labelTime")) labelTime->setProperty("text", time.toString(QStringLiteral("HH:mm"))); @@ -478,7 +478,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); if(auto labelTime = widget->findChild("labelTime")) labelTime->setProperty("text", duration == QTime(0, 0) ? tr("Open") : duration.toString(QStringLiteral("HH:mm"))); diff --git a/stripswidget.h b/stripswidget.h index d66ecff..b193a46 100644 --- a/stripswidget.h +++ b/stripswidget.h @@ -21,8 +21,8 @@ class StripsWidget : public QWidget Q_OBJECT public: - explicit StripsWidget(ZeiterfassungApi &erfassung, StripFactory *stripFactory, - int userId, const QMap &projects, QWidget *parent = Q_NULLPTR); + explicit StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory &stripFactory, + const QMap &projects, QWidget *parent = Q_NULLPTR); BookingsModel *bookingsModel() const; TimeAssignmentsModel *timeAssignmentsModel() const; @@ -70,8 +70,8 @@ private: const QString &workpackage, const QString &text); ZeiterfassungApi &m_erfassung; - StripFactory *m_stripFactory; int m_userId; + StripFactory &m_stripFactory; const QMap &m_projects; QBoxLayout *m_layout;