Release 1.5 #39
@@ -14,6 +14,8 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) :
|
|||||||
QWidget(&mainWindow),
|
QWidget(&mainWindow),
|
||||||
m_mainWindow(mainWindow)
|
m_mainWindow(mainWindow)
|
||||||
{
|
{
|
||||||
|
connect(&m_mainWindow, &MainWindow::refreshEverything, this, &PresenceWidget::refresh);
|
||||||
|
|
||||||
m_labelAvailable = new QLabel(this);
|
m_labelAvailable = new QLabel(this);
|
||||||
m_labelAvailable->setFrameShape(QFrame::Panel);
|
m_labelAvailable->setFrameShape(QFrame::Panel);
|
||||||
m_labelAvailable->setFrameShadow(QFrame::Sunken);
|
m_labelAvailable->setFrameShadow(QFrame::Sunken);
|
||||||
@@ -25,17 +27,17 @@ PresenceWidget::PresenceWidget(MainWindow &mainWindow) :
|
|||||||
m_mainWindow.statusBar()->addWidget(m_labelNotAvailable);
|
m_mainWindow.statusBar()->addWidget(m_labelNotAvailable);
|
||||||
|
|
||||||
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::timeout);
|
tr("Refresh presence"), this, &PresenceWidget::refresh);
|
||||||
|
|
||||||
auto timer = new QTimer(this);
|
auto timer = new QTimer(this);
|
||||||
timer->setInterval(60000);
|
timer->setInterval(60000);
|
||||||
connect(timer, &QTimer::timeout, this, &PresenceWidget::timeout);
|
connect(timer, &QTimer::timeout, this, &PresenceWidget::refresh);
|
||||||
timer->start();
|
timer->start();
|
||||||
|
|
||||||
timeout();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PresenceWidget::timeout()
|
void PresenceWidget::refresh()
|
||||||
{
|
{
|
||||||
m_labelAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???")));
|
m_labelAvailable->setText(tr("%0: %1").arg(tr("Available")).arg(tr("???")));
|
||||||
m_labelNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(tr("???")));
|
m_labelNotAvailable->setText(tr("%0: %1").arg(tr("Not available")).arg(tr("???")));
|
||||||
|
@@ -18,7 +18,7 @@ public:
|
|||||||
explicit PresenceWidget(MainWindow &mainWindow);
|
explicit PresenceWidget(MainWindow &mainWindow);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void timeout();
|
void refresh();
|
||||||
void finished();
|
void finished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -18,6 +18,9 @@ ReportsWidget::ReportsWidget(MainWindow &mainWindow) :
|
|||||||
QWidget(&mainWindow),
|
QWidget(&mainWindow),
|
||||||
m_mainWindow(mainWindow)
|
m_mainWindow(mainWindow)
|
||||||
{
|
{
|
||||||
|
connect(&m_mainWindow, &MainWindow::dateChanged, this, &ReportsWidget::dateChanged);
|
||||||
|
connect(&m_mainWindow, &MainWindow::refreshEverything, this, &ReportsWidget::refresh);
|
||||||
|
|
||||||
m_labelBalance = new QLabel(this);
|
m_labelBalance = new QLabel(this);
|
||||||
m_labelBalance->setFrameShape(QFrame::Panel);
|
m_labelBalance->setFrameShape(QFrame::Panel);
|
||||||
m_labelBalance->setFrameShadow(QFrame::Sunken);
|
m_labelBalance->setFrameShadow(QFrame::Sunken);
|
||||||
|
@@ -38,13 +38,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
for(quint8 i = 0; i < 7; i++)
|
|
||||||
{
|
|
||||||
m_stripsWidgets[i] = new StripsWidget(*this, ui->widgetWeek);
|
|
||||||
connect(m_stripsWidgets[i], &StripsWidget::refreshingChanged, this, &MainWindow::refreshingChanged);
|
|
||||||
ui->layoutWeek->addWidget(m_stripsWidgets[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
setWindowTitle(tr("Zeiterfassung - %0 (%1)").arg(m_userInfo.text).arg(m_userInfo.email));
|
setWindowTitle(tr("Zeiterfassung - %0 (%1)").arg(m_userInfo.text).arg(m_userInfo.email));
|
||||||
|
|
||||||
ui->actionQuit->setShortcut(QKeySequence::Quit);
|
ui->actionQuit->setShortcut(QKeySequence::Quit);
|
||||||
@@ -52,7 +45,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
|
|||||||
connect(ui->actionToday, &QAction::triggered, [=](){ ui->dateEditDate->setDate(QDate::currentDate()); });
|
connect(ui->actionToday, &QAction::triggered, [=](){ ui->dateEditDate->setDate(QDate::currentDate()); });
|
||||||
|
|
||||||
ui->actionRefresh->setShortcut(QKeySequence::Refresh);
|
ui->actionRefresh->setShortcut(QKeySequence::Refresh);
|
||||||
connect(ui->actionRefresh, &QAction::triggered, this, [=](){ dateChanged(true); });
|
connect(ui->actionRefresh, &QAction::triggered, this, &MainWindow::refreshEverything);
|
||||||
|
|
||||||
connect(ui->actionAboutMe, &QAction::triggered, [=](){ AboutMeDialog(userInfo, this).exec(); });
|
connect(ui->actionAboutMe, &QAction::triggered, [=](){ AboutMeDialog(userInfo, this).exec(); });
|
||||||
connect(ui->actionSettings, &QAction::triggered, [=](){ SettingsDialog(m_settings, this).exec(); });
|
connect(ui->actionSettings, &QAction::triggered, [=](){ SettingsDialog(m_settings, this).exec(); });
|
||||||
@@ -62,7 +55,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
|
|||||||
connect(ui->actionAboutQt, &QAction::triggered, [=](){ QMessageBox::aboutQt(this); });
|
connect(ui->actionAboutQt, &QAction::triggered, [=](){ QMessageBox::aboutQt(this); });
|
||||||
|
|
||||||
ui->dateEditDate->setDate(QDate::currentDate());
|
ui->dateEditDate->setDate(QDate::currentDate());
|
||||||
connect(ui->dateEditDate, &QDateTimeEdit::dateChanged, this, [=](){ dateChanged(false); });
|
connect(ui->dateEditDate, &QDateTimeEdit::dateChanged, this, &MainWindow::dateChangedSlot);
|
||||||
|
|
||||||
connect(ui->pushButtonPrev, &QAbstractButton::pressed, [=](){ ui->dateEditDate->setDate(ui->dateEditDate->date().addDays(-1)); });
|
connect(ui->pushButtonPrev, &QAbstractButton::pressed, [=](){ ui->dateEditDate->setDate(ui->dateEditDate->date().addDays(-1)); });
|
||||||
connect(ui->pushButtonNext, &QAbstractButton::pressed, [=](){ ui->dateEditDate->setDate(ui->dateEditDate->date().addDays(1)); });
|
connect(ui->pushButtonNext, &QAbstractButton::pressed, [=](){ ui->dateEditDate->setDate(ui->dateEditDate->date().addDays(1)); });
|
||||||
@@ -83,7 +76,14 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
|
|||||||
connect(ui->pushButtonStart, &QAbstractButton::pressed, this, &MainWindow::pushButtonStartPressed);
|
connect(ui->pushButtonStart, &QAbstractButton::pressed, this, &MainWindow::pushButtonStartPressed);
|
||||||
connect(ui->pushButtonEnd, &QAbstractButton::pressed, this, &MainWindow::pushButtonEndPressed);
|
connect(ui->pushButtonEnd, &QAbstractButton::pressed, this, &MainWindow::pushButtonEndPressed);
|
||||||
|
|
||||||
dateChanged();
|
for(quint8 i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
m_stripsWidgets[i] = new StripsWidget(*this, ui->widgetWeek);
|
||||||
|
connect(this, &MainWindow::refreshEverything, m_stripsWidgets[i], &StripsWidget::refresh);
|
||||||
|
ui->layoutWeek->addWidget(m_stripsWidgets[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
dateChangedSlot(ui->dateEditDate->date());
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
@@ -141,6 +141,11 @@ QDate MainWindow::date() const
|
|||||||
return ui->dateEditDate->date();
|
return ui->dateEditDate->date();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::setDate(const QDate &date)
|
||||||
|
{
|
||||||
|
ui->dateEditDate->setDate(date);
|
||||||
|
}
|
||||||
|
|
||||||
const QMap<QString, QString> &MainWindow::projects() const
|
const QMap<QString, QString> &MainWindow::projects() const
|
||||||
{
|
{
|
||||||
return m_projects;
|
return m_projects;
|
||||||
@@ -305,18 +310,17 @@ void MainWindow::pushButtonEndPressed()
|
|||||||
ui->pushButtonNext->setEnabled(false);
|
ui->pushButtonNext->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::dateChanged(bool force)
|
void MainWindow::dateChangedSlot(const QDate &date)
|
||||||
{
|
{
|
||||||
auto firstDayOfWeek = ui->dateEditDate->date().addDays(-(ui->dateEditDate->date().dayOfWeek() - 1));
|
auto firstDayOfWeek = date.addDays(-(ui->dateEditDate->date().dayOfWeek() - 1));
|
||||||
|
|
||||||
for(quint8 i = 0; i < 7; i++)
|
for(quint8 i = 0; i < 7; i++)
|
||||||
{
|
{
|
||||||
auto date = firstDayOfWeek.addDays(i);
|
auto weekDay = firstDayOfWeek.addDays(i);
|
||||||
|
|
||||||
if(force || m_stripsWidgets[i]->date() != date)
|
m_stripsWidgets[i]->setDate(weekDay);
|
||||||
m_stripsWidgets[i]->setDate(date);
|
|
||||||
|
|
||||||
if(date == ui->dateEditDate->date() && (force || m_currentStripWidget != m_stripsWidgets[i]))
|
if(weekDay == date && m_currentStripWidget != m_stripsWidgets[i])
|
||||||
{
|
{
|
||||||
if(m_currentStripWidget)
|
if(m_currentStripWidget)
|
||||||
{
|
{
|
||||||
@@ -337,16 +341,7 @@ void MainWindow::dateChanged(bool force)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(std::any_of(std::begin(m_stripsWidgets), std::end(m_stripsWidgets), [](StripsWidget *stripsWidget) {
|
Q_EMIT dateChanged(ui->dateEditDate->date());
|
||||||
return stripsWidget->refreshing();
|
|
||||||
}))
|
|
||||||
{
|
|
||||||
ui->actionToday->setEnabled(false);
|
|
||||||
ui->actionRefresh->setEnabled(false);
|
|
||||||
ui->dateEditDate->setReadOnly(true);
|
|
||||||
ui->pushButtonPrev->setEnabled(false);
|
|
||||||
ui->pushButtonNext->setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::minimumTimeChanged()
|
void MainWindow::minimumTimeChanged()
|
||||||
@@ -354,21 +349,6 @@ void MainWindow::minimumTimeChanged()
|
|||||||
ui->timeEditTime->setMinimumTime(m_currentStripWidget->minimumTime());
|
ui->timeEditTime->setMinimumTime(m_currentStripWidget->minimumTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::refreshingChanged()
|
|
||||||
{
|
|
||||||
{
|
|
||||||
auto allFinished = std::none_of(std::begin(m_stripsWidgets), std::end(m_stripsWidgets), [](StripsWidget *stripsWidget){
|
|
||||||
return stripsWidget->refreshing();
|
|
||||||
});
|
|
||||||
|
|
||||||
ui->actionToday->setEnabled(allFinished);
|
|
||||||
ui->actionRefresh->setEnabled(allFinished);
|
|
||||||
ui->dateEditDate->setReadOnly(!allFinished);
|
|
||||||
ui->pushButtonPrev->setEnabled(allFinished);
|
|
||||||
ui->pushButtonNext->setEnabled(allFinished);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::startEnabledChanged()
|
void MainWindow::startEnabledChanged()
|
||||||
{
|
{
|
||||||
auto startEnabled = m_currentStripWidget->startEnabled();
|
auto startEnabled = m_currentStripWidget->startEnabled();
|
||||||
|
@@ -42,18 +42,22 @@ public:
|
|||||||
StripFactory &stripFactory() const;
|
StripFactory &stripFactory() const;
|
||||||
|
|
||||||
QDate date() const;
|
QDate date() const;
|
||||||
|
void setDate(const QDate &date);
|
||||||
|
|
||||||
const QMap<QString, QString> &projects() const;
|
const QMap<QString, QString> &projects() const;
|
||||||
const std::array<StripsWidget*, 7> &stripsWidgets() const;
|
const std::array<StripsWidget*, 7> &stripsWidgets() const;
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void dateChanged(const QDate &date);
|
||||||
|
void refreshEverything();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void getProjectsFinished();
|
void getProjectsFinished();
|
||||||
void pushButtonStartPressed();
|
void pushButtonStartPressed();
|
||||||
void pushButtonEndPressed();
|
void pushButtonEndPressed();
|
||||||
void dateChanged(bool force = false);
|
void dateChangedSlot(const QDate &date);
|
||||||
|
|
||||||
void minimumTimeChanged();
|
void minimumTimeChanged();
|
||||||
void refreshingChanged();
|
|
||||||
void startEnabledChanged();
|
void startEnabledChanged();
|
||||||
void endEnabledChanged();
|
void endEnabledChanged();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user