Fixed dateEdit and buttons being disabled

This commit is contained in:
0xFEEDC0DE64 committed 2017-12-11 11:04:26 +01:00
1 parent 5064975385
commit c8a49efca9
4 files changed
+91 -8

No files matched your search

+51 -4
View File
@@ -56,15 +56,17 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
auto layout = new QVBoxLayout(widget);
m_stripsWidgetHeaders[i] = new QLabel(dayName, widget);
{
auto label = new QLabel(dayName, widget);
auto font = label->font();
auto font = m_stripsWidgetHeaders[i]->font();
font.setBold(true);
label->setFont(font);
layout->addWidget(label);
m_stripsWidgetHeaders[i]->setFont(font);
}
layout->addWidget(m_stripsWidgetHeaders[i]);
m_stripsWidgets[i] = new StripsWidget(m_erfassung, m_userInfo.userId, m_stripFactory, m_projects, widget);
connect(m_stripsWidgets[i], &StripsWidget::refreshingChanged, this, &MainWindow::refreshingChanged);
layout->addWidget(m_stripsWidgets[i++]);
layout->addStretch(1);
@@ -159,10 +161,23 @@ void MainWindow::getProjectsFinished()
void MainWindow::getAuswertungFinished()
{
if(std::none_of(std::begin(m_stripsWidgets), std::end(m_stripsWidgets), [](StripsWidget *stripsWidget){
return stripsWidget->refreshing();
}))
{
ui->actionToday->setEnabled(true);
ui->actionRefresh->setEnabled(true);
ui->dateEditDate->setEnabled(true);
ui->pushButtonPrev->setEnabled(true);
ui->pushButtonNext->setEnabled(true);
}
if(!m_getAuswertungReply->success())
{
m_auswertungDate = QDate();
QMessageBox::warning(this, tr("Could not load Auswertung!"), tr("Could not load Auswertung!") % "\n\n" % m_getAuswertungReply->message());
m_getAuswertungReply->deleteLater();
m_getAuswertungReply = Q_NULLPTR;
return;
}
@@ -199,6 +214,9 @@ void MainWindow::getAuswertungFinished()
m_balanceLabel->setText(tr("%0: %1").arg(tr("Balance")).arg(gleitzeit));
m_holidaysLabel->setText(tr("%0: %1").arg(tr("Holidays")).arg(urlaubsAnspruch));
m_getAuswertungReply->deleteLater();
m_getAuswertungReply = Q_NULLPTR;
}
void MainWindow::contextMenuBooking(const QPoint &pos)
@@ -625,6 +643,17 @@ void MainWindow::dateChanged(bool force)
m_getAuswertungReply = m_erfassung.doGetAuswertung(m_userInfo.userId, auswertungDate);
connect(m_getAuswertungReply, &ZeiterfassungReply::finished, this, &MainWindow::getAuswertungFinished);
}
if(std::any_of(std::begin(m_stripsWidgets), std::end(m_stripsWidgets), [](StripsWidget *stripsWidget) {
return stripsWidget->refreshing();
}) || m_getAuswertungReply)
{
ui->actionToday->setEnabled(false);
ui->actionRefresh->setEnabled(false);
ui->dateEditDate->setEnabled(false);
ui->pushButtonPrev->setEnabled(false);
ui->pushButtonNext->setEnabled(false);
}
}
void MainWindow::openAuswertung()
@@ -663,6 +692,24 @@ void MainWindow::minimumTimeChanged()
ui->timeEditTime->setMinimumTime(m_currentStripWidget->minimumTime());
}
void MainWindow::refreshingChanged()
{
if(m_getAuswertungReply)
return;
{
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->setEnabled(allFinished);
ui->pushButtonPrev->setEnabled(allFinished);
ui->pushButtonNext->setEnabled(allFinished);
}
}
void MainWindow::startEnabledChanged()
{
ui->timeEditTime->setEnabled(m_currentStripWidget->startEnabled() ||
+3 -2
View File
@@ -37,7 +37,7 @@ private Q_SLOTS:
void timeAssignmentTimeChanged();
void minimumTimeChanged();
void refreshingChanged();
void startEnabledChanged();
void endEnabledChanged();
@@ -62,7 +62,8 @@ private:
QLabel *m_holidaysLabel;
StripFactory &m_stripFactory;
StripsWidget *m_stripsWidgets[7];
std::array<QLabel*, 7> m_stripsWidgetHeaders;
std::array<StripsWidget*, 7> m_stripsWidgets;
StripsWidget *m_currentStripWidget;
};
+34
View File
@@ -25,6 +25,7 @@ StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory
m_layout(new QVBoxLayout(this)),
m_bookingsModel(new BookingsModel(this)),
m_timeAssignmentsModel(new TimeAssignmentsModel(this)),
m_refreshing(false),
m_startEnabled(false),
m_endEnabled(false),
m_getBookingsReply(Q_NULLPTR),
@@ -79,6 +80,11 @@ const QTime StripsWidget::minimumTime() const
return m_minimumTime;
}
bool StripsWidget::refreshing() const
{
return m_refreshing;
}
bool StripsWidget::startEnabled() const
{
return m_startEnabled;
@@ -111,6 +117,12 @@ void StripsWidget::refreshBookings()
m_getBookingsReply = m_erfassung.doGetBookings(m_userId, m_date, m_date);
connect(m_getBookingsReply, &ZeiterfassungReply::finished, this, &StripsWidget::getBookingsFinished);
if(!m_refreshing)
{
m_refreshing = true;
Q_EMIT refreshingChanged();
}
}
void StripsWidget::refreshTimeAssignments()
@@ -125,6 +137,12 @@ void StripsWidget::refreshTimeAssignments()
m_getTimeAssignmentsReply = m_erfassung.doGetTimeAssignments(m_userId, m_date, m_date);
connect(m_getTimeAssignmentsReply, &ZeiterfassungReply::finished, this, &StripsWidget::getTimeAssignmentsFinished);
if(!m_refreshing)
{
m_refreshing = true;
Q_EMIT refreshingChanged();
}
}
bool StripsWidget::createStrips()
@@ -410,7 +428,15 @@ void StripsWidget::getBookingsFinished()
m_bookings = m_getBookingsReply->bookings();
if(!m_getTimeAssignmentsReply)
{
if(m_refreshing)
{
m_refreshing = false;
Q_EMIT refreshingChanged();
}
createStrips();
}
m_getBookingsReply->deleteLater();
m_getBookingsReply = Q_NULLPTR;
@@ -421,7 +447,15 @@ void StripsWidget::getTimeAssignmentsFinished()
m_timeAssignments = m_getTimeAssignmentsReply->timeAssignments();
if(!m_getBookingsReply)
{
if(m_refreshing)
{
m_refreshing = false;
Q_EMIT refreshingChanged();
}
createStrips();
}
m_getTimeAssignmentsReply->deleteLater();
m_getTimeAssignmentsReply = Q_NULLPTR;
+3 -2
View File
@@ -36,7 +36,7 @@ public:
const QTime timeAssignmentTime() const;
const QTime lastTimeAssignmentStart() const;
const QTime minimumTime() const;
bool refreshing() const;
bool startEnabled() const;
bool endEnabled() const;
@@ -53,7 +53,7 @@ Q_SIGNALS:
void timeAssignmentTimeChanged();
void lastTimeAssignmentStartChanged();
void minimumTimeChanged();
void refreshingChanged();
void startEnabledChanged();
void endEnabledChanged();
@@ -87,6 +87,7 @@ private:
QTime m_timeAssignmentTime;
QTime m_lastTimeAssignmentStart;
QTime m_minimumTime;
bool m_refreshing;
bool m_startEnabled;
bool m_endEnabled;