Added display of soll ist time to StripsWidget

This commit is contained in:
0xFEEDC0DE64
2018-05-25 20:27:28 +02:00
parent a2a7d29b11
commit cb5f54aa91
2 changed files with 83 additions and 22 deletions

View File

@@ -12,10 +12,14 @@
#include "timeutils.h" #include "timeutils.h"
#include "stripfactory.h" #include "stripfactory.h"
const QStringList StripsWidget::m_weekDays { tr("Monday"), tr("Tuesday"),
tr("Wednesday"), tr("Thursday"), tr("Friday"), tr("Saturday"), tr("Sunday") };
StripsWidget::StripsWidget(MainWindow &mainWindow, QWidget *parent) : StripsWidget::StripsWidget(MainWindow &mainWindow, QWidget *parent) :
QFrame(parent), QFrame(parent),
m_mainWindow(mainWindow), m_mainWindow(mainWindow),
m_refreshing(false), m_refreshing(false),
m_refreshingDayinfo(false),
m_refreshingBookings(false), m_refreshingBookings(false),
m_refreshingTimeAssignments(false), m_refreshingTimeAssignments(false),
m_startEnabled(false), m_startEnabled(false),
@@ -24,15 +28,20 @@ StripsWidget::StripsWidget(MainWindow &mainWindow, QWidget *parent) :
auto layout = new QVBoxLayout(this); auto layout = new QVBoxLayout(this);
m_headerLayout = new QHBoxLayout; m_headerLayout = new QHBoxLayout;
m_label = new QLabel;
m_label[0] = new QLabel;
{ {
auto font = m_label->font(); auto font = m_label[0]->font();
font.setBold(true); font.setBold(true);
m_label->setFont(font); m_label[0]->setFont(font);
} }
m_headerLayout->addWidget(m_label, 1); m_headerLayout->addWidget(m_label[0], 1);
layout->addLayout(m_headerLayout); layout->addLayout(m_headerLayout);
m_label[1] = new QLabel;
layout->addWidget(m_label[1]);
m_stripsLayout = new QVBoxLayout; m_stripsLayout = new QVBoxLayout;
layout->addLayout(m_stripsLayout); layout->addLayout(m_stripsLayout);
@@ -56,9 +65,14 @@ QBoxLayout *StripsWidget::stripsLayout() const
return m_stripsLayout; return m_stripsLayout;
} }
QLabel *StripsWidget::label() const QLabel *StripsWidget::label0() const
{ {
return m_label; return m_label[0];
}
QLabel *StripsWidget::label1() const
{
return m_label[1];
} }
const QDate &StripsWidget::date() const const QDate &StripsWidget::date() const
@@ -73,12 +87,11 @@ void StripsWidget::setDate(const QDate &date)
Q_EMIT dateChanged(m_date = date); Q_EMIT dateChanged(m_date = date);
if(m_date.isValid()) if(m_date.isValid())
m_label->setText(tr("%0 (%1)") m_label[0]->setText(tr("%0 (%1)")
.arg(std::array<QString, 7> { tr("Monday"), tr("Tuesday"), tr("Wednesday"), tr("Thursday"), .arg(m_weekDays.at(m_date.dayOfWeek() - 1))
tr("Friday"), tr("Saturday"), tr("Sunday") }[m_date.dayOfWeek() - 1])
.arg(m_date.toString(tr("dd.MM.yyyy")))); .arg(m_date.toString(tr("dd.MM.yyyy"))));
else else
m_label->setText(tr("Invalid")); m_label[0]->setText(tr("Invalid"));
refresh(); refresh();
} }
@@ -98,6 +111,11 @@ void StripsWidget::setHighlighted(bool highlighted)
} }
} }
const GetDayinfoReply::Dayinfo &StripsWidget::dayinfo() const
{
return m_dayinfo;
}
const QVector<GetBookingsReply::Booking> &StripsWidget::bookings() const const QVector<GetBookingsReply::Booking> &StripsWidget::bookings() const
{ {
return m_bookings; return m_bookings;
@@ -128,6 +146,11 @@ bool StripsWidget::refreshing() const
return m_refreshing; return m_refreshing;
} }
bool StripsWidget::refreshingDayinfo() const
{
return m_refreshingDayinfo;
}
bool StripsWidget::refreshingBookings() const bool StripsWidget::refreshingBookings() const
{ {
return m_refreshingBookings; return m_refreshingBookings;
@@ -152,12 +175,34 @@ void StripsWidget::refresh()
{ {
clearStrips(); clearStrips();
m_label[1]->setText(QString());
m_stripsLayout->addWidget(new QLabel(tr("Loading..."), this)); m_stripsLayout->addWidget(new QLabel(tr("Loading..."), this));
refreshDayinfo();
refreshBookings(false); refreshBookings(false);
refreshTimeAssignments(false); refreshTimeAssignments(false);
} }
void StripsWidget::refreshDayinfo()
{
if(!m_date.isValid())
{
qWarning() << "invalid date";
return;
}
if(!m_refreshing)
Q_EMIT refreshingChanged(m_refreshing = true);
if(!m_refreshingDayinfo)
Q_EMIT refreshingDayinfoChanged(m_refreshingDayinfo = true);
invalidateValues();
m_getDayinfoReply = m_mainWindow.erfassung().doGetDayinfo(m_mainWindow.userInfo().userId, m_date, m_date);
connect(m_getDayinfoReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getDayinfoFinished);
}
void StripsWidget::refreshBookings(bool createLabel) void StripsWidget::refreshBookings(bool createLabel)
{ {
if(!m_date.isValid()) if(!m_date.isValid())
@@ -483,6 +528,13 @@ void StripsWidget::clearStrips()
} }
} }
void StripsWidget::getDayinfoFinished()
{
Q_EMIT dayinfoChanged(m_dayinfo = m_getDayinfoReply->dayinfos().first());
m_label[1]->setText(QString("%0 - %1").arg(m_dayinfo.soll.toString("HH:mm")).arg(m_dayinfo.ist.toString("HH:mm")));
}
void StripsWidget::getBookingsFinished() void StripsWidget::getBookingsFinished()
{ {
Q_EMIT bookingsChanged(m_bookings = m_getBookingsReply->bookings()); Q_EMIT bookingsChanged(m_bookings = m_getBookingsReply->bookings());
@@ -490,13 +542,11 @@ void StripsWidget::getBookingsFinished()
if(m_refreshingBookings) if(m_refreshingBookings)
Q_EMIT refreshingBookingsChanged(m_refreshingBookings = false); Q_EMIT refreshingBookingsChanged(m_refreshingBookings = false);
if(!m_getTimeAssignmentsReply) if(m_refreshing && !m_getDayinfoReply && !m_getTimeAssignmentsReply)
{ Q_EMIT refreshingChanged(m_refreshing = false);
if(m_refreshing)
Q_EMIT refreshingChanged(m_refreshing = false);
if(!m_getTimeAssignmentsReply)
createStrips(); createStrips();
}
m_getBookingsReply = Q_NULLPTR; m_getBookingsReply = Q_NULLPTR;
} }
@@ -508,13 +558,11 @@ void StripsWidget::getTimeAssignmentsFinished()
if(m_refreshingTimeAssignments) if(m_refreshingTimeAssignments)
Q_EMIT refreshingTimeAssignmentsChanged(m_refreshingTimeAssignments = false); Q_EMIT refreshingTimeAssignmentsChanged(m_refreshingTimeAssignments = false);
if(!m_getBookingsReply) if(m_refreshing && !m_getDayinfoReply && !m_getBookingsReply)
{ Q_EMIT refreshingChanged(m_refreshing = false);
if(m_refreshing)
Q_EMIT refreshingChanged(m_refreshing = false);
if(!m_getBookingsReply)
createStrips(); createStrips();
}
m_getTimeAssignmentsReply = Q_NULLPTR; m_getTimeAssignmentsReply = Q_NULLPTR;
} }

