diff --git a/elementspanel.cpp b/elementspanel.cpp index 345a80d5c..1e08165be 100644 --- a/elementspanel.cpp +++ b/elementspanel.cpp @@ -137,6 +137,9 @@ void ElementsPanel::addDir(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QS qtwi_dossier -> setExpanded(true); qtwi_dossier -> setData(0, 42, adr_dossier); + // reduit le dossier si besoin + qtwi_dossier -> setExpanded(!collapsed_directories.contains(adr_dossier)); + // ajout des sous-categories / sous-dossiers QStringList dossiers = category.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name); foreach(QString dossier, dossiers) addDir(qtwi_dossier, adr_dossier + dossier + "/"); @@ -173,6 +176,9 @@ void ElementsPanel::addFile(QTreeWidgetItem *qtwi_parent, QString fichier) { Recharge l'arbre des elements */ void ElementsPanel::reload() { + // sauvegarde la liste des repertoires reduits + saveCollapsedCategories(); + // vide l'arbre while (takeTopLevelItem(0)); @@ -274,3 +280,17 @@ void ElementsPanel::launchCategoryEditor(const QString &filename) { ElementsCategoryEditor ece(filename, true); if (ece.exec() == QDialog::Accepted) reload(); } + +/** + Enregistre la liste des categories repliees +*/ +void ElementsPanel::saveCollapsedCategories() { + collapsed_directories.clear(); + QList items = findItems("*", Qt::MatchRecursive|Qt::MatchWildcard); + foreach(QTreeWidgetItem *item, items) { + QString file = item -> data(0, 42).toString(); + if (!file.endsWith(".elmt") && !item -> isExpanded()) { + collapsed_directories << file; + } + } +} diff --git a/elementspanel.h b/elementspanel.h index a6b191b93..3ad2ba0f9 100644 --- a/elementspanel.h +++ b/elementspanel.h @@ -29,7 +29,8 @@ class ElementsPanel : public QTreeWidget { QFileInfo selectedFile() const; void launchElementEditor(const QString &); void launchCategoryEditor(const QString &); - + void saveCollapsedCategories(); + QStringList collapsed_directories; public slots: void slot_doubleClick(QTreeWidgetItem *, int);