Plugin advanced view #29

Merged
0xFEEDC0DE64 merged 11 commits from plugin-advanced-view into master 2017-12-18 21:52:59 +01:00
22 changed files with 542 additions and 256 deletions
Showing only changes of commit 27b3a5d7af - Show all commits

View File

@@ -15,15 +15,16 @@ DEPENDPATH += $$PWD/../../zeiterfassunglib
DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT
HEADERS += advancedviewplugin.h \ HEADERS += advancedviewplugin.h \
advancedviewwidget.h advancedviewwidget.h \
advanvedviewdialog.h
SOURCES += advancedviewplugin.cpp \ SOURCES += advancedviewplugin.cpp \
advancedviewwidget.cpp advancedviewwidget.cpp \
advanvedviewdialog.cpp
FORMS += FORMS += advanvedviewdialog.ui
RESOURCES += \ RESOURCES += advancedviewplugin_resources.qrc
advancedviewplugin_resources.qrc
TRANSLATIONS += TRANSLATIONS +=

View File

@@ -3,18 +3,27 @@
#include <QIcon> #include <QIcon>
#include "stripswidget.h" #include "stripswidget.h"
#include "advanvedviewdialog.h"
AdvancedViewWidget::AdvancedViewWidget(StripsWidget &stripsWidget) : AdvancedViewWidget::AdvancedViewWidget(StripsWidget &stripsWidget) :
QToolButton(&stripsWidget), QPushButton(&stripsWidget),
m_stripsWidget(stripsWidget) m_stripsWidget(stripsWidget)
{ {
setIcon(QIcon(QStringLiteral(":/zeiterfassunglib/plugins/advancedviewplugin/images/advanced-view.png"))); setIcon(QIcon(QStringLiteral(":/zeiterfassunglib/plugins/advancedviewplugin/images/advanced-view.png")));
setText(tr("Advanced view"));
connect(&stripsWidget, &StripsWidget::dateChanged, this, &AdvancedViewWidget::dateChanged); connect(&stripsWidget, &StripsWidget::dateChanged, this, &AdvancedViewWidget::dateChanged);
dateChanged(stripsWidget.date()); dateChanged(stripsWidget.date());
connect(this, &QAbstractButton::pressed, this, &AdvancedViewWidget::pressedSlot);
} }
void AdvancedViewWidget::dateChanged(const QDate &date) void AdvancedViewWidget::dateChanged(const QDate &date)
{ {
setEnabled(date.isValid()); setEnabled(date.isValid());
} }
void AdvancedViewWidget::pressedSlot()
{
AdvanvedViewDialog dialog(m_stripsWidget);
dialog.exec();
}

View File

