/* * Copyright (C) 2012 AXIA Studio (http://www.axiastudio.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.axiastudio.suite.anagrafiche.forms; import com.axiastudio.pypapi.Register; import com.axiastudio.pypapi.db.Controller; import com.axiastudio.pypapi.db.Database; import com.axiastudio.pypapi.db.IDatabase; import com.axiastudio.pypapi.db.Store; import com.axiastudio.pypapi.ui.IQuickInsertDialog; import com.axiastudio.pypapi.ui.Util; import com.axiastudio.pypapi.ui.Window; import com.axiastudio.suite.anagrafiche.entities.*; import com.trolltech.qt.core.QByteArray; import com.trolltech.qt.core.QFile; import com.trolltech.qt.designer.QUiLoader; import com.trolltech.qt.designer.QUiLoaderException; import com.trolltech.qt.gui.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Tiziano Lattisi <tiziano at axiastudio.it> */ public class FormQuickInsertSoggetto extends QDialog implements IQuickInsertDialog { private Object entity=null; private Store storeStato; public FormQuickInsertSoggetto(QWidget parent) { super(parent); this.initLayout(); } public FormQuickInsertSoggetto() { this(null); } private void initLayout(){ QFile file = Util.ui2jui(new QFile("classpath:com/axiastudio/suite/anagrafiche/forms/quickinsertsoggetto.ui")); this.loadUi(file); this.resize(500, 300); } private void loadUi(QFile uiFile){ QDialog dialog = null; try { dialog = (QDialog) QUiLoader.load(uiFile); } catch (QUiLoaderException ex) { Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex); } for( QByteArray name: dialog.dynamicPropertyNames()){ this.setProperty(name.toString(), dialog.property(name.toString())); } QToolButton buttonCancel = (QToolButton) dialog.findChild(QToolButton.class, "buttonCancel"); buttonCancel.setIcon(new QIcon("classpath:com/axiastudio/pypapi/ui/resources/toolbar/cancel.png")); buttonCancel.clicked.connect(this, "reject()"); QToolButton buttonAccept = (QToolButton) dialog.findChild(QToolButton.class, "buttonAccept"); buttonAccept.setIcon(new QIcon("classpath:com/axiastudio/pypapi/ui/resources/toolbar/accept.png")); buttonAccept.clicked.connect(this, "insertAndAccept()"); this.setLayout(dialog.layout()); // provincia QComboBox comboBoxProvincia = (QComboBox) this.findChild(QComboBox.class, "comboBox_provincia"); comboBoxProvincia.clear(); List<Provincia> province = Arrays.asList(Provincia.class.getEnumConstants()); for( Provincia p: province){ comboBoxProvincia.addItem(p.name()); } // stato Database db = (Database) Register.queryUtility(IDatabase.class); Controller controller = db.createController(Stato.class); QComboBox comboBoxStato = (QComboBox) this.findChild(QComboBox.class, "comboBox_stato"); comboBoxStato.clear(); storeStato = controller.createFullStore(); for( Object objStato: storeStato ){ Stato stato = (Stato) objStato; comboBoxStato.addItem(stato.getCodice()); } } private void insertAndAccept(){ QTabWidget tabs = (QTabWidget) this.findChild(QTabWidget.class, "tabs"); int idx = tabs.currentIndex(); Soggetto s = new Soggetto(); if( idx == 0 ){ List<SessoSoggetto> sessi = new ArrayList(); sessi.add(SessoSoggetto.ND); sessi.add(SessoSoggetto.M); sessi.add(SessoSoggetto.F); s.setTipo(TipoSoggetto.PERSONA); s.setNome(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_nome")).text()); s.setCognome(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_cognome")).text()); s.setCodicefiscale(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_codicefiscaleP")).text()); s.setSessosoggetto(sessi.get(((QComboBox) this.findChild(QComboBox.class, "comboBox_sesso")).currentIndex())); } else if( idx == 1 ){ s.setTipo(TipoSoggetto.AZIENDA); s.setRagionesociale(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_ragionesociale")).text()); s.setCodicefiscale(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_codicefiscaleA")).text()); s.setPartitaiva(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_partitaiva")).text()); } else if( idx == 2 ){ s.setTipo(TipoSoggetto.ENTE); s.setDenominazione(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_denominazione")).text()); s.setDenominazione2(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_denominazione2")).text()); s.setDenominazione3(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_denominazione3")).text()); s.setCodicefiscale(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_codicefiscaleE")).text()); } List<Indirizzo> indirizzi = new ArrayList(); Indirizzo indirizzo = new Indirizzo(); indirizzo.setVia(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_via")).text()); indirizzo.setCivico(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_civico")).text()); indirizzo.setCap(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_cap")).text()); indirizzo.setFrazione(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_frazione")).text()); indirizzo.setComune(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_comune")).text()); indirizzo.setDescrizione(((QLineEdit) this.findChild(QLineEdit.class, "lineEdit_descrizione")).text()); indirizzo.setProvincia(Provincia.valueOf(((QComboBox) this.findChild(QComboBox.class, "comboBox_provincia")).currentText())); indirizzo.setTipo(TipoIndirizzo.valueOf(((QComboBox) this.findChild(QComboBox.class, "comboBox_tipo")).currentText())); indirizzo.setStato((Stato) storeStato.get(((QComboBox) this.findChild(QComboBox.class, "comboBox_stato")).currentIndex())); indirizzo.setPrincipale(Boolean.TRUE); indirizzi.add(indirizzo); s.setIndirizzoCollection(indirizzi); Database db = (Database) Register.queryUtility(IDatabase.class); Controller controller = db.createController(Soggetto.class); controller.commit(s); this.entity = s; this.accept(); } public Object getEntity() { return entity; } @Override public int exec() { return super.exec(); } }