[qet] [3378] Modification du filtre : recherche sur plusieur mot ( sepration caractere +) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 3378
Author: runsys
Date: 2014-10-16 22:35:32 +0200 (Thu, 16 Oct 2014)
Log Message:
-----------
Modification du filtre : recherche sur plusieur mot (sepration caractere +)
Modified Paths:
--------------
trunk/sources/elementspanel.cpp
trunk/sources/elementspanel.h
Modified: trunk/sources/elementspanel.cpp
===================================================================
--- trunk/sources/elementspanel.cpp 2014-10-16 18:39:43 UTC (rev 3377)
+++ trunk/sources/elementspanel.cpp 2014-10-16 20:35:32 UTC (rev 3378)
@@ -508,6 +508,20 @@
}
/**
+ @return true if \a item matches the filter, false otherwise
+*/
+bool ElementsPanel::matchesFilter(const QTreeWidgetItem *item, QString filter) const {
+ if (!item) return(false);
+
+ // no filter => we consider the item matches
+ if (filter.isEmpty()) return(true);
+
+ bool item_matches = item -> text(0).contains(filter, Qt::CaseInsensitive);
+
+ return(item_matches);
+}
+
+/**
Reloads the following collections:
* common collection
* custom collection
@@ -819,13 +833,37 @@
}
/**
+ Build filter list for multiple filter
+*/
+void ElementsPanel::buildFilterList() {
+ if (filter_.isEmpty()) return;
+ filter_list_ = filter_.split( '+' );
+ /*
+ qDebug() << "*******************";
+ foreach( QString filter , filter_list_ ) {
+ filter = filter.trimmed();
+ qDebug() << filter;
+ }
+ */
+}
+
+/**
Apply the current filter to a given item.
*/
void ElementsPanel::applyCurrentFilter(const QList<QTreeWidgetItem *> &items) {
if (filter_.isEmpty()) return;
+ buildFilterList();
QList<QTreeWidgetItem *> matching_items;
+
foreach (QTreeWidgetItem *item, items) {
- bool item_matches = matchesCurrentFilter(item);
+ bool item_matches = true;
+
+ foreach( QString filter , filter_list_ ) {
+ filter = filter.trimmed();
+ if ( !filter.isEmpty() ) {
+ item_matches &= matchesFilter(item, filter);
+ }
+ }
if (item_matches) matching_items << item;
item -> setHidden(!item_matches);
}
Modified: trunk/sources/elementspanel.h
===================================================================
--- trunk/sources/elementspanel.h 2014-10-16 18:39:43 UTC (rev 3377)
+++ trunk/sources/elementspanel.h 2014-10-16 20:35:32 UTC (rev 3378)
@@ -83,6 +83,7 @@
void projectWasOpened(QETProject *);
void projectWasClosed(QETProject *);
bool scrollToElement(const ElementsLocation &);
+ void buildFilterList();
void applyCurrentFilter(const QList<QTreeWidgetItem *> &);
void ensureHierarchyIsVisible(const QList<QTreeWidgetItem *> &);
void scrollToSelectedItem();
@@ -96,6 +97,7 @@
void startElementDrag(const ElementsLocation &);
void startTitleBlockTemplateDrag(const TitleBlockTemplateLocation &);
bool matchesCurrentFilter(const QTreeWidgetItem *) const;
+ bool matchesFilter(const QTreeWidgetItem *, QString) const;
protected slots:
void firstActivation();
@@ -121,6 +123,7 @@
int loading_progress_; ///< used to track the loading progress of elements collections
bool first_reload_; ///< used to distinguish the first time this panel is reloaded
QString filter_; ///< Currently applied filter
+ QStringList filter_list_; ///< Currently applied list of filter
QTreeWidgetItem *it_prev_, *it_;
};
#endif