kima2/src/gui/sellerdialog.cpp

109 lines
4.2 KiB
C++
Raw Permalink Normal View History

2018-07-16 12:00:17 +02:00
#include "sellerdialog.h"
#include "mainwindow.h"
#include <QItemSelectionModel>
2018-07-16 18:04:25 +02:00
#include <QMessageBox>
2018-07-16 12:00:17 +02:00
SellerDialog::SellerDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f)
{
2022-07-07 15:37:33 +02:00
m_ui.setupUi(this);
m_ui.editButton->setVisible(false);
m_market = dynamic_cast<MainWindow*>(parent)->getMarketplace();
m_model = std::make_unique<SellerModel>(m_market, m_ui.tableView);
m_ui.tableView->setModel(m_model.get());
m_ui.tableView->setColumnHidden(0, true); // hide the uuid
m_ui.tableView->setRowHidden(0, true); // hide the special "Sonderkonto" user
connect(m_ui.newButton, &QPushButton::clicked, this, &SellerDialog::on_newButton_clicked);
connect(m_ui.deleteButton, &QPushButton::clicked, this, &SellerDialog::on_deleteButton_clicked);
connect(m_model.get(), &SellerModel::duplicateSellerNo, this,
&SellerDialog::on_model_duplicateSellerNo);
2022-07-07 15:37:33 +02:00
connect(m_ui.tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this,
2018-07-23 12:58:27 +02:00
&SellerDialog::onSellerViewSelectionChanged);
2018-07-16 18:04:25 +02:00
}
void SellerDialog::on_newButton_clicked()
{
// Don't allow new seller if market has already started
2022-07-07 15:37:33 +02:00
if (m_market->getSales().size() > 0) {
QMessageBox(QMessageBox::Icon::Warning, "Hinweis",
"Da die Verkaufsphase schon begonnen hat (Artikel wurden bereits verkauft) "
"können Sie keine Verkäufer mehr hinzufügen.",
QMessageBox::StandardButton::Ok, this)
.exec();
return;
}
2022-07-07 15:37:33 +02:00
m_ui.tableView->reset();
m_ui.tableView->model()->insertRows(m_ui.tableView->model()->rowCount(), 1);
m_ui.tableView->scrollToBottom();
m_ui.tableView->selectRow(m_ui.tableView->model()->rowCount() - 1);
QModelIndex idx = m_ui.tableView->model()->index(m_ui.tableView->model()->rowCount() - 1, 2);
m_ui.tableView->setCurrentIndex(idx);
m_ui.tableView->edit(idx);
2018-07-16 12:00:17 +02:00
}
2018-07-16 18:04:25 +02:00
2018-07-17 15:32:16 +02:00
void SellerDialog::on_deleteButton_clicked()
{
2022-07-07 15:37:33 +02:00
auto selModel = m_ui.tableView->selectionModel();
2018-07-17 15:32:16 +02:00
if (selModel->hasSelection() == false)
return;
2022-07-07 15:37:33 +02:00
if (m_market->getSales().size() > 0) {
2018-07-27 10:10:48 +02:00
QMessageBox(QMessageBox::Icon::Warning, "Hinweis",
2018-08-02 09:49:42 +02:00
"Da die Verkaufsphase schon begonnen hat (Artikel wurden bereits verkauft) "
"können Sie keine Verkäufer mehr löschen.",
2018-07-27 10:10:48 +02:00
QMessageBox::StandardButton::Ok, this)
.exec();
2018-08-02 09:49:42 +02:00
return;
2018-07-27 10:10:48 +02:00
}
2018-07-18 08:17:30 +02:00
auto dlgResult =
QMessageBox(QMessageBox::Icon::Warning, "Sind Sie sicher?",
2019-10-07 10:33:46 +02:00
"Löschen wirkt sich <b>sofort</b> auf die Datenbank aus. Sie können den "
"Vorgang nicht rückgängig machen. Möchten Sie fortfahren?",
2018-07-18 08:17:30 +02:00
QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, this)
.exec();
if (dlgResult == QMessageBox::No)
return;
auto indexes = selModel->selectedRows();
2018-07-17 15:32:16 +02:00
std::sort(indexes.begin(), indexes.end());
// Deleting the rows, beginning with the last one!
for (auto iter = indexes.constEnd() - 1; iter >= indexes.constBegin(); --iter) {
2022-07-07 15:37:33 +02:00
m_ui.tableView->model()->removeRow(iter->row());
2018-07-17 15:32:16 +02:00
}
}
void SellerDialog::on_model_duplicateSellerNo(const QString& message)
{
QMessageBox(QMessageBox::Icon::Warning, "Fehler", message, QMessageBox::StandardButton::Ok,
this)
.exec();
}
2018-07-16 18:04:25 +02:00
void SellerDialog::accept()
{
2018-08-02 09:49:42 +02:00
/* Marketplace* market = dynamic_cast<MainWindow*>(parentWidget())->getMarketplace();
2018-07-16 18:04:25 +02:00
for (const auto& seller : market->getSellers()) {
if (seller->getFirstName().empty() || seller->getLastName().empty()) {
QMessageBox(QMessageBox::Icon::Critical, "Fehler",
"Bitte geben Sie bei jedem Verkäufer Vorname und Nachname an.",
QMessageBox::StandardButton::Ok, this)
.exec();
2018-07-16 18:04:25 +02:00
return;
}
2018-08-02 09:49:42 +02:00
} */
2018-07-16 18:04:25 +02:00
QDialog::accept();
2018-07-23 12:58:27 +02:00
}
void SellerDialog::onSellerViewSelectionChanged(const QItemSelection& selected,
[[maybe_unused]] const QItemSelection& deselected)
{
if (selected.size() > 0) {
2022-07-07 15:37:33 +02:00
m_ui.deleteButton->setEnabled(true);
2018-07-23 12:58:27 +02:00
} else {
2022-07-07 15:37:33 +02:00
m_ui.deleteButton->setEnabled(false);
2018-07-23 12:58:27 +02:00
}
2018-07-16 18:04:25 +02:00
}