From 237ef7479c9250fc56385ff9cdcac48e173d7c98 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Wed, 18 Apr 2018 18:47:17 +0200 Subject: [PATCH] Implemented strip rendering with other booking types --- zeiterfassungguilib/mainwindow.cpp | 4 ++- zeiterfassungguilib/stripswidget.cpp | 50 ++++++++++++++++++++++++---- zeiterfassungguilib/stripswidget.h | 4 +-- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/zeiterfassungguilib/mainwindow.cpp b/zeiterfassungguilib/mainwindow.cpp index e3d93ad..50dfd8a 100644 --- a/zeiterfassungguilib/mainwindow.cpp +++ b/zeiterfassungguilib/mainwindow.cpp @@ -213,7 +213,9 @@ void MainWindow::pushButtonStartPressed() } if(m_currentStripWidget->bookings().rbegin() == m_currentStripWidget->bookings().rend() || - m_currentStripWidget->bookings().rbegin()->type == QStringLiteral("G")) + m_currentStripWidget->bookings().rbegin()->type == QStringLiteral("G") || + m_currentStripWidget->bookings().rbegin()->type == QStringLiteral("GA") || + m_currentStripWidget->bookings().rbegin()->type == QStringLiteral("GM")) { auto reply = m_erfassung.doCreateBooking(m_userInfo.userId, ui->dateEditDate->date(), timeNormalise(ui->timeEditTime->time()), QTime(0, 0), diff --git a/zeiterfassungguilib/stripswidget.cpp b/zeiterfassungguilib/stripswidget.cpp index e2e9ec6..fb82e99 100644 --- a/zeiterfassungguilib/stripswidget.cpp +++ b/zeiterfassungguilib/stripswidget.cpp @@ -298,7 +298,9 @@ bool StripsWidget::createStrips() } auto startBooking = *bookingsIter++; - if(startBooking.type != QStringLiteral("K")) + if(startBooking.type != QStringLiteral("K") && + startBooking.type != QStringLiteral("KA") && + startBooking.type != QStringLiteral("KM")) { errorMessage = tr("Expected start booking, instead got type %0\nBooking ID: %1") .arg(startBooking.type) @@ -316,7 +318,7 @@ bool StripsWidget::createStrips() lastBooking = &startBooking; lastTimeAssignmentStart = startBooking.time; - appendBookingStartStrip(startBooking.id, startBooking.time); + appendBookingStartStrip(startBooking.id, startBooking.time, startBooking.type); if(timeAssignmentsIter == m_timeAssignments.constEnd()) { @@ -397,7 +399,9 @@ bool StripsWidget::createStrips() else { auto endBooking = *bookingsIter++; - if(endBooking.type != QStringLiteral("G")) + if(endBooking.type != QStringLiteral("G") && + endBooking.type != QStringLiteral("GA") && + endBooking.type != QStringLiteral("GM")) { errorMessage = tr("Expected end booking, instead got type %0\nBooking ID: %1") .arg(endBooking.type) @@ -418,7 +422,7 @@ bool StripsWidget::createStrips() errorMessage = tr("Missing time assignment! Missing: %0") .arg(tr("%0h").arg(QLocale().toString(timeBetween(timeAssignmentTime, bookingTimespan), QLocale::ShortFormat))); - appendBookingEndStrip(endBooking.id, endBooking.time, currBookingDuration); + appendBookingEndStrip(endBooking.id, endBooking.time, currBookingDuration, endBooking.type); goto after; } @@ -464,7 +468,7 @@ bool StripsWidget::createStrips() .arg(QLocale().toString(bookingTimespan, QLocale::ShortFormat)); } - appendBookingEndStrip(endBooking.id, endBooking.time, currBookingDuration); + appendBookingEndStrip(endBooking.id, endBooking.time, currBookingDuration, endBooking.type); if(timeAssignmentTime > bookingTimespan) goto after; @@ -593,7 +597,7 @@ QString StripsWidget::buildProjectString(const QString &project) const } } -QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) +QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time, const QString &type) { auto widget = m_mainWindow.stripFactory().createBookingStartStrip(this).release(); @@ -602,6 +606,22 @@ QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) else qWarning() << "no labelTime found!"; + if(type != QStringLiteral("K")) + { + QString textToAppend; + if(type == QStringLiteral("KA")) + textToAppend = tr("Doctor"); + else if(type == QStringLiteral("KM")) + textToAppend = tr("Government"); + else + textToAppend = tr("Unknown"); + + if(auto labelType = widget->findChild(QStringLiteral("labelType"))) + labelType->setProperty("text", QString(labelType->property("text").toString() % " (" % textToAppend % ')')); + else + qWarning() << "no labelType found!"; + } + if(auto labelId = widget->findChild(QStringLiteral("labelId"))) labelId->setProperty("text", QString::number(id)); else @@ -612,7 +632,7 @@ QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) return widget; } -QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time, const QTime &duration) +QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time, const QTime &duration, const QString &type) { auto widget = m_mainWindow.stripFactory().createBookingEndStrip(this).release(); @@ -621,6 +641,22 @@ QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time, const QT else qWarning() << "no labelTime found!"; + if(type != QStringLiteral("G")) + { + QString textToAppend; + if(type == QStringLiteral("GA")) + textToAppend = tr("Doctor"); + else if(type == QStringLiteral("GM")) + textToAppend = tr("Government"); + else + textToAppend = tr("Unknown"); + + if(auto labelType = widget->findChild(QStringLiteral("labelType"))) + labelType->setProperty("text", QString(labelType->property("text").toString() % " (" % textToAppend % ')')); + else + qWarning() << "no labelType found!"; + } + if(auto labelDuration = widget->findChild(QStringLiteral("labelDuration"))) labelDuration->setProperty("text", tr("%0h").arg(QLocale().toString(duration, QLocale::ShortFormat))); else diff --git a/zeiterfassungguilib/stripswidget.h b/zeiterfassungguilib/stripswidget.h index f7c852f..a104f52 100644 --- a/zeiterfassungguilib/stripswidget.h +++ b/zeiterfassungguilib/stripswidget.h @@ -85,8 +85,8 @@ private: void invalidateValues(); QString buildProjectString(const QString &project) const; - QWidget *appendBookingStartStrip(int id, const QTime &time); - QWidget *appendBookingEndStrip(int id, const QTime &time, const QTime &duration); + QWidget *appendBookingStartStrip(int id, const QTime &time, const QString &type); + QWidget *appendBookingEndStrip(int id, const QTime &time, const QTime &duration, const QString &type); QWidget *appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject, const QString &workpackage, const QString &text);