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);
marketplace_->finishCurrentSale();
emit endRemoveRows();
emit basketDataChanged();
}
void BasketModel::cancelSale()

View file

@ -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_;
};

View file

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

View file

@ -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<Sale> rootItem{new Sale()};