Added label to mainWindow to show presences

This commit is contained in:
0xFEEDC0DE64
2017-12-14 00:57:24 +01:00
parent 6b11becfb8
commit 45e8a5b8de
2 changed files with 53 additions and 6 deletions

View File

@@ -4,7 +4,7 @@
#include <QUrl> #include <QUrl>
#include <QLineEdit> #include <QLineEdit>
#include <QMessageBox> #include <QMessageBox>
#include <QStandardItem> #include <QTimer>
#include <QStringBuilder> #include <QStringBuilder>
#include <QMenu> #include <QMenu>
#include <QEventLoop> #include <QEventLoop>
@@ -48,7 +48,8 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
m_getAuswertungReply(Q_NULLPTR), m_getAuswertungReply(Q_NULLPTR),
m_bookingsModel(new BookingsModel(this)), m_bookingsModel(new BookingsModel(this)),
m_timeAssignmentsModel(new TimeAssignmentsModel(this)), m_timeAssignmentsModel(new TimeAssignmentsModel(this)),
m_currentStripWidget(Q_NULLPTR) m_currentStripWidget(Q_NULLPTR),
m_getPresenceStatusReply(Q_NULLPTR)
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -90,8 +91,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
m_getProjectsReply = erfassung.doGetProjects(userInfo.userId, QDate::currentDate()); m_getProjectsReply = erfassung.doGetProjects(userInfo.userId, QDate::currentDate());
connect(m_getProjectsReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getProjectsFinished); connect(m_getProjectsReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getProjectsFinished);
ui->comboBoxProject->setMaxVisibleItems(10);
ui->comboBoxSubproject->lineEdit()->setPlaceholderText(tr("Subproject")); ui->comboBoxSubproject->lineEdit()->setPlaceholderText(tr("Subproject"));
ui->comboBoxWorkpackage->lineEdit()->setPlaceholderText(tr("Workpackage")); ui->comboBoxWorkpackage->lineEdit()->setPlaceholderText(tr("Workpackage"));
ui->comboBoxText->lineEdit()->setPlaceholderText(tr("Text")); 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(m_timeAssignmentsModel, &TimeAssignmentsModel::enabledChanged, ui->treeViewTimeAssignments, &QWidget::setEnabled);
connect(ui->treeViewTimeAssignments, &QWidget::customContextMenuRequested, this, &MainWindow::contextMenuTimeAssignment); 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)); ui->statusbar->addPermanentWidget(m_balanceLabel = new QLabel(ui->statusbar));
m_balanceLabel->setFrameShape(QFrame::Panel); m_balanceLabel->setFrameShape(QFrame::Panel);
m_balanceLabel->setFrameShadow(QFrame::Sunken); m_balanceLabel->setFrameShadow(QFrame::Sunken);
@@ -118,6 +121,15 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
dateChanged(); 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()) if(settings.lastUpdateCheck().isNull() || settings.lastUpdateCheck() < QDate::currentDate())
new UpdateDialog(settings, erfassung.manager(), this); 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<QString, int> 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() void MainWindow::minimumTimeChanged()
{ {
ui->timeEditTime->setMinimumTime(m_currentStripWidget->minimumTime()); ui->timeEditTime->setMinimumTime(m_currentStripWidget->minimumTime());

View File

@@ -7,14 +7,15 @@
#include <QMap> #include <QMap>
#include "zeiterfassungapi.h" #include "zeiterfassungapi.h"
#include "replies/getprojectsreply.h"
#include "replies/getauswertungreply.h"
#include "replies/getpresencestatusreply.h"
class QLabel; class QLabel;
class QBoxLayout; class QBoxLayout;
namespace Ui { class MainWindow; } namespace Ui { class MainWindow; }
class ZeiterfassungSettings; class ZeiterfassungSettings;
class GetProjectsReply;
class GetAuswertungReply;
class StripFactory; class StripFactory;
class StripsWidget; class StripsWidget;
class BookingsModel; class BookingsModel;
@@ -38,6 +39,8 @@ private Q_SLOTS:
void pushButtonEndPressed(); void pushButtonEndPressed();
void dateChanged(bool force = false); void dateChanged(bool force = false);
void openAuswertung(); void openAuswertung();
void refreshPresence();
void getPresenceStatusFinished();
void minimumTimeChanged(); void minimumTimeChanged();
void refreshingChanged(); void refreshingChanged();
@@ -65,11 +68,15 @@ private:
QDate m_auswertungDate; QDate m_auswertungDate;
QByteArray m_auswertung; QByteArray m_auswertung;
QLabel *m_presenceLabel;
QLabel *m_balanceLabel; QLabel *m_balanceLabel;
QLabel *m_holidaysLabel; QLabel *m_holidaysLabel;
std::array<StripsWidget*, 7> m_stripsWidgets; std::array<StripsWidget*, 7> m_stripsWidgets;
StripsWidget *m_currentStripWidget; StripsWidget *m_currentStripWidget;
std::unique_ptr<GetPresenceStatusReply> m_getPresenceStatusReply;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H