Ajout d'un champ de texte pour filtrer le contenu du panel d'elements

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@255 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2007-12-29 15:00:30 +00:00
parent 6bf8eed171
commit 396dd54e8e
4 changed files with 38 additions and 0 deletions

View File

@@ -344,3 +344,29 @@ QTreeWidgetItem *ElementsPanel::findFile(const QString &file) const {
}
return(0);
}
/**
N'affiche que les elements contenant une chaine donnee
@param m Chaine a filtrer
*/
void ElementsPanel::filter(const QString &m) {
QList<QTreeWidgetItem *> items = findItems("*", Qt::MatchRecursive | Qt::MatchWildcard);
if (m.isEmpty()) {
foreach(QTreeWidgetItem *item, items) item -> setHidden(false);
} else {
foreach(QTreeWidgetItem *item, items) {
QString file = item -> data(0, 42).toString();
bool item_matches = item -> text(0).contains(m, Qt::CaseInsensitive);
item -> setHidden(!item_matches);
if (item_matches) {
// remonte l'arborescence pour afficher les categories contenant l'element
QTreeWidgetItem *parent_qtwi = item -> parent();
while(parent_qtwi && (parent_qtwi -> isHidden() || !parent_qtwi -> isExpanded())) {
parent_qtwi -> setHidden(false);
parent_qtwi -> setExpanded(true);
parent_qtwi = parent_qtwi -> parent();
}
}
}
}
}