From 8b534e12299a51f34a31f11c39b288d549de79d0 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Sat, 21 Jul 2018 19:24:56 +0200 Subject: [PATCH] fill basket --- src/core/article.cpp | 4 +++- src/core/article.h | 1 + src/core/marketplace.cpp | 5 +++++ src/core/marketplace.h | 3 ++- src/gui/CMakeLists.txt | 3 +-- src/gui/mainwindow.cpp | 13 +++++++++++-- src/gui/pricedialog.cpp | 12 ++++++++++++ src/gui/pricedialog.h | 23 +++++++++++++++++++++++ src/gui/pricedialog.ui | 16 ++++------------ 9 files changed, 62 insertions(+), 18 deletions(-) create mode 100644 src/gui/pricedialog.cpp create mode 100644 src/gui/pricedialog.h diff --git a/src/core/article.cpp b/src/core/article.cpp index c46bcbd..ae34d46 100644 --- a/src/core/article.cpp +++ b/src/core/article.cpp @@ -1,6 +1,8 @@ #include "article.h" -//Article::Article() : Entity() {} +// Article::Article() : Entity() {} + +Article::Article(int price) : price_(price) {} // Article::Article(std::shared_ptr sellerPtr) : Entity() { sellerPtr_ = sellerPtr; } diff --git a/src/core/article.h b/src/core/article.h index 9b3f200..f2bfd15 100644 --- a/src/core/article.h +++ b/src/core/article.h @@ -15,6 +15,7 @@ class Article : public Entity { public: Article() = default; + Article(int price); //virtual ~Article() = default; void setArticleNo(int articleNo); diff --git a/src/core/marketplace.cpp b/src/core/marketplace.cpp index ded680f..8f39498 100644 --- a/src/core/marketplace.cpp +++ b/src/core/marketplace.cpp @@ -52,4 +52,9 @@ Seller* Marketplace::findSellerWithSellerNo(int sellerNo) if (iter == sellers_.end()) return nullptr; return (*iter).get(); +} + +void Marketplace::addArticleToBasket(std::unique_ptr
article) +{ + basket_.push_back(std::move(article)); } \ No newline at end of file diff --git a/src/core/marketplace.h b/src/core/marketplace.h index c37ba59..790b404 100644 --- a/src/core/marketplace.h +++ b/src/core/marketplace.h @@ -11,7 +11,7 @@ namespace { using SellersVec = std::vector>; using SalesVec = std::vector>; -using BasketVec = std::vector>; +using BasketVec = std::vector>; } // namespace struct Basket { @@ -28,6 +28,7 @@ class Marketplace int getNumSellersDelete(); void sortSellers(); Seller* findSellerWithSellerNo(int sellerNo); + void addArticleToBasket(std::unique_ptr
article); private: SellersVec sellers_; diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index d17aaa6..90899c4 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -11,10 +11,9 @@ find_package(Qt5Widgets CONFIG REQUIRED) set(GUI_SOURCES kima2.cpp mainwindow.cpp - mainwindow.ui sellerdialog.cpp - sellerdialog.ui sellermodel.cpp + pricedialog.cpp ) add_executable(kima2 ${GUI_SOURCES}) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index ded172e..d25c088 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1,6 +1,7 @@ #include "mainwindow.h" #include "sellerdialog.h" +#include "pricedialog.h" #include @@ -58,8 +59,16 @@ void MainWindow::on_sellerNoEdit_checkSellerNo() auto seller = marketplace_->findSellerWithSellerNo(sellerNo); if (seller) { std::cout << "!!! Seller gefunden: " << seller->getFirstName() << "\n"; - // TODO: Dialog für Preiseingabe anzeigen - // TODO: Warenkorb füllen + PriceDialog priceDialog(this); + auto dialogResult = priceDialog.exec(); + if (dialogResult == QDialog::Accepted) + { + int price = priceDialog.getPrice(); + auto article = std::make_unique
(price); + article->setSeller(seller); + std::cout << "!!! Neuer Artikel: " << article->getPrice() << "Cent \n"; + marketplace_->addArticleToBasket(std::move(article)); + } } ui_.sellerNoEdit->clear(); diff --git a/src/gui/pricedialog.cpp b/src/gui/pricedialog.cpp new file mode 100644 index 0000000..cf0bc1e --- /dev/null +++ b/src/gui/pricedialog.cpp @@ -0,0 +1,12 @@ +#include "pricedialog.h" + +PriceDialog::PriceDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f) +{ + ui_.setupUi(this); + ui_.priceSpinBox->setFocus(); +} + +int PriceDialog::getPrice() const +{ + return static_cast(ui_.priceSpinBox->value() * 100); +} \ No newline at end of file diff --git a/src/gui/pricedialog.h b/src/gui/pricedialog.h new file mode 100644 index 0000000..ce7fbaa --- /dev/null +++ b/src/gui/pricedialog.h @@ -0,0 +1,23 @@ +#ifndef PRICE_DIALOG_H +#define PRICE_DIALOG_H + +#include "ui_pricedialog.h" + +#include + +class PriceDialog : public QDialog +{ + Q_OBJECT + + public: + PriceDialog(QWidget* parent = nullptr, + Qt::WindowFlags f = Qt::WindowTitleHint | Qt::WindowSystemMenuHint); + int getPrice() const; + + private: + void on_model_duplicateSellerNo(const QString& message); + //virtual void accept() override; + Ui::PriceDialog ui_; +}; + +#endif \ No newline at end of file diff --git a/src/gui/pricedialog.ui b/src/gui/pricedialog.ui index 12b3dab..cf2062d 100644 --- a/src/gui/pricedialog.ui +++ b/src/gui/pricedialog.ui @@ -1,15 +1,7 @@ - priceDialog - - - - 0 - 0 - 311 - 114 - - + PriceDialog + Artikelpreis @@ -65,7 +57,7 @@ buttonBox accepted() - priceDialog + PriceDialog accept() @@ -81,7 +73,7 @@ buttonBox rejected() - priceDialog + PriceDialog reject()