diff --git a/src/core/marketplace.cpp b/src/core/marketplace.cpp index a212363..3913480 100644 --- a/src/core/marketplace.cpp +++ b/src/core/marketplace.cpp @@ -36,25 +36,13 @@ int Marketplace::getNextSellerNo() int Marketplace::getNextArticleNo() { - int maxArtNoInDb{0}; - int maxArtNoInBasket{0}; - auto iter = std::max_element(sellers_.begin(), sellers_.end(), [](const auto& a, const auto& b) -> bool { return a->getMaxArticleNo() < b->getMaxArticleNo(); }); - if (iter != sellers_.end()) - maxArtNoInDb = (*iter)->getMaxArticleNo(); - - auto iter2 = - std::max_element(basket_.begin(), basket_.end(), [](const auto& a, const auto& b) -> bool { - return a->getArticleNo() < b->getArticleNo(); - }); - - if (iter2 != basket_.end()) - maxArtNoInBasket = (*iter2)->getArticleNo(); - - return maxArtNoInBasket > maxArtNoInDb ? maxArtNoInBasket + 1 : maxArtNoInDb + 1; + if (iter == sellers_.end()) + return 1; + return (*iter)->getMaxArticleNo() + 1; } int Marketplace::getNumSellersDelete() diff --git a/src/gui/basketmodel.cpp b/src/gui/basketmodel.cpp index c14e4ff..36d040c 100644 --- a/src/gui/basketmodel.cpp +++ b/src/gui/basketmodel.cpp @@ -76,40 +76,19 @@ QVariant BasketModel::headerData(int section, Qt::Orientation orientation, int r void BasketModel::addArticle(Seller* seller, int price) { - emit beginInsertRows(QModelIndex(), marketplace_->getBasket().size(), - marketplace_->getBasket().size()); + emit beginInsertRows(QModelIndex(), marketplace_->getBasket().size(), marketplace_->getBasket().size()); auto article = std::make_unique
(price); article->createUuid(); - article->setArticleNo(marketplace_->getNextArticleNo()); + article->setArticleNo(marketplace_->getNextArticleNo() + marketplace_->getBasket().size()); article->setSeller(seller); - // std::cout << "!!! Neuer Artikel: " << article->getPrice() << " Cent \n"; + std::cout << "!!! Neuer Artikel: " << article->getPrice() << " Cent \n"; marketplace_->addArticleToBasket(std::move(article)); emit endInsertRows(); } void BasketModel::finishSale() { - emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size() - 1); + emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size()-1); marketplace_->finishCurrentSale(); emit endRemoveRows(); -} - -void BasketModel::cancelSale() -{ - emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size() - 1); - marketplace_->getBasket().clear(); - emit endRemoveRows(); -} - -bool BasketModel::removeRows(int row, int count, const QModelIndex& parent) -{ - auto article = marketplace_->getBasket().at(row).get(); - - emit beginRemoveRows(parent, row, row + count - 1); - marketplace_->getBasket().erase( - std::remove_if(marketplace_->getBasket().begin(), marketplace_->getBasket().end(), - [&article](const auto& a) { return a->getUuid() == article->getUuid(); }), - marketplace_->getBasket().end()); - emit endRemoveRows(); - return true; } \ No newline at end of file diff --git a/src/gui/basketmodel.h b/src/gui/basketmodel.h index 36d23bb..1909d35 100644 --- a/src/gui/basketmodel.h +++ b/src/gui/basketmodel.h @@ -20,8 +20,7 @@ class BasketModel : public QAbstractTableModel //virtual bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; void addArticle(Seller* seller, int price); void finishSale(); - void cancelSale(); - virtual bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; + //virtual bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; private: Marketplace* marketplace_; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index fd73bab..ed90180 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -6,7 +6,7 @@ #include -#include +#include constexpr int STATUSBAR_TIMEOUT = 5000; @@ -28,12 +28,9 @@ MainWindow::MainWindow() connect(ui_.sellerNoEdit, &QLineEdit::returnPressed, this, &MainWindow::on_sellerNoEdit_checkSellerNo); connect(ui_.paidButton, &QPushButton::clicked, this, &MainWindow::on_paidButton_triggered); + connect(ui_.basketView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MainWindow::onBasketViewSelectionChanged); - connect(ui_.cancelArticleButton, &QPushButton::clicked, this, - &MainWindow::onCancelArticleButtonClicked); - connect(ui_.cancelAllArticlesButton, &QPushButton::clicked, this, - &MainWindow::onCancelAllArticlesButtonClicked); } void MainWindow::on_actionEditSeller_triggered() @@ -57,6 +54,7 @@ void MainWindow::on_paidButton_triggered() if (marketplace_->basketSize() > 0) { dynamic_cast(ui_.basketView->model())->finishSale(); } + return; } void MainWindow::on_sellerNoEdit_checkSellerNo() @@ -95,50 +93,11 @@ void MainWindow::on_sellerNoEdit_checkSellerNo() } void MainWindow::onBasketViewSelectionChanged(const QItemSelection& selected, - [[maybe_unused]] const QItemSelection& deselected) + [[maybe_unused]] const QItemSelection& deselected) { if (selected.size() > 0) { ui_.cancelArticleButton->setEnabled(true); } else { ui_.cancelArticleButton->setEnabled(false); } -} - -void MainWindow::onCancelArticleButtonClicked([[maybe_unused]] bool checked) -{ - auto selModel = ui_.basketView->selectionModel(); - if (selModel->hasSelection() == false) - return; - - auto dlgResult = - QMessageBox(QMessageBox::Icon::Warning, "Sind Sie sicher?", - "Möchten Sie wirklich den Artikel stornieren?", - QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, this) - .exec(); - if (dlgResult == QMessageBox::No) - return; - - auto indexes = selModel->selectedRows(); - std::sort(indexes.begin(), indexes.end()); - - // Deleting the rows, beginning with the last one! - for (auto iter = indexes.constEnd() - 1; iter >= indexes.constBegin(); --iter) { - ui_.basketView->model()->removeRow(iter->row()); - } -} - -void MainWindow::onCancelAllArticlesButtonClicked([[maybe_unused]] bool checked) -{ - if (ui_.basketView->model()->rowCount() == 0) - return; - - auto dlgResult = - QMessageBox(QMessageBox::Icon::Warning, "Sind Sie sicher?", - "Möchten Sie wirklich *alle* Artikel des aktuellen Einkaufs stornieren?", - QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, this) - .exec(); - if (dlgResult == QMessageBox::No) - return; - - dynamic_cast(ui_.basketView->model())->cancelSale(); } \ No newline at end of file diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 2c10f3a..34e4334 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -19,9 +19,7 @@ class MainWindow : public QMainWindow private slots: void onBasketViewSelectionChanged(const QItemSelection& selected, - const QItemSelection& deselected); - void onCancelArticleButtonClicked(bool checked); - void onCancelAllArticlesButtonClicked(bool checked); + const QItemSelection& deselected); private: void on_actionEditSeller_triggered(); diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index d9f84f0..379b942 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -204,7 +204,7 @@ - + true diff --git a/src/gui/sellermodel.cpp b/src/gui/sellermodel.cpp index 7ec2356..6b61227 100644 --- a/src/gui/sellermodel.cpp +++ b/src/gui/sellermodel.cpp @@ -146,13 +146,11 @@ bool SellerModel::removeRows(int row, int count, const QModelIndex& parent) }), marketplace_->getSellers().end()); emit endRemoveRows(); - return true; } else { emit beginRemoveRows(parent, row, row + count - 1); seller->setState(Seller::State::DELETE); marketplace_->storeToDb(true); emit endRemoveRows(); - return true; } return false;