88 lines
2.9 KiB
C++
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;
|
|
}
|