diff --git a/src/gui/basketmodel.cpp b/src/gui/basketmodel.cpp index cc2f1cb..d063d2e 100644 --- a/src/gui/basketmodel.cpp +++ b/src/gui/basketmodel.cpp @@ -111,6 +111,7 @@ void BasketModel::finishSale() emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size() - 1); marketplace_->finishCurrentSale(); emit endRemoveRows(); + emit basketDataChanged(); } void BasketModel::cancelSale() diff --git a/src/gui/basketmodel.h b/src/gui/basketmodel.h index 36d23bb..0d752ed 100644 --- a/src/gui/basketmodel.h +++ b/src/gui/basketmodel.h @@ -23,6 +23,9 @@ class BasketModel : public QAbstractTableModel void cancelSale(); virtual bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; + signals: + void basketDataChanged(); + private: Marketplace* marketplace_; }; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index fb3f5c7..fd02719 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -2,8 +2,8 @@ #include "basketmodel.h" #include "pricedialog.h" -#include "sellerdialog.h" #include "salemodel.h" +#include "sellerdialog.h" #include @@ -40,6 +40,9 @@ MainWindow::MainWindow() &MainWindow::onCancelArticleButtonClicked); connect(ui_.cancelAllArticlesButton, &QPushButton::clicked, this, &MainWindow::onCancelAllArticlesButtonClicked); + connect(static_cast(ui_.basketView->model()), &BasketModel::basketDataChanged, + static_cast(ui_.salesView->model()), + &SaleModel::onBasketDataChanged); } void MainWindow::on_actionEditSeller_triggered() @@ -65,6 +68,7 @@ void MainWindow::on_paidButton_triggered() dynamic_cast(ui_.basketView->model())->finishSale(); ui_.lastPriceLabel1->setText(lastPrice); ui_.lastPriceLabel2->setText(lastPrice); + // static_cast(ui_.salesView->model())->onDataChanged(); } } diff --git a/src/gui/salemodel.cpp b/src/gui/salemodel.cpp index df93ab2..0d6cefd 100644 --- a/src/gui/salemodel.cpp +++ b/src/gui/salemodel.cpp @@ -155,4 +155,14 @@ QVariant SaleModel::headerData(int section, Qt::Orientation orientation, int rol return QStringLiteral("%1").arg(section); } else return ""; +} + +void SaleModel::onBasketDataChanged() +{ + emit beginResetModel(); + auto& sales = marketplace_->getSales(); + std::sort(sales.begin(), sales.end(), [](const auto& lhs, const auto& rhs) { + return lhs->getTimestamp() > rhs->getTimestamp(); + }); + emit endResetModel(); } \ No newline at end of file diff --git a/src/gui/salemodel.h b/src/gui/salemodel.h index cb7e9e2..d212ed2 100644 --- a/src/gui/salemodel.h +++ b/src/gui/salemodel.h @@ -14,11 +14,14 @@ class SaleModel : public QAbstractItemModel QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; QModelIndex parent(const QModelIndex& index) const override; - QVariant data(const QModelIndex &index, int role) const override; + QVariant data(const QModelIndex& index, int role) const override; int rowCount(const QModelIndex& parent) const override; int columnCount(const QModelIndex& parent) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + public slots: + void onBasketDataChanged(); + private: Marketplace* marketplace_; std::unique_ptr rootItem{new Sale()};