PresencePlugin now shows employees #37

This commit is contained in:
0xFEEDC0DE64
2017-12-22 23:14:25 +01:00
parent d15ec86470
commit 45fcf52db3
2 changed files with 32 additions and 29 deletions

View File

@@ -1,12 +1,14 @@
#include "presencewidget.h" #include "presencewidget.h"
#include <QLabel> #include <QPushButton>
#include <QStatusBar>
#include <QMenu> #include <QMenu>
#include <QStatusBar>
#include <QTimer> #include <QTimer>
#include <QMessageBox> #include <QMessageBox>
#include <QStringBuilder> #include <QStringBuilder>
#include <QPushButton>
#include "mainwindow.h" #include "mainwindow.h"
#include "zeiterfassungapi.h" #include "zeiterfassungapi.h"
@@ -16,15 +18,15 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) :
{ {
connect(&m_mainWindow, &MainWindow::refreshEverything, this, &PresenceWidget::refresh); connect(&m_mainWindow, &MainWindow::refreshEverything, this, &PresenceWidget::refresh);
m_labelAvailable = new QLabel(this); m_buttonAvailable = new QPushButton(this);
m_labelAvailable->setFrameShape(QFrame::Panel); m_menuAvailable = new QMenu(this);
m_labelAvailable->setFrameShadow(QFrame::Sunken); m_buttonAvailable->setMenu(m_menuAvailable);
m_mainWindow.statusBar()->addWidget(m_labelAvailable); m_mainWindow.statusBar()->addWidget(m_buttonAvailable);
m_labelNotAvailable = new QLabel(this); m_buttonNotAvailable = new QPushButton(this);
m_labelNotAvailable->setFrameShape(QFrame::Panel); m_menuNotAvailable = new QMenu(this);
m_labelNotAvailable->setFrameShadow(QFrame::Sunken); m_buttonNotAvailable->setMenu(m_menuNotAvailable);
m_mainWindow.statusBar()->addWidget(m_labelNotAvailable); m_mainWindow.statusBar()->addWidget(m_buttonNotAvailable);
m_action = m_mainWindow.menuView()->addAction(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/refresh.png")), m_action = m_mainWindow.menuView()->addAction(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/refresh.png")),
tr("Refresh presence"), this, &PresenceWidget::refresh); tr("Refresh presence"), this, &PresenceWidget::refresh);
@@ -39,8 +41,10 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) :
void PresenceWidget::refresh() void PresenceWidget::refresh()
{ {
m_labelAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???"))); m_buttonAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???")));
m_labelNotAvailable->setText(tr("%0: %1").arg(tr("Not 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); m_action->setEnabled(false);
@@ -57,22 +61,18 @@ void PresenceWidget::finished()
goto after; goto after;
} }
{
int available = 0,
notAvailable = 0;
for(const auto &status : m_reply->presenceStatuses()) for(const auto &status : m_reply->presenceStatuses())
{ {
if(status.presence == QStringLiteral("J")) if(status.presence == QStringLiteral("J"))
available++; m_menuAvailable->addAction(tr("%0 %1").arg(status.firstName).arg(status.lastName));
else if(status.presence == QStringLiteral("N")) else if(status.presence == QStringLiteral("N"))
notAvailable++; m_menuNotAvailable->addAction(tr("%0 %1").arg(status.firstName).arg(status.lastName));
else else
qWarning() << "unknown presence" << status.firstName << status.lastName << status.presence; qWarning() << "unknown presence" << status.firstName << status.lastName << status.presence;
} }
m_labelAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(available)); m_buttonAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(m_menuAvailable->actions().count()));
m_labelNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(notAvailable)); m_buttonNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(m_menuNotAvailable->actions().count()));
}
after: after:
m_action->setEnabled(true); m_action->setEnabled(true);

View File

@@ -4,7 +4,8 @@
#include "replies/getpresencestatusreply.h" #include "replies/getpresencestatusreply.h"
class QLabel; class QPushButton;
class QMenu;
class QAction; class QAction;
class MainWindow; class MainWindow;
@@ -23,8 +24,10 @@ private Q_SLOTS:
private: private:
MainWindow &m_mainWindow; MainWindow &m_mainWindow;
QLabel *m_labelAvailable; QPushButton *m_buttonAvailable;
QLabel *m_labelNotAvailable; QMenu *m_menuAvailable;
QPushButton *m_buttonNotAvailable;
QMenu *m_menuNotAvailable;
QAction *m_action; QAction *m_action;