Release 1.5 #39

Merged
0xFEEDC0DE64 merged 24 commits from devel into master 2017-12-20 00:29:23 +01:00
65 changed files with 872 additions and 449 deletions
Showing only changes of commit 68909a15f9 - Show all commits

View File

@@ -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("???")));

View File

@@ -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:

View File

@@ -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);

View File

@@ -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();

View File

@@ -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();