/* * 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.protocollo.forms; import com.axiastudio.pypapi.Register; import com.axiastudio.pypapi.db.Database; import com.axiastudio.pypapi.db.IDatabase; import com.axiastudio.suite.protocollo.entities.Fascicolo; import com.trolltech.qt.core.Qt; import com.trolltech.qt.gui.*; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Query; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import java.util.List; /** * * @author Tiziano Lattisi <tiziano at axiastudio.it> */ public class FormTitolario extends QDialog { private final QTreeWidget tree; public FormTitolario(){ this(null); } public FormTitolario(QWidget parent){ super(parent); this.tree = new QTreeWidget(); this.tree.header().hide(); this.tree.doubleClicked.connect(this, "accept()"); QVBoxLayout layout = new QVBoxLayout(); layout.addWidget(this.tree); QHBoxLayout buttonLayout = new QHBoxLayout(); buttonLayout.addSpacerItem(new QSpacerItem(10, 10, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)); QToolButton cancel = new QToolButton(); cancel.setIcon(new QIcon("classpath:com/axiastudio/pypapi/ui/resources/toolbar/cancel.png")); cancel.clicked.connect(this, "reject()"); buttonLayout.addWidget(cancel); QToolButton accept = new QToolButton(); accept.setIcon(new QIcon("classpath:com/axiastudio/pypapi/ui/resources/toolbar/accept.png")); accept.clicked.connect(this, "accept()"); buttonLayout.addWidget(accept); layout.addLayout(buttonLayout); this.setLayout(layout); this.popola(this.tree); } public Fascicolo getSelection() { QTreeWidgetItem currentItem = this.tree.currentItem(); Fascicolo fascicolo = (Fascicolo) currentItem.data(0, Qt.ItemDataRole.UserRole); return fascicolo; } private void popola(QTreeWidget tree){ Database db = (Database) Register.queryUtility(IDatabase.class); EntityManagerFactory emf = db.getEntityManagerFactory(); EntityManager em = emf.createEntityManager(); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Fascicolo.class); Root root = cq.from(Fascicolo.class); cq.orderBy(cb.asc(root.get("categoria")), cb.asc(root.get("classe")), cb.asc(root.get("fascicolo"))); Query q = em.createQuery(cq); List store = q.getResultList(); QTreeWidgetItem itemCategoria=null; QTreeWidgetItem itemClasse=null; QTreeWidgetItem itemFascicolo; for( int i=0; i<store.size(); i++ ){ Fascicolo fascicolo = (Fascicolo) store.get(i); if( fascicolo.getFascicolo() == 0){ if( fascicolo.getClasse() == 0){ itemCategoria = new QTreeWidgetItem(); String descrizione = "(" + fascicolo.getCategoria() + ") " + fascicolo.getDescrizione(); itemCategoria.setText(0, descrizione); itemCategoria.setData(0, Qt.ItemDataRole.UserRole, fascicolo); tree.addTopLevelItem(itemCategoria); } else { itemClasse = new QTreeWidgetItem(); String descrizione = "(" + fascicolo.getCategoria() + "-" + fascicolo.getClasse() + ") " + fascicolo.getDescrizione(); itemClasse.setText(0, descrizione); if( !"".equals(fascicolo.getNote()) ){ itemClasse.setIcon(0, new QIcon("classpath:com/axiastudio/suite/resources/note.png")); itemClasse.setToolTip(0, "<FONT COLOR=black>" + fascicolo.getNote() + "</FONT>"); itemClasse.setData(0, Qt.ItemDataRole.UserRole, fascicolo); } itemCategoria.addChild(itemClasse); } } else { itemFascicolo = new QTreeWidgetItem(); String descrizione = "(" + fascicolo.getCategoria() + "-" + fascicolo.getClasse() + "-" + fascicolo.getFascicolo() + ") " + fascicolo.getDescrizione(); itemFascicolo.setText(0, descrizione); if( !"".equals(fascicolo.getNote()) ){ itemFascicolo.setIcon(0, new QIcon("classpath:com/axiastudio/suite/resources/note.png")); itemFascicolo.setToolTip(0, "<FONT COLOR=black>" + fascicolo.getNote() + "</FONT>"); itemFascicolo.setData(0, Qt.ItemDataRole.UserRole, fascicolo); } itemClasse.addChild(itemFascicolo); } } } }