@@ -1,11 +1,11 @@
#ifndef ADVANCEDVIEWWIDGET_H #ifndef ADVANCEDVIEWWIDGET_H
#define ADVANCEDVIEWWIDGET_H #define ADVANCEDVIEWWIDGET_H
#include <QToolButton> #include <QPushButton>
class StripsWidget; class StripsWidget;
class AdvancedViewWidget : public QToolButton class AdvancedViewWidget : public QPushButton
{ {
Q_OBJECT Q_OBJECT
@@ -14,6 +14,7 @@ public:
private Q_SLOTS: private Q_SLOTS:
void dateChanged(const QDate &date); void dateChanged(const QDate &date);
void pressedSlot();
private: private:
StripsWidget &m_stripsWidget; StripsWidget &m_stripsWidget;

View File

@@ -0,0 +1,18 @@
#include "advanvedviewdialog.h"
#include "ui_advanvedviewdialog.h"
#include "stripswidget.h"
#include "mainwindow.h"
AdvanvedViewDialog::AdvanvedViewDialog(StripsWidget &stripsWidget) :
QDialog(&stripsWidget.mainWindow()),
ui(new Ui::AdvanvedViewDialog),
m_stripsWidget(stripsWidget)
{
ui->setupUi(this);
}
AdvanvedViewDialog::~AdvanvedViewDialog()
{
delete ui;
}

View File

@@ -0,0 +1,23 @@
#ifndef ADVANVEDVIEWDIALOG_H
#define ADVANVEDVIEWDIALOG_H
#include <QDialog>
class StripsWidget;
namespace Ui { class AdvanvedViewDialog; }
class AdvanvedViewDialog : public QDialog
{
Q_OBJECT
public:
explicit AdvanvedViewDialog(StripsWidget &stripsWidget);
~AdvanvedViewDialog();
private:
Ui::AdvanvedViewDialog *ui;
StripsWidget &m_stripsWidget;
};
#endif // ADVANVEDVIEWDIALOG_H

View File

@@ -0,0 +1,71 @@
<ui version="4.0">
<author/>
<comment/>
<exportmacro/>
<class>AdvanvedViewDialog</class>
<widget class="QDialog" name="AdvanvedViewDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>30</x>
<y>240</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</widget>
<pixmapfunction/>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AdvanvedViewDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AdvanvedViewDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -55,7 +55,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
for(quint8 i = 0; i < 7; i++) for(quint8 i = 0; i < 7; i++)
{ {
m_stripsWidgets[i] = new StripsWidget(m_erfassung, m_userInfo.userId, m_stripFactory, m_projects, ui->widgetWeek); m_stripsWidgets[i] = new StripsWidget(*this);
connect(m_stripsWidgets[i], &StripsWidget::refreshingChanged, this, &MainWindow::refreshingChanged); connect(m_stripsWidgets[i], &StripsWidget::refreshingChanged, this, &MainWindow::refreshingChanged);
ui->layoutWeek->addWidget(m_stripsWidgets[i]); ui->layoutWeek->addWidget(m_stripsWidgets[i]);
} }

View File

@@ -7,24 +7,19 @@
#include <QStringBuilder> #include <QStringBuilder>
#include <QDebug> #include <QDebug>
#include "mainwindow.h"
#include "zeiterfassungapi.h" #include "zeiterfassungapi.h"
#include "timeutils.h" #include "timeutils.h"
#include "stripfactory.h" #include "stripfactory.h"
StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory &stripFactory, StripsWidget::StripsWidget(MainWindow &mainWindow) :
const QMap<QString, QString> &projects, QWidget *parent) : QWidget(&mainWindow),
QWidget(parent), m_mainWindow(mainWindow),
m_erfassung(erfassung),
m_userId(userId),
m_stripFactory(stripFactory),
m_projects(projects),
m_refreshing(false), m_refreshing(false),
m_refreshingBookings(false), m_refreshingBookings(false),
m_refreshingTimeAssignments(false), m_refreshingTimeAssignments(false),
m_startEnabled(false), m_startEnabled(false),
m_endEnabled(false), m_endEnabled(false)
m_getBookingsReply(Q_NULLPTR),
m_getTimeAssignmentsReply(Q_NULLPTR)
{ {
auto layout = new QVBoxLayout(this); auto layout = new QVBoxLayout(this);
@@ -46,6 +41,11 @@ StripsWidget::StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory
setLayout(layout); setLayout(layout);
} }
MainWindow &StripsWidget::mainWindow() const
{
return m_mainWindow;
}
QBoxLayout *StripsWidget::headerLayout() const QBoxLayout *StripsWidget::headerLayout() const
{ {
return m_headerLayout; return m_headerLayout;
@@ -166,7 +166,7 @@ void StripsWidget::refreshBookings()
invalidateValues(); invalidateValues();
m_getBookingsReply = m_erfassung.doGetBookings(m_userId, m_date, m_date); m_getBookingsReply = m_mainWindow.erfassung().doGetBookings(m_mainWindow.userInfo().userId, m_date, m_date);
connect(m_getBookingsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getBookingsFinished); connect(m_getBookingsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getBookingsFinished);
} }
@@ -192,7 +192,7 @@ void StripsWidget::refreshTimeAssignments()
invalidateValues(); invalidateValues();
m_getTimeAssignmentsReply = m_erfassung.doGetTimeAssignments(m_userId, m_date, m_date); m_getTimeAssignmentsReply = m_mainWindow.erfassung().doGetTimeAssignments(m_mainWindow.userInfo().userId, m_date, m_date);
connect(m_getTimeAssignmentsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getTimeAssignmentsFinished); connect(m_getTimeAssignmentsReply.get(), &ZeiterfassungReply::finished, this, &StripsWidget::getTimeAssignmentsFinished);
} }
@@ -532,10 +532,10 @@ void StripsWidget::invalidateValues()
Q_EMIT endEnabledChanged(m_endEnabled = false); Q_EMIT endEnabledChanged(m_endEnabled = false);
} }
QString StripsWidget::buildProjectString(const QString &project) QString StripsWidget::buildProjectString(const QString &project) const
{ {
if(m_projects.contains(project)) if(m_mainWindow.projects().contains(project))
return m_projects.value(project) % "\n" % project; return m_mainWindow.projects().value(project) % "\n" % project;
else else
{ {
qWarning() << "could not find project" << project; qWarning() << "could not find project" << project;
@@ -545,7 +545,7 @@ QString StripsWidget::buildProjectString(const QString &project)
QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time)
{ {
auto widget = m_stripFactory.createBookingStartStrip(this).release(); auto widget = m_mainWindow.stripFactory().createBookingStartStrip(this).release();
if(auto labelTime = widget->findChild<QWidget*>(QStringLiteral("labelTime"))) if(auto labelTime = widget->findChild<QWidget*>(QStringLiteral("labelTime")))
labelTime->setProperty("text", time.toString(tr("HH:mm"))); labelTime->setProperty("text", time.toString(tr("HH:mm")));
@@ -564,7 +564,7 @@ QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time)
QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time) QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time)
{ {
auto widget = m_stripFactory.createBookingEndStrip(this).release(); auto widget = m_mainWindow.stripFactory().createBookingEndStrip(this).release();
if(auto labelTime = widget->findChild<QWidget*>(QStringLiteral("labelTime"))) if(auto labelTime = widget->findChild<QWidget*>(QStringLiteral("labelTime")))
labelTime->setProperty("text", time.toString(tr("HH:mm"))); labelTime->setProperty("text", time.toString(tr("HH:mm")));
@@ -583,7 +583,7 @@ QWidget *StripsWidget::appendBookingEndStrip(int id, const QTime &time)
QWidget *StripsWidget::appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject, const QString &workpackage, const QString &text) QWidget *StripsWidget::appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject, const QString &workpackage, const QString &text)
{ {
auto widget = m_stripFactory.createTimeAssignmentStrip(this).release(); auto widget = m_mainWindow.stripFactory().createTimeAssignmentStrip(this).release();
if(auto labelTime = widget->findChild<QWidget*>(QStringLiteral("labelTime"))) if(auto labelTime = widget->findChild<QWidget*>(QStringLiteral("labelTime")))
labelTime->setProperty("text", duration == QTime(0, 0) ? tr("Open") : duration.toString(tr("HH:mm"))); labelTime->setProperty("text", duration == QTime(0, 0) ? tr("Open") : duration.toString(tr("HH:mm")));

View File

@@ -12,19 +12,18 @@
class QBoxLayout; class QBoxLayout;
class QLabel; class QLabel;
template <class Key, class T> class QMap;
template <typename T> class QVector; template <typename T> class QVector;
class ZeiterfassungApi; class MainWindow;
class StripFactory;
class ZEITERFASSUNGLIBSHARED_EXPORT StripsWidget : public QWidget class ZEITERFASSUNGLIBSHARED_EXPORT StripsWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit StripsWidget(ZeiterfassungApi &erfassung, int userId, StripFactory &stripFactory, explicit StripsWidget(MainWindow &mainWindow);
const QMap<QString, QString> &projects, QWidget *parent = Q_NULLPTR);
MainWindow &mainWindow() const;
QBoxLayout *headerLayout() const; QBoxLayout *headerLayout() const;
QBoxLayout *stripsLayout() const; QBoxLayout *stripsLayout() const;
@@ -72,19 +71,15 @@ private Q_SLOTS:
void getTimeAssignmentsFinished(); void getTimeAssignmentsFinished();
private: private:
void invalidateValues(); void invalidateValues();
QString buildProjectString(const QString &project) const;
QString buildProjectString(const QString &project);
QWidget *appendBookingStartStrip(int id, const QTime &time); QWidget *appendBookingStartStrip(int id, const QTime &time);
QWidget *appendBookingEndStrip(int id, const QTime &time); QWidget *appendBookingEndStrip(int id, const QTime &time);
QWidget *appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject, QWidget *appendTimeAssignmentStrip(int id, const QTime &duration, const QString &project, const QString &subproject,
const QString &workpackage, const QString &text); const QString &workpackage, const QString &text);
ZeiterfassungApi &m_erfassung; MainWindow &m_mainWindow;
int m_userId;
StripFactory &m_stripFactory;
const QMap<QString, QString> &m_projects;
QBoxLayout *m_headerLayout; QBoxLayout *m_headerLayout;
QBoxLayout *m_stripsLayout; QBoxLayout *m_stripsLayout;