Plugin advanced view #29
@@ -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 +=
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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;
|
||||
|
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++)
|
||||
{
|
||||
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]);
|
||||
}
|
||||
|
@@ -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")));
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user