#include "sellerdialog.h" #include "mainwindow.h" #include #include SellerDialog::SellerDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f) { m_ui.setupUi(this); m_ui.editButton->setVisible(false); m_market = dynamic_cast(parent)->getMarketplace(); m_model = std::make_unique(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); connect(m_ui.tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &SellerDialog::onSellerViewSelectionChanged); } void SellerDialog::on_newButton_clicked() { // Don't allow new seller if market has already started 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; } 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); } void SellerDialog::on_deleteButton_clicked() { auto selModel = m_ui.tableView->selectionModel(); if (selModel->hasSelection() == false) return; 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 löschen.", QMessageBox::StandardButton::Ok, this) .exec(); return; } auto dlgResult = QMessageBox(QMessageBox::Icon::Warning, "Sind Sie sicher?", "Löschen wirkt sich sofort auf die Datenbank aus. Sie können den " "Vorgang nicht rückgängig machen. Möchten Sie fortfahren?", 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) { m_ui.tableView->model()->removeRow(iter->row()); } } void SellerDialog::on_model_duplicateSellerNo(const QString& message) { QMessageBox(QMessageBox::Icon::Warning, "Fehler", message, QMessageBox::StandardButton::Ok, this) .exec(); } void SellerDialog::accept() { /* Marketplace* market = dynamic_cast(parentWidget())->getMarketplace(); 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(); return; } } */ QDialog::accept(); } void SellerDialog::onSellerViewSelectionChanged(const QItemSelection& selected, [[maybe_unused]] const QItemSelection& deselected) { if (selected.size() > 0) { m_ui.deleteButton->setEnabled(true); } else { m_ui.deleteButton->setEnabled(false); } }