Mitgliederverwaltung für einen Landesverband, Clientkomponente
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
pmv-client/wahldialog.cpp

90 lines
3.0 KiB

/* Diese Datei ist Teil von pmv-client <https://git.piratenpartei-sh.de>
*
* pmv-client ist Freie Software: Sie können es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz weiter verteilen und/oder modifizieren.
*
* Dieses Programm wird in der Hoffnung bereitgestellt, dass es nützlich sein
* wird, jedoch OHNE JEDE GEWÄHR,; sogar ohne die implizite Gewähr der
* MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License für weitere Einzelheiten.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe <https://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-only
*/
#include "wahldialog.h"
#include "ui_wahldialog.h"
#include "datedelegate.h"
#include <QSqlRecord>
#include <QDebug>
#include <QSqlError>
WahlDialog::WahlDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::WahlDialog)
{
ui->setupUi(this);
// Modell initialisieren
model = new QSqlTableModel(this);
model->setTable("wahl");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setHeaderData(0, Qt::Horizontal, "ID");
model->setHeaderData(1, Qt::Horizontal, "Kürzel");
model->setHeaderData(2, Qt::Horizontal, "Bezeichnung");
model->setHeaderData(3, Qt::Horizontal, "Wahltag");
model->setSort(0, Qt::AscendingOrder);
// View
ui->tableView->setModel(model);
ui->tableView->setColumnHidden(0, true);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->tableView->setColumnWidth(2, 200);
// ui->tableView->resizeColumnsToContents();
ui->tableView->horizontalHeader()->setStretchLastSection(true);
ui->tableView->setItemDelegateForColumn(3, new DateDelegate(ui->tableView));
model->select();
// Mapping der Eingabefelder
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->addMapping(ui->lineEdit_kuerzel, model->fieldIndex("kuerzel"));
mapper->addMapping(ui->lineEdit_bezeichnung, model->fieldIndex("bezeichnung"));
mapper->addMapping(ui->dateEdit_wahltag, model->fieldIndex("wahltag"));
connect(ui->tableView->selectionModel(),&QItemSelectionModel::currentRowChanged,
mapper, &QDataWidgetMapper::setCurrentModelIndex);
}
WahlDialog::~WahlDialog()
{
delete ui;
}
void WahlDialog::on_buttonBox_accepted()
{
mapper->submit();
if (model->submitAll()) {
qDebug() << "Submitted to database";
} else {
qDebug() << "summitAll() failed!";
qDebug() << model->lastError().text();
}
}
void WahlDialog::on_pushButton_neu_clicked()
{
QSqlRecord r = model->record();
r.setGenerated("id", true);
r.setValue("kuerzel", "Neu");
r.setValue("bezeichnung", "Neue Wahl");
r.setValue("wahltag", QDate::currentDate());
if (!model->insertRecord(-1, r)) {
qDebug() << model->lastError().text();
}
}