connecting basket model and sale model

This commit is contained in:
Martin Brodbeck 2018-07-26 08:34:01 +02:00
parent f697487d6b
commit 3ec2143f28
5 changed files with 23 additions and 2 deletions

View File

@ -111,6 +111,7 @@ void BasketModel::finishSale()
emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size() - 1); emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size() - 1);
marketplace_->finishCurrentSale(); marketplace_->finishCurrentSale();
emit endRemoveRows(); emit endRemoveRows();
emit basketDataChanged();
} }
void BasketModel::cancelSale() void BasketModel::cancelSale()

View File

@ -23,6 +23,9 @@ class BasketModel : public QAbstractTableModel
void cancelSale(); 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;
signals:
void basketDataChanged();
private: private:
Marketplace* marketplace_; Marketplace* marketplace_;
}; };

View File

@ -2,8 +2,8 @@
#include "basketmodel.h" #include "basketmodel.h"
#include "pricedialog.h" #include "pricedialog.h"
#include "sellerdialog.h"
#include "salemodel.h" #include "salemodel.h"
#include "sellerdialog.h"
#include <regex> #include <regex>
@ -40,6 +40,9 @@ MainWindow::MainWindow()
&MainWindow::onCancelArticleButtonClicked); &MainWindow::onCancelArticleButtonClicked);
connect(ui_.cancelAllArticlesButton, &QPushButton::clicked, this, connect(ui_.cancelAllArticlesButton, &QPushButton::clicked, this,
&MainWindow::onCancelAllArticlesButtonClicked); &MainWindow::onCancelAllArticlesButtonClicked);
connect(static_cast<BasketModel*>(ui_.basketView->model()), &BasketModel::basketDataChanged,
static_cast<SaleModel*>(ui_.salesView->model()),
&SaleModel::onBasketDataChanged);
} }
void MainWindow::on_actionEditSeller_triggered() void MainWindow::on_actionEditSeller_triggered()
@ -65,6 +68,7 @@ void MainWindow::on_paidButton_triggered()
dynamic_cast<BasketModel*>(ui_.basketView->model())->finishSale(); dynamic_cast<BasketModel*>(ui_.basketView->model())->finishSale();
ui_.lastPriceLabel1->setText(lastPrice); ui_.lastPriceLabel1->setText(lastPrice);
ui_.lastPriceLabel2->setText(lastPrice); ui_.lastPriceLabel2->setText(lastPrice);
// static_cast<SaleModel*>(ui_.salesView->model())->onDataChanged();
} }
} }

View File

@ -155,4 +155,14 @@ QVariant SaleModel::headerData(int section, Qt::Orientation orientation, int rol
return QStringLiteral("%1").arg(section); return QStringLiteral("%1").arg(section);
} else } else
return ""; 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();
} }

View File

@ -14,11 +14,14 @@ class SaleModel : public QAbstractItemModel
QModelIndex index(int row, int column, QModelIndex index(int row, int column,
const QModelIndex& parent = QModelIndex()) const override; const QModelIndex& parent = QModelIndex()) const override;
QModelIndex parent(const QModelIndex& index) 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 rowCount(const QModelIndex& parent) const override;
int columnCount(const QModelIndex& parent) const override; int columnCount(const QModelIndex& parent) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
public slots:
void onBasketDataChanged();
private: private:
Marketplace* marketplace_; Marketplace* marketplace_;
std::unique_ptr<Sale> rootItem{new Sale()}; std::unique_ptr<Sale> rootItem{new Sale()};