[cmake-commits] clinton committed QCMakeCacheView.cxx 1.20 1.21
cmake-commits at cmake.org
cmake-commits at cmake.org
Fri Nov 16 10:40:25 EST 2007
Update of /cvsroot/CMake/CMake/Source/QtDialog
In directory public:/mounts/ram/cvs-serv25441
Modified Files:
QCMakeCacheView.cxx
Log Message:
ENH: more robust search filter.
Index: QCMakeCacheView.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/QtDialog/QCMakeCacheView.cxx,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- QCMakeCacheView.cxx 15 Nov 2007 04:30:05 -0000 1.20
+++ QCMakeCacheView.cxx 16 Nov 2007 15:40:23 -0000 1.21
@@ -31,6 +31,25 @@
static QRegExp AdvancedRegExp[2] = { QRegExp("(false)"), QRegExp("(true|false)") };
+// filter for searches
+class QCMakeSearchFilter : public QSortFilterProxyModel
+{
+public:
+ QCMakeSearchFilter(QObject* o) : QSortFilterProxyModel(o) {}
+protected:
+ bool filterAcceptsRow(int row, const QModelIndex& p) const
+ {
+ // accept row if either column matches
+ QModelIndex idx0 = this->sourceModel()->index(row, 0, p);
+ QModelIndex idx1 = this->sourceModel()->index(row, 1, p);
+ QString str0 = this->sourceModel()->data(idx0).toString();
+ QString str1 = this->sourceModel()->data(idx1).toString();
+
+ return str0.contains(this->filterRegExp()) ||
+ str1.contains(this->filterRegExp());
+ }
+};
+
QCMakeCacheView::QCMakeCacheView(QWidget* p)
: QTableView(p), Init(false)
{
@@ -41,12 +60,9 @@
this->AdvancedFilter->setFilterRole(QCMakeCacheModel::AdvancedRole);
this->AdvancedFilter->setFilterRegExp(AdvancedRegExp[0]);
this->AdvancedFilter->setDynamicSortFilter(true);
- this->SearchFilter = new QSortFilterProxyModel(this);
+ this->SearchFilter = new QCMakeSearchFilter(this);
this->SearchFilter->setSourceModel(this->AdvancedFilter);
this->SearchFilter->setFilterCaseSensitivity(Qt::CaseInsensitive);
-#if QT_VERSION >= 0x040300 // breaks search in Qt 4.2
- this->SearchFilter->setFilterKeyColumn(-1); // all columns
-#endif
this->SearchFilter->setDynamicSortFilter(true);
this->setModel(this->SearchFilter);
More information about the Cmake-commits
mailing list