#include "EditWindow.h" EditWindow::EditWindow(int idSocio, QWidget* parent) : QMainWindow(parent), ui(new Ui::EditWindow) { ui->setupUi(this); /* retrieve all elements of the GUI */ lineID = this->findChild("lineID"); lineNome = this->findChild("lineNome"); lineCognome = this->findChild("lineCognome"); lineComuneResidenza = this->findChild("lineComuneResidenza"); lineEmail = this->findChild("lineEmail"); dateDataNascita = this->findChild("dateDataNascita"); dateDataCompilazione = this->findChild("dateDataCompilazione"); comboProfessione = this->findChild("comboProfessione"); comboFonte = this->findChild("comboFonte"); checkAbilitaQuestionario = this->findChild("checkAbilitaQuestionario"); /* retrieve professione and fonte from database */ query.prepare("SELECT id, professione FROM professione ORDER BY professione"); query.exec(); while (query.next()) { comboProfessione->addItem(query.value(1).toString(), query.value(0).toInt()); } query.prepare("SELECT id, fonte FROM fonte ORDER BY fonte"); query.exec(); while (query.next()) { comboFonte->addItem(query.value(1).toString(), query.value(0).toInt()); } /* populate fields from database */ query.prepare("SELECT s.id, s.nome, s.cognome, \ s.dataNascita, s.comuneResidenza, s.email, s.professione, s.fonte, s.abilitaQuestionario, \ q.dataCompilazione \ FROM socio AS s LEFT OUTER JOIN questionario AS q ON s.id = q.socio \ WHERE s.id = :id"); query.bindValue( ":id", idSocio ); query.exec(); query.first(); /* show everything in the interface */ lineID->setText(query.value( query.record().indexOf("id") ).toString()); lineNome->setText(query.value( query.record().indexOf("nome") ).toString()); lineCognome->setText(query.value( query.record().indexOf("cognome") ).toString()); lineComuneResidenza->setText(query.value(query.record().indexOf("comuneResidenza")).toString()); lineEmail->setText(query.value(query.record().indexOf("email")).toString()); comboProfessione->setCurrentIndex(comboProfessione->findData(query.value(query.record().indexOf("professione")).toInt())); comboFonte->setCurrentIndex(comboFonte->findData(query.value(query.record().indexOf("fonte")).toInt())); dateDataNascita->setDate(QDate(1900, 1, 1)); dateDataNascita->setDate(query.value(query.record().indexOf("dataNascita")).toDate()); dateDataCompilazione->setDate(QDate(1900, 1, 1)); dateDataCompilazione->setDate(query.value(query.record().indexOf("dataCompilazione")).toDate()); checkAbilitaQuestionario->setChecked( query.value(query.record().indexOf("abilitaQuestionario")).toBool() ); } /* void EditWindow::on_buttonCerca_clicked() { QLineEdit* lineCognome = this->findChild("lineCognome"); if ( ! query.exec() ) { setStatus(Ui::ERROR, "query error"); qDebug() << query.lastQuery(); return; } if ( query.size() == 0) { setStatus(Ui::INFO, "no results found"); return; } setStatus(Ui::INFO, QString("%1 results found").arg(query.size())); query.first(); showFound(); } */ void EditWindow::on_buttonSalva_clicked() { query.prepare("UPDATE socio \ SET nome = NULLIF(:nome, ''), \ cognome = NULLIF(:cognome, ''), \ dataNascita = NULLIF(:dataNascita, '1900-01-01'), \ comuneResidenza = NULLIF(:comuneResidenza, ''), \ email = NULLIF(:email, ''), \ professione = NULLIF(:professione, 0), \ fonte = NULLIF(:fonte, 0), \ abilitaQuestionario = :abilitaQuestionario \ WHERE id = :id"); query.bindValue(":id", lineID->text()); query.bindValue(":nome", lineNome->text()); query.bindValue(":cognome", lineCognome->text()); query.bindValue(":comuneResidenza", lineComuneResidenza->text()); query.bindValue(":email", lineEmail->text()); query.bindValue(":dataNascita", (dateDataNascita->date()).toString("yyyy-MM-dd")); query.bindValue(":professione", comboProfessione->currentData().toInt()); query.bindValue(":fonte", comboFonte->currentData().toInt()); query.bindValue(":abilitaQuestionario", checkAbilitaQuestionario->isChecked()); if ( ! query.exec() ) { qDebug() << fullQuery(query); qDebug() << db.lastError().text(); Ui::status(Ui::ERROR, "query error"); return; } Ui::status(Ui::SUCCESS, "successfull update"); } void EditWindow::on_buttonAnnulla_clicked() { this->close(); } EditWindow::~EditWindow() { delete ui; }