Plugin advanced view #29
@@ -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 +=
|
||||||
|
|
||||||
|
@@ -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();
|
||||||
|
}
|
||||||
|
@@ -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;
|
||||||
|
18
plugins/advancedviewplugin/advanvedviewdialog.cpp
Normal file
18
plugins/advancedviewplugin/advanvedviewdialog.cpp
Normal 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;
|
||||||
|
}
|
23
plugins/advancedviewplugin/advanvedviewdialog.h
Normal file
23
plugins/advancedviewplugin/advanvedviewdialog.h
Normal 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
|
71
plugins/advancedviewplugin/advanvedviewdialog.ui
Normal file
71
plugins/advancedviewplugin/advanvedviewdialog.ui
Normal 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>
|
@@ -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]);
|
||||||
}
|
}
|
||||||
|
@@ -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")));
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user