#include "sellerdialog.h" #include "mainwindow.h" #include #include SellerDialog::SellerDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f) { ui_.setupUi(this); ui_.editButton->setVisible(false); market_ = dynamic_cast(parent)->getMarketplace(); model_ = std::make_unique(market_, ui_.tableView); ui_.tableView->setModel(model_.get()); ui_.tableView->setColumnHidden(0, true); // hide the uuid connect(ui_.newButton, &QPushButton::clicked, this, &SellerDialog::on_newButton_clicked); connect(ui_.deleteButton, &QPushButton::clicked, this, &SellerDialog::on_deleteButton_clicked); connect(model_.get(), &SellerModel::duplicateSellerNo, this, &SellerDialog::on_model_duplicateSellerNo); connect(ui_.tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &SellerDialog::onSellerViewSelectionChanged); } void SellerDialog::on_newButton_clicked() { ui_.tableView->reset(); ui_.tableView->model()->insertRows(ui_.tableView->model()->rowCount(), 1); ui_.tableView->scrollToBottom(); ui_.tableView->selectRow(ui_.tableView->model()->rowCount() - 1); QModelIndex idx = ui_.tableView->model()->index(ui_.tableView->model()->rowCount() - 1, 2); ui_.tableView->setCurrentIndex(idx); ui_.tableView->edit(idx); } void SellerDialog::on_deleteButton_clicked() { auto selModel = ui_.tableView->selectionModel(); if (selModel->hasSelection() == false) return; if (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 direkt auf die Datenbank aus. 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) { 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) { ui_.deleteButton->setEnabled(true); } else { ui_.deleteButton->setEnabled(false); } }