[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