gestionale/argento/EditWindow.cpp

88 lines
2.9 KiB
C++

#include "EditWindow.h"
#include "ui_EditWindow.h"
EditWindow::EditWindow(int idSocio, QWidget* parent) : QMainWindow(parent), ui(new Ui::EditWindow) {
ui->setupUi(this);
QSqlQuery query;
model = new QSqlRelationalTableModel(this);
model->setTable("socio");
model->setFilter(QString("socio.id = %1").arg(idSocio));
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
int professioneIdx = model->fieldIndex("professione");
int fonteIdx = model->fieldIndex("fonte");
model->setJoinMode(QSqlRelationalTableModel::LeftJoin);
model->setRelation(professioneIdx, QSqlRelation("professione", "id", "professione"));
model->setRelation(fonteIdx, QSqlRelation("fonte", "id", "fonte"));
if (! model->select()) {
qDebug() << fullQuery(query);
qDebug() << query.lastError().text();
Ui::status(Ui::ERROR, "query error");
return;
}
QSqlTableModel* professioneModel = model->relationModel(professioneIdx);
ui->comboProfessione->setModel(professioneModel);
ui->comboProfessione->setModelColumn(professioneModel->fieldIndex("professione"));
QSqlTableModel* fonteModel = model->relationModel(fonteIdx);
ui->comboFonte->setModel(fonteModel);
ui->comboFonte->setModelColumn(fonteModel->fieldIndex("fonte"));
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
mapper->addMapping(ui->lineID, model->fieldIndex("id"));
mapper->addMapping(ui->lineCognome, model->fieldIndex("cognome"));
mapper->addMapping(ui->lineNome, model->fieldIndex("nome"));
mapper->addMapping(ui->dateDataNascita, model->fieldIndex("dataNascita"));
mapper->addMapping(ui->lineComuneResidenza, model->fieldIndex("comuneResidenza"));
mapper->addMapping(ui->lineEmail, model->fieldIndex("email"));
mapper->addMapping(ui->comboProfessione, professioneIdx);
mapper->addMapping(ui->comboFonte, fonteIdx);
mapper->addMapping(ui->checkAbilitaQuestionario, model->fieldIndex("abilitaQuestionario"));
mapper->addMapping(ui->linePin, model->fieldIndex("pin"));
mapper->toFirst();
}
void EditWindow::on_buttonSalva_clicked() {
if (model->isDirty()) {
model->database().transaction();
if (model->submitAll()) {
model->database().commit();
Ui::status(Ui::SUCCESS, "successfull update");
/* update ui */
model->select();
mapper->toFirst();
close();
} else {
model->database().rollback();
qDebug() << model->lastError();
Ui::status(Ui::ERROR, "model transaction submit error");
}
} else {
Ui::status(Ui::INFO, "nothing done");
close();
}
}
void EditWindow::on_buttonAnnulla_clicked() {
this->close();
}
EditWindow::~EditWindow()
{
delete mapper;
delete model;
delete ui;
}