Removd PresenceWidget blocking the input #50

This commit is contained in:
0xFEEDC0DE64
2017-12-23 10:41:01 +01:00
parent a005201915
commit 59536b69ec
3 changed files with 39 additions and 36 deletions

View File

@@ -4,6 +4,9 @@
#include <QDir> #include <QDir>
#include <QCoreApplication> #include <QCoreApplication>
#include <QLocale> #include <QLocale>
#include <QStatusBar>
#include "mainwindow.h"
#include "presencewidget.h" #include "presencewidget.h"
@@ -29,5 +32,5 @@ PresencePlugin::PresencePlugin(QObject *parent) :
void PresencePlugin::attachTo(MainWindow &mainWindow) void PresencePlugin::attachTo(MainWindow &mainWindow)
{ {
new PresenceWidget(mainWindow); mainWindow.statusBar()->addWidget(new PresenceWidget(mainWindow));
} }

View File

@@ -1,6 +1,5 @@
#include "presencewidget.h" #include "presencewidget.h"
#include <QPushButton>
#include <QMenu> #include <QMenu>
#include <QStatusBar> #include <QStatusBar>
#include <QTimer> #include <QTimer>
@@ -13,23 +12,18 @@
#include "zeiterfassungapi.h" #include "zeiterfassungapi.h"
PresenceWidget::PresenceWidget(MainWindow &mainWindow) : PresenceWidget::PresenceWidget(MainWindow &mainWindow) :
QWidget(&mainWindow), QPushButton(&mainWindow),
m_mainWindow(mainWindow) m_mainWindow(mainWindow)
{ {
connect(&m_mainWindow, &MainWindow::refreshEverything, this, &PresenceWidget::refresh); connect(&m_mainWindow, &MainWindow::refreshEverything, this, &PresenceWidget::refresh);
m_buttonAvailable = new QPushButton(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/present.png")), QStringLiteral(), this); m_menu = new QMenu(this);
m_menuAvailable = new QMenu(this); setMenu(m_menu);
m_buttonAvailable->setMenu(m_menuAvailable);
m_mainWindow.statusBar()->addWidget(m_buttonAvailable);
m_buttonNotAvailable = new QPushButton(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/not-present.png")), QStringLiteral(), this); m_action = new QAction(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/refresh.png")),
m_menuNotAvailable = new QMenu(this); tr("Refresh presence"), this);
m_buttonNotAvailable->setMenu(m_menuNotAvailable); connect(m_action, &QAction::triggered, this, &PresenceWidget::refresh);
m_mainWindow.statusBar()->addWidget(m_buttonNotAvailable); m_mainWindow.menuView()->addAction(m_action);
m_action = m_mainWindow.menuView()->addAction(QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/refresh.png")),
tr("Refresh presence"), this, &PresenceWidget::refresh);
auto timer = new QTimer(this); auto timer = new QTimer(this);
timer->setInterval(60000); timer->setInterval(60000);
@@ -41,10 +35,8 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) :
void PresenceWidget::refresh() void PresenceWidget::refresh()
{ {
m_buttonAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???"))); setText(tr("%0 available, %1 not available").arg(tr("???")).arg(tr("???")));
m_menuAvailable->clear(); m_menu->clear();
m_buttonNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(tr("???")));
m_menuNotAvailable->clear();
m_action->setEnabled(false); m_action->setEnabled(false);
@@ -61,18 +53,31 @@ void PresenceWidget::finished()
goto after; goto after;
} }
for(const auto &status : m_reply->presenceStatuses())
{ {
if(status.presence == QStringLiteral("J")) int present = 0,
m_menuAvailable->addAction(tr("%0 %1").arg(status.firstName).arg(status.lastName)); notPresent = 0;
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())); for(const auto &status : m_reply->presenceStatuses())
m_buttonNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(m_menuNotAvailable->actions().count())); {
QIcon icon;
if(status.presence == QStringLiteral("J"))
{
present++;
icon = QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/present.png"));
}
else if(status.presence == QStringLiteral("N"))
{
notPresent++;
icon = QIcon(QStringLiteral(":zeiterfassung/plugins/presenceplugin/images/not-present.png"));
}
else
qWarning() << "unknown presence" << status.firstName << status.lastName << status.presence;
m_menu->addAction(icon, tr("%0 %1").arg(status.firstName).arg(status.lastName));
}
setText(tr("%0 available, %1 not available").arg(present).arg(notPresent));
}
after: after:
m_action->setEnabled(true); m_action->setEnabled(true);

View File

@@ -1,16 +1,15 @@
#pragma once #pragma once
#include <QWidget> #include <QPushButton>
#include "replies/getpresencestatusreply.h" #include "replies/getpresencestatusreply.h"
class QPushButton;
class QMenu; class QMenu;
class QAction; class QAction;
class MainWindow; class MainWindow;
class PresenceWidget : public QWidget class PresenceWidget : public QPushButton
{ {
Q_OBJECT Q_OBJECT
@@ -24,11 +23,7 @@ private Q_SLOTS:
private: private:
MainWindow &m_mainWindow; MainWindow &m_mainWindow;
QPushButton *m_buttonAvailable; QMenu *m_menu;
QMenu *m_menuAvailable;
QPushButton *m_buttonNotAvailable;
QMenu *m_menuNotAvailable;
QAction *m_action; QAction *m_action;
std::unique_ptr<GetPresenceStatusReply> m_reply; std::unique_ptr<GetPresenceStatusReply> m_reply;