From 2bc0c9d1a27a7fb2cd65b5da0ff0e1271cb4fe2f Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Wed, 10 Apr 2019 22:01:17 +0200 Subject: [PATCH] Removed legacy project / workspace comboboxes for new unified one --- .../zeiterfassungsettings.cpp | 54 ++---------- zeiterfassungcorelib/zeiterfassungsettings.h | 18 ++-- zeiterfassungguilib/mainwindow.cpp | 88 +++++-------------- zeiterfassungguilib/mainwindow.h | 9 +- zeiterfassungguilib/mainwindow.ui | 41 +-------- zeiterfassungguilib/projectsmodel.cpp | 20 +++-- zeiterfassungguilib/projectsmodel.h | 15 ++-- zeiterfassungguilib/stripswidget.cpp | 19 +--- zeiterfassungguilib/stripswidget.h | 3 +- .../translations/zeiterfassungguilib_de.ts | 79 +++++++---------- .../translations/zeiterfassungguilib_en.ts | 79 +++++++---------- .../replies/getcomboboxreply.cpp | 8 +- .../replies/getcomboboxreply.h | 10 ++- 13 files changed, 142 insertions(+), 301 deletions(-) diff --git a/zeiterfassungcorelib/zeiterfassungsettings.cpp b/zeiterfassungcorelib/zeiterfassungsettings.cpp index d212e8e..e8e562a 100644 --- a/zeiterfassungcorelib/zeiterfassungsettings.cpp +++ b/zeiterfassungcorelib/zeiterfassungsettings.cpp @@ -6,8 +6,7 @@ const QString ZeiterfassungSettings::m_language("language"); const QString ZeiterfassungSettings::m_url("url"); const QString ZeiterfassungSettings::m_username("username"); const QString ZeiterfassungSettings::m_password("password"); -const QString ZeiterfassungSettings::m_projects("projects"); -const QString ZeiterfassungSettings::m_workpackages("workpackages"); +const QString ZeiterfassungSettings::m_lastWorkpackageIndex("lastWorkpackageIndex"); const QString ZeiterfassungSettings::m_texts("texte"); const QString ZeiterfassungSettings::m_theme("theme"); const QLocale::Language ZeiterfassungSettings::m_defaultLanguage(QLocale::AnyLanguage); @@ -148,68 +147,29 @@ bool ZeiterfassungSettings::setPassword(const QString &password) return success; } -QStringList ZeiterfassungSettings::projects() const +int ZeiterfassungSettings::lastWorkpackageIndex() const { - return value(m_projects).toStringList(); + return value(m_lastWorkpackageIndex).toInt(); } -bool ZeiterfassungSettings::setProjects(const QStringList &projects) +bool ZeiterfassungSettings::setLastWorkpackageIndex(int lastWorkpackageIndex) { - if(this->projects() == projects) + if (this->lastWorkpackageIndex() == lastWorkpackageIndex) return true; - if(projects.isEmpty()) - remove(m_projects); - else - setValue(m_projects, projects); + setValue(m_lastWorkpackageIndex, lastWorkpackageIndex); sync(); const auto success = status() == QSettings::NoError; if(success) - Q_EMIT projectsChanged(projects); + Q_EMIT lastWorkpackageIndexChanged(lastWorkpackageIndex); else Q_EMIT saveErrorOccured(); return success; } -bool ZeiterfassungSettings::prependProject(const QString &project) -{ - return setProjects(prependItem(projects(), project)); -} - -QStringList ZeiterfassungSettings::workpackages() const -{ - return value(m_workpackages).toStringList(); -} - -bool ZeiterfassungSettings::setWorkpackages(const QStringList &workpackages) -{ - if(this->workpackages() == workpackages) - return true; - - if(workpackages.isEmpty()) - remove(m_workpackages); - else - setValue(m_workpackages, workpackages); - - sync(); - - const auto success = status() == QSettings::NoError; - if(success) - Q_EMIT workpackagesChanged(workpackages); - else - Q_EMIT saveErrorOccured(); - - return success; -} - -bool ZeiterfassungSettings::prependWorkpackage(const QString &workpackage) -{ - return setWorkpackages(prependItem(workpackages(), workpackage)); -} - QStringList ZeiterfassungSettings::texts() const { return value(m_texts).toStringList(); diff --git a/zeiterfassungcorelib/zeiterfassungsettings.h b/zeiterfassungcorelib/zeiterfassungsettings.h index 8dc9e7c..64b3785 100644 --- a/zeiterfassungcorelib/zeiterfassungsettings.h +++ b/zeiterfassungcorelib/zeiterfassungsettings.h @@ -16,8 +16,7 @@ class ZEITERFASSUNGCORELIB_EXPORT ZeiterfassungSettings : public QSettings Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) Q_PROPERTY(QString username READ username WRITE setUsername NOTIFY usernameChanged) Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) - Q_PROPERTY(QStringList projects READ projects WRITE setProjects NOTIFY projectsChanged) - Q_PROPERTY(QStringList workpackages READ workpackages WRITE setWorkpackages NOTIFY workpackagesChanged) + Q_PROPERTY(int lastWorkpackageIndex READ lastWorkpackageIndex WRITE setLastWorkpackageIndex NOTIFY lastWorkpackageIndexChanged) Q_PROPERTY(QStringList texts READ texts WRITE setTexts NOTIFY textsChanged) Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) @@ -43,13 +42,8 @@ public: QString password() const; bool setPassword(const QString &password); - QStringList projects() const; - bool setProjects(const QStringList &projects); - bool prependProject(const QString &project); - - QStringList workpackages() const; - bool setWorkpackages(const QStringList &workpackages); - bool prependWorkpackage(const QString &workpackage); + int lastWorkpackageIndex() const; + bool setLastWorkpackageIndex(int lastWorkpackageIndex); QStringList texts() const; bool setTexts(const QStringList &texts); @@ -65,8 +59,7 @@ Q_SIGNALS: void urlChanged(const QUrl &url); void usernameChanged(const QString &username); void passwordChanged(const QString &password); - void projectsChanged(const QStringList &projects); - void workpackagesChanged(const QStringList &workpackages); + void lastWorkpackageIndexChanged(int lastWorkpackageIndex); void textsChanged(const QStringList &texts); void themeChanged(const QString &theme); @@ -77,8 +70,7 @@ private: static const QString m_url; static const QString m_username; static const QString m_password; - static const QString m_projects; - static const QString m_workpackages; + static const QString m_lastWorkpackageIndex; static const QString m_texts; static const QString m_theme; static const QLocale::Language m_defaultLanguage; diff --git a/zeiterfassungguilib/mainwindow.cpp b/zeiterfassungguilib/mainwindow.cpp index 6f37d99..86020cf 100644 --- a/zeiterfassungguilib/mainwindow.cpp +++ b/zeiterfassungguilib/mainwindow.cpp @@ -76,10 +76,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass connect(ui->pushButtonNow, &QAbstractButton::pressed, this, &MainWindow::pushButtonNowPressed); - m_getProjectsReply = erfassung.doGetProjects(userInfo.userId, QDate::currentDate()); - connect(m_getProjectsReply.get(), &ZeiterfassungReply::finished, this, &MainWindow::getProjectsFinished); - - ui->comboBoxWorkpackage->lineEdit()->setPlaceholderText(tr("Workpackage")); + ui->comboBoxProject->setModel(&m_projectsModel); ui->comboBoxText->lineEdit()->setPlaceholderText(tr("Text")); updateComboboxes(); @@ -97,8 +94,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass } dateChangedSlot(ui->dateEditDate->date()); - - ui->comboBoxDebug->setModel(&m_projectsModel); } MainWindow::~MainWindow() @@ -161,16 +156,21 @@ void MainWindow::setDate(const QDate &date) ui->dateEditDate->setDate(date); } -const QMap &MainWindow::projects() const -{ - return m_projects; -} - const std::array &MainWindow::stripsWidgets() const { return m_stripsWidgets; } +ProjectsModel &MainWindow::projectsModel() +{ + return m_projectsModel; +} + +const ProjectsModel &MainWindow::projectsModel() const +{ + return m_projectsModel; +} + void MainWindow::timerEvent(QTimerEvent *event) { if(event->timerId() == m_timerId) @@ -182,24 +182,6 @@ void MainWindow::timerEvent(QTimerEvent *event) QMainWindow::timerEvent(event); } -void MainWindow::getProjectsFinished() -{ - if(m_getProjectsReply->success()) - { - m_projects.clear(); - - for(const auto &project : m_getProjectsReply->items()) - m_projects.insert(project.value, project.label); - - updateComboboxes(); - } - else - QMessageBox::warning(this, tr("Could not load bookings!"), - tr("Could not load bookings!") % "\n\n" % m_getProjectsReply->message()); - - m_getProjectsReply = Q_NULLPTR; -} - void MainWindow::pushButtonNowPressed() { ui->dateEditDate->setDate(QDate::currentDate()); @@ -208,6 +190,12 @@ void MainWindow::pushButtonNowPressed() void MainWindow::pushButtonStartPressed() { + if (ui->comboBoxProject->currentIndex() == -1) + { + QMessageBox::warning(this, tr("Could not create booking!"), tr("Could not create booking!") % "\n\n" % tr("Please select a project/workpackage!")); + return; + } + if(m_timerId != -1) { killTimer(m_timerId); @@ -261,8 +249,8 @@ void MainWindow::pushButtonStartPressed() { auto reply = m_erfassung.doCreateTimeAssignment(m_userInfo.userId, ui->dateEditDate->date(), timeAssignmentTime, QTime(0, 0), - ui->comboBoxProject->currentData().toString(), - ui->comboBoxWorkpackage->currentText(), + ui->comboBoxProject->currentData(Qt::UserRole).toString(), + ui->comboBoxProject->currentData(Qt::EditRole).toString(), ui->comboBoxText->currentText()); reply->waitForFinished(); @@ -276,8 +264,7 @@ void MainWindow::pushButtonStartPressed() } } - m_settings.prependProject(ui->comboBoxProject->currentData().toString()); - m_settings.prependWorkpackage(ui->comboBoxWorkpackage->currentText()); + m_settings.setLastWorkpackageIndex(ui->comboBoxProject->currentIndex()); m_settings.prependText(ui->comboBoxText->currentText()); updateComboboxes(); @@ -392,7 +379,6 @@ void MainWindow::startEnabledChanged() ui->pushButtonNow->setEnabled(startEnabled || endEnabled); ui->comboBoxProject->setEnabled(startEnabled); - ui->comboBoxWorkpackage->setEnabled(startEnabled); ui->comboBoxText->setEnabled(startEnabled); ui->pushButtonStart->setEnabled(startEnabled); @@ -413,40 +399,6 @@ void MainWindow::endEnabledChanged() void MainWindow::updateComboboxes() { - ui->comboBoxProject->clear(); - - { - auto preferedProjects = m_settings.projects(); - - for(const auto &preferedProject : preferedProjects) - { - if(!m_projects.contains(preferedProject)) - { - qWarning() << "cannot find project" << preferedProject; - continue; - } - - ui->comboBoxProject->addItem(tr("%0 (%1)").arg(m_projects.value(preferedProject)).arg(preferedProject), preferedProject); - } - - if(preferedProjects.count()) - ui->comboBoxProject->insertSeparator(ui->comboBoxProject->count()); - - for(auto iter = m_projects.constBegin(); iter != m_projects.constEnd(); iter++) - { - if(!preferedProjects.contains(iter.key())) - ui->comboBoxProject->addItem(tr("%0 (%1)").arg(iter.value()).arg(iter.key()), iter.key()); - } - } - - ui->comboBoxWorkpackage->clear(); - - { - auto workpackages = m_settings.workpackages(); - for(const auto &workpackage : workpackages) - ui->comboBoxWorkpackage->addItem(workpackage); - } - ui->comboBoxText->clear(); { diff --git a/zeiterfassungguilib/mainwindow.h b/zeiterfassungguilib/mainwindow.h index 0f2b209..0c3f30f 100644 --- a/zeiterfassungguilib/mainwindow.h +++ b/zeiterfassungguilib/mainwindow.h @@ -46,9 +46,11 @@ public: QDate date() const; void setDate(const QDate &date); - const QMap &projects() const; const std::array &stripsWidgets() const; + ProjectsModel &projectsModel(); + const ProjectsModel &projectsModel() const; + Q_SIGNALS: void dateChanged(const QDate &date); void refreshEverything(); @@ -58,7 +60,6 @@ protected: virtual void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE; private Q_SLOTS: - void getProjectsFinished(); void pushButtonNowPressed(); void pushButtonStartPressed(); void pushButtonEndPressed(); @@ -78,10 +79,6 @@ private: StripFactory &m_stripFactory; const QSet &m_plugins; - std::unique_ptr m_getProjectsReply; - - QMap m_projects; - std::array m_stripsWidgets; StripsWidget *m_currentStripWidget; diff --git a/zeiterfassungguilib/mainwindow.ui b/zeiterfassungguilib/mainwindow.ui index aebe993..08151d5 100644 --- a/zeiterfassungguilib/mainwindow.ui +++ b/zeiterfassungguilib/mainwindow.ui @@ -108,30 +108,7 @@ - - - - 200 - 0 - - - - - - - - - 200 - 0 - - - - true - - - QComboBox::NoInsert - - + @@ -176,22 +153,6 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - diff --git a/zeiterfassungguilib/projectsmodel.cpp b/zeiterfassungguilib/projectsmodel.cpp index 7e4db59..79aada3 100644 --- a/zeiterfassungguilib/projectsmodel.cpp +++ b/zeiterfassungguilib/projectsmodel.cpp @@ -3,7 +3,6 @@ #include #include "zeiterfassungapi.h" -#include "replies/getcomboboxreply.h" ProjectsModel::ProjectsModel(int userId, const QDate &date, ZeiterfassungApi &api, QObject *parent) : QAbstractListModel(parent), @@ -48,7 +47,6 @@ QVariant ProjectsModel::data(const QModelIndex &index, int role) const switch (role) { case Qt::DisplayRole: - case Qt::EditRole: if (m_getProjectsReply->isFinished()) { Q_ASSERT(!m_getProjectsReply->success()); @@ -90,7 +88,6 @@ QVariant ProjectsModel::data(const QModelIndex &index, int role) const switch (role) { case Qt::DisplayRole: - case Qt::EditRole: if (project.getWorkpackagesReply->isFinished()) { Q_ASSERT(!project.getWorkpackagesReply->success()); @@ -112,9 +109,11 @@ QVariant ProjectsModel::data(const QModelIndex &index, int role) const switch (role) { case Qt::DisplayRole: - return std::get<0>(workpackage) + " (" + std::get<1>(workpackage) + ')'; + return workpackage.label + " (" + workpackage.value + ')'; case Qt::EditRole: - return std::get<0>(workpackage); + return workpackage.label; + case Qt::UserRole: + return project.value; default: return {}; } @@ -134,6 +133,15 @@ Qt::ItemFlags ProjectsModel::flags(const QModelIndex &index) const return flags; } +QString ProjectsModel::getProjectLabel(const QString &projectId) const +{ + const auto iter = std::find_if(m_projects.begin(), m_projects.end(), [&projectId](const Project &project){ return project.value == projectId; }); + if (iter == m_projects.end()) + return {}; + + return iter->label; +} + void ProjectsModel::getProjectsFinished() { if (!m_getProjectsReply->success()) @@ -169,7 +177,7 @@ void ProjectsModel::getWorkspacesFinished(ProjectsModel::Project &project) } for (const auto &item : project.getWorkpackagesReply->items()) - project.workpackages.push_back(std::make_pair(item.value, item.label)); + project.workpackages.emplace_back(item.value, item.label); project.getWorkpackagesReply = nullptr; diff --git a/zeiterfassungguilib/projectsmodel.h b/zeiterfassungguilib/projectsmodel.h index 88fa1d9..de0983a 100644 --- a/zeiterfassungguilib/projectsmodel.h +++ b/zeiterfassungguilib/projectsmodel.h @@ -6,24 +6,23 @@ #include #include +#include "replies/getcomboboxreply.h" + class ZeiterfassungApi; -class GetComboboxReply; class ProjectsModel : public QAbstractListModel { Q_OBJECT - struct Project { + struct Project : public GetComboboxReply::Item { Project(const QString &label, const QString &value, std::unique_ptr getWorkpackagesReply) : - label(label), value(value), getWorkpackagesReply(std::move(getWorkpackagesReply)) + GetComboboxReply::Item(label, value), + getWorkpackagesReply(std::move(getWorkpackagesReply)) {} - QString label; - QString value; - std::unique_ptr getWorkpackagesReply; - std::vector > workpackages; + std::vector workpackages; }; public: @@ -33,6 +32,8 @@ public: QVariant data(const QModelIndex &index, int role) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; + QString getProjectLabel(const QString &projectId) const; + private slots: void getProjectsFinished(); void getWorkspacesFinished(int index); diff --git a/zeiterfassungguilib/stripswidget.cpp b/zeiterfassungguilib/stripswidget.cpp index 4c97d06..778eb32 100644 --- a/zeiterfassungguilib/stripswidget.cpp +++ b/zeiterfassungguilib/stripswidget.cpp @@ -326,7 +326,7 @@ bool StripsWidget::createStrips() auto timeAssignment = *timeAssignmentsIter++; - appendTimeAssignmentStrip(timeAssignment.id, timeAssignment.timespan, buildProjectString(timeAssignment.project), + appendTimeAssignmentStrip(timeAssignment.id, timeAssignment.timespan, timeAssignment.project, timeAssignment.workpackage, timeAssignment.text); if(timeAssignment.timespan == QTime(0, 0)) @@ -369,7 +369,7 @@ bool StripsWidget::createStrips() timeAssignment = *timeAssignmentsIter++; - appendTimeAssignmentStrip(timeAssignment.id, timeAssignment.timespan, buildProjectString(timeAssignment.project), + appendTimeAssignmentStrip(timeAssignment.id, timeAssignment.timespan, timeAssignment.project, timeAssignment.workpackage, timeAssignment.text); if(timeAssignment.timespan == QTime(0, 0)) @@ -425,7 +425,7 @@ bool StripsWidget::createStrips() timeAssignment = *timeAssignmentsIter++; - appendTimeAssignmentStrip(timeAssignment.id, timeAssignment.timespan, buildProjectString(timeAssignment.project), + appendTimeAssignmentStrip(timeAssignment.id, timeAssignment.timespan, timeAssignment.project, timeAssignment.workpackage, timeAssignment.text); if(timeAssignment.timespan == QTime(0, 0)) @@ -582,17 +582,6 @@ void StripsWidget::invalidateValues() Q_EMIT endEnabledChanged(m_endEnabled = false); } -QString StripsWidget::buildProjectString(const QString &project) const -{ - if(m_mainWindow.projects().contains(project)) - return m_mainWindow.projects().value(project) % "\n" % project; - else - { - qWarning() << "could not find project" << project; - return project; - } -} - QWidget *StripsWidget::appendBookingStartStrip(int id, const QTime &time) { auto widget = m_mainWindow.stripFactory().createBookingStartStrip(this).release(); @@ -646,7 +635,7 @@ QWidget *StripsWidget::appendTimeAssignmentStrip(int id, const QTime &duration, qWarning() << "no labelTime found!"; if(auto labelProject = widget->findChild(QStringLiteral("labelProject"))) - labelProject->setProperty("text", project); + labelProject->setProperty("text", m_mainWindow.projectsModel().getProjectLabel(project) + "\n" + project); else qWarning() << "no labelProject found!"; diff --git a/zeiterfassungguilib/stripswidget.h b/zeiterfassungguilib/stripswidget.h index 650db4e..7e9ffd2 100644 --- a/zeiterfassungguilib/stripswidget.h +++ b/zeiterfassungguilib/stripswidget.h @@ -82,8 +82,7 @@ private Q_SLOTS: void getTimeAssignmentsFinished(); private: - void invalidateValues(); - QString buildProjectString(const QString &project) const; + void invalidateValues(); QWidget *appendBookingStartStrip(int id, const QTime &time); QWidget *appendBookingEndStrip(int id, const QTime &time, const QTime &duration); diff --git a/zeiterfassungguilib/translations/zeiterfassungguilib_de.ts b/zeiterfassungguilib/translations/zeiterfassungguilib_de.ts index fdaff3c..ae3209b 100644 --- a/zeiterfassungguilib/translations/zeiterfassungguilib_de.ts +++ b/zeiterfassungguilib/translations/zeiterfassungguilib_de.ts @@ -77,74 +77,74 @@ Jetzt - - - + + + Start Kommen - + End Gehen - + &File &Datei - + &About &Über - + &View &Ansicht - + &Tools &Werkzeuge - + &Quit &Beenden - + About &Me Über &mich - + About &zeiterfassung Über &zeiterfassung - + About &Qt Über &Qt - + &Today &Heute - + &Refresh everything Alles &neu laden - + &Settings &Einstellungen - + Help Hilfe @@ -154,47 +154,36 @@ Zeiterfassung - %0 (%1) - - Workpackage - Arbeitspaket - - - + Text Text - - - Could not load bookings! - Konnte Buchungen nicht laden! - - - - + + + Could not create booking! Konnte Buchung nicht erstellen! - - + + Please select a project/workpackage! + + + + + Could not edit time assignment! Konnte Kontierung nicht bearbeiten! - - - %0 (%1) - %0 (%1) - - - + Could not create time assignment! Konnte Kontierung nicht erstellen! - - + + Switch Wechseln @@ -202,12 +191,12 @@ ProjectsModel - + Loading projects... - + Loading workpackages... @@ -340,7 +329,7 @@ Booking ID: %1 - + %0h %0h @@ -407,7 +396,7 @@ Your bookings and time assignments for this day are in an illegal state!Ungültig - + Open Offen diff --git a/zeiterfassungguilib/translations/zeiterfassungguilib_en.ts b/zeiterfassungguilib/translations/zeiterfassungguilib_en.ts index e6f4778..2576b6c 100644 --- a/zeiterfassungguilib/translations/zeiterfassungguilib_en.ts +++ b/zeiterfassungguilib/translations/zeiterfassungguilib_en.ts @@ -77,74 +77,74 @@ - - - + + + Start - + End - + &File - + &About - + &View - + &Tools - + &Quit - + About &Me - + About &zeiterfassung - + About &Qt - + &Today - + &Refresh everything - + &Settings - + Help @@ -154,60 +154,49 @@ - - Workpackage - - - - + Text - - - Could not load bookings! - - - - - + + + Could not create booking! - + + Please select a project/workpackage! + + + + Could not create time assignment! - - + + Could not edit time assignment! - - + + Switch - - - - %0 (%1) - - ProjectsModel - + Loading projects... - + Loading workpackages... @@ -340,7 +329,7 @@ Booking ID: %1 - + %0h @@ -407,7 +396,7 @@ Your bookings and time assignments for this day are in an illegal state! - + Open diff --git a/zeiterfassungnetworklib/replies/getcomboboxreply.cpp b/zeiterfassungnetworklib/replies/getcomboboxreply.cpp index ccc10dd..e79a88c 100644 --- a/zeiterfassungnetworklib/replies/getcomboboxreply.cpp +++ b/zeiterfassungnetworklib/replies/getcomboboxreply.cpp @@ -15,7 +15,7 @@ GetComboboxReply::GetComboboxReply(std::unique_ptr &&reply, Zeite connect(m_reply.get(), &QNetworkReply::finished, this, &GetComboboxReply::requestFinished); } -const QVector &GetComboboxReply::items() const +const std::vector &GetComboboxReply::items() const { return m_items; } @@ -69,14 +69,14 @@ void GetComboboxReply::requestFinished() setSuccess(true); m_items.clear(); m_items.reserve(elementsArr.count()); - for(const auto &val : elementsArr) + for(const auto val : elementsArr) { auto obj = val.toObject(); - m_items.append({ + m_items.emplace_back( obj.value(QStringLiteral("label")).toString(), obj.value(QStringLiteral("value")).toString() - }); + ); } } diff --git a/zeiterfassungnetworklib/replies/getcomboboxreply.h b/zeiterfassungnetworklib/replies/getcomboboxreply.h index f13801f..2d945b3 100644 --- a/zeiterfassungnetworklib/replies/getcomboboxreply.h +++ b/zeiterfassungnetworklib/replies/getcomboboxreply.h @@ -1,9 +1,9 @@ #pragma once #include +#include #include -#include #include "zeiterfassungnetworklib_global.h" #include "zeiterfassungreply.h" @@ -19,16 +19,20 @@ public: struct Item { + Item(const QString &label, const QString &value) : + label(label), value(value) + {} + QString label; QString value; }; - const QVector &items() const; + const std::vector &items() const; private Q_SLOTS: void requestFinished(); private: std::unique_ptr m_reply; - QVector m_items; + std::vector m_items; };