View File

@@ -6,6 +6,7 @@
#include <QTime> #include <QTime>
#include "zeiterfassungguilib_global.h" #include "zeiterfassungguilib_global.h"
#include "replies/getdayinforeply.h"
#include "replies/getbookingsreply.h" #include "replies/getbookingsreply.h"
#include "replies/gettimeassignmentsreply.h" #include "replies/gettimeassignmentsreply.h"
@@ -27,7 +28,8 @@ public:
QBoxLayout *headerLayout() const; QBoxLayout *headerLayout() const;
QBoxLayout *stripsLayout() const; QBoxLayout *stripsLayout() const;
QLabel *label() const; QLabel *label0() const;
QLabel *label1() const;
const QDate &date() const; const QDate &date() const;
void setDate(const QDate &date); void setDate(const QDate &date);
@@ -35,6 +37,7 @@ public:
bool highlighted() const; bool highlighted() const;
void setHighlighted(bool highlighted); void setHighlighted(bool highlighted);
const GetDayinfoReply::Dayinfo &dayinfo() const;
const QVector<GetBookingsReply::Booking> &bookings() const; const QVector<GetBookingsReply::Booking> &bookings() const;
const QVector<GetTimeAssignmentsReply::TimeAssignment> &timeAssignments() const; const QVector<GetTimeAssignmentsReply::TimeAssignment> &timeAssignments() const;
@@ -42,12 +45,14 @@ public:
const QTime &lastTimeAssignmentStart() const; const QTime &lastTimeAssignmentStart() const;
const QTime &minimumTime() const; const QTime &minimumTime() const;
bool refreshing() const; bool refreshing() const;
bool refreshingDayinfo() const;
bool refreshingBookings() const; bool refreshingBookings() const;
bool refreshingTimeAssignments() const; bool refreshingTimeAssignments() const;
bool startEnabled() const; bool startEnabled() const;
bool endEnabled() const; bool endEnabled() const;
void refresh(); void refresh();
void refreshDayinfo();
void refreshBookings(bool createLabel = true); void refreshBookings(bool createLabel = true);
void refreshTimeAssignments(bool createLabel = true); void refreshTimeAssignments(bool createLabel = true);
bool createStrips(); bool createStrips();
@@ -57,6 +62,7 @@ Q_SIGNALS:
void dateChanged(const QDate &date); void dateChanged(const QDate &date);
void highlightedChanged(bool highlighted); void highlightedChanged(bool highlighted);
void dayinfoChanged(const GetDayinfoReply::Dayinfo &dayinfo);
void bookingsChanged(const QVector<GetBookingsReply::Booking> &bookings); void bookingsChanged(const QVector<GetBookingsReply::Booking> &bookings);
void timeAssignmentsChanged(const QVector<GetTimeAssignmentsReply::TimeAssignment> &timeAssignments); void timeAssignmentsChanged(const QVector<GetTimeAssignmentsReply::TimeAssignment> &timeAssignments);
@@ -64,12 +70,14 @@ Q_SIGNALS:
void lastTimeAssignmentStartChanged(const QTime &lastTimeAssignmentStart); void lastTimeAssignmentStartChanged(const QTime &lastTimeAssignmentStart);
void minimumTimeChanged(const QTime &minimumTime); void minimumTimeChanged(const QTime &minimumTime);
void refreshingChanged(bool refreshing); void refreshingChanged(bool refreshing);
void refreshingDayinfoChanged(bool refreshingDayinfo);
void refreshingBookingsChanged(bool refreshingBookings); void refreshingBookingsChanged(bool refreshingBookings);
void refreshingTimeAssignmentsChanged(bool refreshingTimeAssignments); void refreshingTimeAssignmentsChanged(bool refreshingTimeAssignments);
void startEnabledChanged(bool startEnabled); void startEnabledChanged(bool startEnabled);
void endEnabledChanged(bool endEnabled); void endEnabledChanged(bool endEnabled);
private Q_SLOTS: private Q_SLOTS:
void getDayinfoFinished();
void getBookingsFinished(); void getBookingsFinished();
void getTimeAssignmentsFinished(); void getTimeAssignmentsFinished();
@@ -87,11 +95,12 @@ private:
QBoxLayout *m_headerLayout; QBoxLayout *m_headerLayout;
QBoxLayout *m_stripsLayout; QBoxLayout *m_stripsLayout;
QLabel *m_label; QLabel *m_label[2];
QDate m_date; QDate m_date;
bool m_highlighted; bool m_highlighted;
GetDayinfoReply::Dayinfo m_dayinfo;
QVector<GetBookingsReply::Booking> m_bookings; QVector<GetBookingsReply::Booking> m_bookings;
QVector<GetTimeAssignmentsReply::TimeAssignment> m_timeAssignments; QVector<GetTimeAssignmentsReply::TimeAssignment> m_timeAssignments;
@@ -99,11 +108,15 @@ private:
QTime m_lastTimeAssignmentStart; QTime m_lastTimeAssignmentStart;
QTime m_minimumTime; QTime m_minimumTime;
bool m_refreshing; bool m_refreshing;
bool m_refreshingDayinfo;
bool m_refreshingBookings; bool m_refreshingBookings;
bool m_refreshingTimeAssignments; bool m_refreshingTimeAssignments;
bool m_startEnabled; bool m_startEnabled;
bool m_endEnabled; bool m_endEnabled;
std::unique_ptr<GetDayinfoReply> m_getDayinfoReply;
std::unique_ptr<GetBookingsReply> m_getBookingsReply; std::unique_ptr<GetBookingsReply> m_getBookingsReply;
std::unique_ptr<GetTimeAssignmentsReply> m_getTimeAssignmentsReply; std::unique_ptr<GetTimeAssignmentsReply> m_getTimeAssignmentsReply;
static const QStringList m_weekDays;
}; };