From 45fcf52db388761ad41e36f6e186b44210d6b0a3 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Fri, 22 Dec 2017 23:14:25 +0100 Subject: [PATCH] PresencePlugin now shows employees #37 --- plugins/presenceplugin/presencewidget.cpp | 52 +++++++++++------------ plugins/presenceplugin/presencewidget.h | 9 ++-- 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/plugins/presenceplugin/presencewidget.cpp b/plugins/presenceplugin/presencewidget.cpp index cbcbca6..d3c0857 100644 --- a/plugins/presenceplugin/presencewidget.cpp +++ b/plugins/presenceplugin/presencewidget.cpp @@ -1,12 +1,14 @@ #include "presencewidget.h" -#include -#include +#include #include +#include #include #include #include +#include + #include "mainwindow.h" #include "zeiterfassungapi.h" @@ -16,15 +18,15 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) : { connect(&m_mainWindow, &MainWindow::refreshEverything, this, &PresenceWidget::refresh); - m_labelAvailable = new QLabel(this); - m_labelAvailable->setFrameShape(QFrame::Panel); - m_labelAvailable->setFrameShadow(QFrame::Sunken); - m_mainWindow.statusBar()->addWidget(m_labelAvailable); + m_buttonAvailable = new QPushButton(this); + m_menuAvailable = new QMenu(this); + m_buttonAvailable->setMenu(m_menuAvailable); + m_mainWindow.statusBar()->addWidget(m_buttonAvailable); - m_labelNotAvailable = new QLabel(this); - m_labelNotAvailable->setFrameShape(QFrame::Panel); - m_labelNotAvailable->setFrameShadow(QFrame::Sunken); - m_mainWindow.statusBar()->addWidget(m_labelNotAvailable); + m_buttonNotAvailable = new QPushButton(this); + m_menuNotAvailable = new QMenu(this); + m_buttonNotAvailable->setMenu(m_menuNotAvailable); + m_mainWindow.statusBar()->addWidget(m_buttonNotAvailable); m_action = m_mainWindow.menuView()->addAction(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/refresh.png")), tr("Refresh presence"), this, &PresenceWidget::refresh); @@ -39,8 +41,10 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) : void PresenceWidget::refresh() { - m_labelAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???"))); - m_labelNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(tr("???"))); + m_buttonAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???"))); + m_menuAvailable->clear(); + m_buttonNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(tr("???"))); + m_menuNotAvailable->clear(); m_action->setEnabled(false); @@ -57,23 +61,19 @@ void PresenceWidget::finished() goto after; } + for(const auto &status : m_reply->presenceStatuses()) { - int available = 0, - notAvailable = 0; - for(const auto &status : m_reply->presenceStatuses()) - { - if(status.presence == QStringLiteral("J")) - available++; - else if(status.presence == QStringLiteral("N")) - notAvailable++; - else - qWarning() << "unknown presence" << status.firstName << status.lastName << status.presence; - } - - m_labelAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(available)); - m_labelNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(notAvailable)); + if(status.presence == QStringLiteral("J")) + m_menuAvailable->addAction(tr("%0 %1").arg(status.firstName).arg(status.lastName)); + else if(status.presence == QStringLiteral("N")) + m_menuNotAvailable->addAction(tr("%0 %1").arg(status.firstName).arg(status.lastName)); + else + qWarning() << "unknown presence" << status.firstName << status.lastName << status.presence; } + m_buttonAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(m_menuAvailable->actions().count())); + m_buttonNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(m_menuNotAvailable->actions().count())); + after: m_action->setEnabled(true); m_reply = Q_NULLPTR; diff --git a/plugins/presenceplugin/presencewidget.h b/plugins/presenceplugin/presencewidget.h index 71f6f86..15a8ed6 100644 --- a/plugins/presenceplugin/presencewidget.h +++ b/plugins/presenceplugin/presencewidget.h @@ -4,7 +4,8 @@ #include "replies/getpresencestatusreply.h" -class QLabel; +class QPushButton; +class QMenu; class QAction; class MainWindow; @@ -23,8 +24,10 @@ private Q_SLOTS: private: MainWindow &m_mainWindow; - QLabel *m_labelAvailable; - QLabel *m_labelNotAvailable; + QPushButton *m_buttonAvailable; + QMenu *m_menuAvailable; + QPushButton *m_buttonNotAvailable; + QMenu *m_menuNotAvailable; QAction *m_action;