/******************************************************************************************************** * PROGRAM : essai1 * DATE - TIME : dimanche 30 décembre 2007 - 20h25 * AUTHOR : ( ) * FILENAME : VueEtats.cpp * LICENSE : GPL * COMMENTARY : ********************************************************************************************************/ #include #include #include "VueEtats.h" #include "StandardEtatModel.h" CVueEtats::CVueEtats(CDomEtats *ptDomEtats) { m_ptDomEtats = ptDomEtats; header()->hide(); setMinimumSize(150, 200); } /******************************************************************************************************** ********************************************************************************************************/ void CVueEtats::InstallEtats() { CStandardEtat *ptCurrentItem; m_ptModel = new CStandardEtatModel(m_ptDomEtats); setModel(m_ptModel); setCurrentIndex(m_ptModel->rootIndex()); qDebug() << "## VueEtats : installe états"; expandAll(); } /******************************************************************************************************** ********************************************************************************************************/ void CVueEtats::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { CStandardEtat *ptCurrentItem; QList listItems; ptCurrentItem = static_cast(current.internalPointer()); LitEtats(listItems, ptCurrentItem); emit categoriesSelected(listItems); } /******************************************************************************************************** Ajoute la ou les catégorie(s) ou sous-catégorie(s) à l'état sélectionné ********************************************************************************************************/ void CVueEtats::updateEtats(const QList &Liste) { int i; TypeEtat Type; CStandardEtat *ptParent; if (currentIndex().isValid()) { ptParent = static_cast(currentIndex().internalPointer()); if ((ptParent->typeEtat() == Etat) && (ptParent->childCount() != 0)) { if (ptParent->Child(0)->typeEtat() != Etat) { for (i=0; idata(TypeCatRole).toInt() == Categorie ? Cat : SCat; m_ptModel->addRow(currentIndex(), Liste.at(i)->text(), Type); } emit updateEtatsEnded (); } } } } /******************************************************************************************************** ********************************************************************************************************/ void CVueEtats::LitEtats(QList &listItems, CStandardEtat *ptParent) { int i; // qDebug() << "## Lit états : " << ptParent->Data(Qt::DisplayRole) << " ; " << ptParent->Data(TypeEtatRole); if ((ptParent->Data(TypeEtatRole) == Cat) || (ptParent->Data(TypeEtatRole) == SCat)) listItems.append(ptParent); for (i = 0; i < ptParent->childCount(); i++) { LitEtats(listItems, ptParent->Child(i)); } }