From 45e8a5b8de08aabdc213bfe2f11fd0248bca481e Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Thu, 14 Dec 2017 00:57:24 +0100 Subject: [PATCH] Added label to mainWindow to show presences --- mainwindow.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++---- mainwindow.h | 11 +++++++++-- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index e3cd018..6233128 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include @@ -48,7 +48,8 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass m_getAuswertungReply(Q_NULLPTR), m_bookingsModel(new BookingsModel(this)), m_timeAssignmentsModel(new TimeAssignmentsModel(this)), - m_currentStripWidget(Q_NULLPTR) + m_currentStripWidget(Q_NULLPTR), + m_getPresenceStatusReply(Q_NULLPTR) { ui->setupUi(this); @@ -90,8 +91,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass m_getProjectsReply = erfassung.doGetProjects(userInfo.userId, QDate::currentDate()); connect(m_getProjectsReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getProjectsFinished); - ui->comboBoxProject->setMaxVisibleItems(10); - ui->comboBoxSubproject->lineEdit()->setPlaceholderText(tr("Subproject")); ui->comboBoxWorkpackage->lineEdit()->setPlaceholderText(tr("Workpackage")); ui->comboBoxText->lineEdit()->setPlaceholderText(tr("Text")); @@ -109,6 +108,10 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass connect(m_timeAssignmentsModel, &TimeAssignmentsModel::enabledChanged, ui->treeViewTimeAssignments, &QWidget::setEnabled); connect(ui->treeViewTimeAssignments, &QWidget::customContextMenuRequested, this, &MainWindow::contextMenuTimeAssignment); + ui->statusbar->addWidget(m_presenceLabel = new QLabel(tr("???"), ui->statusbar)); + m_presenceLabel->setFrameShape(QFrame::Panel); + m_presenceLabel->setFrameShadow(QFrame::Sunken); + ui->statusbar->addPermanentWidget(m_balanceLabel = new QLabel(ui->statusbar)); m_balanceLabel->setFrameShape(QFrame::Panel); m_balanceLabel->setFrameShadow(QFrame::Sunken); @@ -118,6 +121,15 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass dateChanged(); + { + auto timer = new QTimer(this); + timer->setInterval(60000); + connect(timer, &QTimer::timeout, this, &MainWindow::refreshPresence); + timer->start(); + } + + refreshPresence(); + if(settings.lastUpdateCheck().isNull() || settings.lastUpdateCheck() < QDate::currentDate()) new UpdateDialog(settings, erfassung.manager(), this); } @@ -651,6 +663,34 @@ void MainWindow::openAuswertung() } } +void MainWindow::refreshPresence() +{ + m_presenceLabel->setText(tr("???")); + + m_getPresenceStatusReply = m_erfassung.doGetPresenceStatus(); + connect(m_getPresenceStatusReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getPresenceStatusFinished); +} + +void MainWindow::getPresenceStatusFinished() +{ + if(m_getPresenceStatusReply->success()) + { + QMap counts; + for(const auto &presenceStatus : m_getPresenceStatusReply->presenceStatuses()) + counts[presenceStatus.presence]++; + QString text; + for(auto iter = counts.constBegin(); iter != counts.constEnd(); iter++) + { + if(!text.isEmpty()) + text.append(' '); + text.append(QStringLiteral("%0: %1").arg(iter.key()).arg(iter.value())); + } + m_presenceLabel->setText(text); + } + + m_getPresenceStatusReply = Q_NULLPTR; +} + void MainWindow::minimumTimeChanged() { ui->timeEditTime->setMinimumTime(m_currentStripWidget->minimumTime()); diff --git a/mainwindow.h b/mainwindow.h index 5d8421e..ccb5d66 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -7,14 +7,15 @@ #include #include "zeiterfassungapi.h" +#include "replies/getprojectsreply.h" +#include "replies/getauswertungreply.h" +#include "replies/getpresencestatusreply.h" class QLabel; class QBoxLayout; namespace Ui { class MainWindow; } class ZeiterfassungSettings; -class GetProjectsReply; -class GetAuswertungReply; class StripFactory; class StripsWidget; class BookingsModel; @@ -38,6 +39,8 @@ private Q_SLOTS: void pushButtonEndPressed(); void dateChanged(bool force = false); void openAuswertung(); + void refreshPresence(); + void getPresenceStatusFinished(); void minimumTimeChanged(); void refreshingChanged(); @@ -65,11 +68,15 @@ private: QDate m_auswertungDate; QByteArray m_auswertung; + QLabel *m_presenceLabel; + QLabel *m_balanceLabel; QLabel *m_holidaysLabel; std::array m_stripsWidgets; StripsWidget *m_currentStripWidget; + + std::unique_ptr m_getPresenceStatusReply; }; #endif // MAINWINDOW_H