diff --git a/CMakeLists.txt b/CMakeLists.txt index 42e5c48..87f5dd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,7 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) dialogs/abstractdialog.h dialogs/abstractdialog.cpp dialogs/newitemdialog.h dialogs/newitemdialog.cpp dialogs/edititemdialog.h dialogs/edititemdialog.cpp + views/itemdetailmapper.h views/itemdetailmapper.cpp ) # Define target properties for Android with Qt 6 as: # set_property(TARGET ${TARGET_APP} APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR diff --git a/dialogs/edititemdialog.cpp b/dialogs/edititemdialog.cpp index de7807a..df596ac 100644 --- a/dialogs/edititemdialog.cpp +++ b/dialogs/edititemdialog.cpp @@ -1,11 +1,8 @@ #include "edititemdialog.h" -#include -#include -#include -#include -#include -#include +#include + +#include "../views/itemdetailmapper.h" EditItemDialog::EditItemDialog(QWidget* parent) : AbstractDialog(parent) {} @@ -17,44 +14,7 @@ void EditItemDialog::createContent() { setWindowTitle(tr("Edit item...")); - m_contentContainer = new QWidget(this); - - // REFACTOR deduce label names and types from meta data & use a factory - m_nameLabel = new QLabel("&Name"); - m_nameEdit = new QLineEdit(); - m_nameLabel->setBuddy(m_nameEdit); - - m_descriptionLabel = new QLabel("&Description"); - m_descriptionEdit = new QLineEdit(); - m_descriptionLabel->setBuddy(m_descriptionEdit); - - m_infoLabel = new QLabel("&Info"); - m_infoEdit = new QLineEdit(); - m_infoLabel->setBuddy(m_infoEdit); - - m_amountLabel = new QLabel("&Amount"); - m_amountBox = new QSpinBox(); - m_amountBox->setMaximum(1000); - m_amountLabel->setBuddy(m_amountBox); - - m_factorLabel = new QLabel("&Factor"); - m_factorBox = new QDoubleSpinBox(); - m_factorBox->setMaximum(1000); - m_factorLabel->setBuddy(m_factorBox); - - QGridLayout* layout = new QGridLayout(); - layout->addWidget(m_nameLabel, 0, 0, 1, 1); - layout->addWidget(m_nameEdit, 0, 1, 1, 1); - layout->addWidget(m_descriptionLabel, 1, 0, 1, 1); - layout->addWidget(m_descriptionEdit, 1, 1, 1, 1); - layout->addWidget(m_infoLabel, 2, 0, 1, 1); - layout->addWidget(m_infoEdit, 2, 1, 1, 1); - layout->addWidget(m_amountLabel, 3, 0, 1, 1); - layout->addWidget(m_amountBox, 3, 1, 1, 1); - layout->addWidget(m_factorLabel, 4, 0, 1, 1); - layout->addWidget(m_factorBox, 4, 1, 1, 1); - - m_contentContainer->setLayout(layout); + m_contentContainer = new ItemDetailMapper(this); m_outerLayout->insertWidget(0, m_contentContainer); } diff --git a/views/itemdetailmapper.cpp b/views/itemdetailmapper.cpp new file mode 100644 index 0000000..62945ce --- /dev/null +++ b/views/itemdetailmapper.cpp @@ -0,0 +1,48 @@ +#include "itemdetailmapper.h" + +#include +#include +#include +#include +#include +#include + +ItemDetailMapper::ItemDetailMapper(QWidget* parent) + : QWidget{parent} { + // REFACTOR deduce label names and types from meta data & use a factory + m_nameLabel = new QLabel("&Name"); + m_nameEdit = new QLineEdit(); + m_nameLabel->setBuddy(m_nameEdit); + + m_descriptionLabel = new QLabel("&Description"); + m_descriptionEdit = new QLineEdit(); + m_descriptionLabel->setBuddy(m_descriptionEdit); + + m_infoLabel = new QLabel("&Info"); + m_infoEdit = new QLineEdit(); + m_infoLabel->setBuddy(m_infoEdit); + + m_amountLabel = new QLabel("&Amount"); + m_amountBox = new QSpinBox(); + m_amountBox->setMaximum(1000); + m_amountLabel->setBuddy(m_amountBox); + + m_factorLabel = new QLabel("&Factor"); + m_factorBox = new QDoubleSpinBox(); + m_factorBox->setMaximum(1000); + m_factorLabel->setBuddy(m_factorBox); + + QGridLayout* layout = new QGridLayout(); + layout->addWidget(m_nameLabel, 0, 0, 1, 1); + layout->addWidget(m_nameEdit, 0, 1, 1, 1); + layout->addWidget(m_descriptionLabel, 1, 0, 1, 1); + layout->addWidget(m_descriptionEdit, 1, 1, 1, 1); + layout->addWidget(m_infoLabel, 2, 0, 1, 1); + layout->addWidget(m_infoEdit, 2, 1, 1, 1); + layout->addWidget(m_amountLabel, 3, 0, 1, 1); + layout->addWidget(m_amountBox, 3, 1, 1, 1); + layout->addWidget(m_factorLabel, 4, 0, 1, 1); + layout->addWidget(m_factorBox, 4, 1, 1, 1); + + setLayout(layout); +} diff --git a/views/itemdetailmapper.h b/views/itemdetailmapper.h new file mode 100644 index 0000000..79bb239 --- /dev/null +++ b/views/itemdetailmapper.h @@ -0,0 +1,35 @@ +#ifndef ITEMDETAILMAPPER_H +#define ITEMDETAILMAPPER_H + +#include + +class QLabel; +class QLineEdit; +class QDoubleSpinBox; +class QSpinBox; + +class ItemDetailMapper : public QWidget { + Q_OBJECT + public: + explicit ItemDetailMapper(QWidget* parent = nullptr); + + signals: + + private: + QLabel* m_nameLabel = nullptr; + QLineEdit* m_nameEdit = nullptr; + + QLabel* m_descriptionLabel = nullptr; + QLineEdit* m_descriptionEdit = nullptr; + + QLabel* m_infoLabel = nullptr; + QLineEdit* m_infoEdit = nullptr; + + QLabel* m_amountLabel = nullptr; + QSpinBox* m_amountBox = nullptr; + + QLabel* m_factorLabel = nullptr; + QDoubleSpinBox* m_factorBox = nullptr; +}; + +#endif // ITEMDETAILMAPPER_H