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
HEADERS += advancedviewplugin.h \
advancedviewwidget.h
advancedviewwidget.h \
advanvedviewdialog.h
SOURCES += advancedviewplugin.cpp \
advancedviewwidget.cpp
advancedviewwidget.cpp \
advanvedviewdialog.cpp
FORMS +=
FORMS += advanvedviewdialog.ui
RESOURCES += \
advancedviewplugin_resources.qrc
RESOURCES += advancedviewplugin_resources.qrc
TRANSLATIONS +=

View File

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

View File

@@ -1,11 +1,11 @@
#ifndef ADVANCEDVIEWWIDGET_H
#define ADVANCEDVIEWWIDGET_H
#include <QToolButton>
#include <QPushButton>
class StripsWidget;
class AdvancedViewWidget : public QToolButton
class AdvancedViewWidget : public QPushButton
{
Q_OBJECT
@@ -14,6 +14,7 @@ public:
private Q_SLOTS:
void dateChanged(const QDate &date);
void pressedSlot();
private:
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++)
{
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);
ui->layoutWeek->addWidget(m_stripsWidgets[i]);
}

View File

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

View File

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