kima2/src/gui/sellerdialog.cpp

88 lines
3.2 KiB
C++

#include "sellerdialog.h"
#include "mainwindow.h"
#include <QItemSelectionModel>
#include <QMessageBox>
SellerDialog::SellerDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f)
{
ui_.setupUi(this);
ui_.editButton->setVisible(false);
SellerModel* model =
new SellerModel(dynamic_cast<MainWindow*>(parent)->getMarketplace(), ui_.tableView);
ui_.tableView->setModel(model);
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, &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;
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<MainWindow*>(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);
}
}