From 022a81da7ac13e9515ee5c96f9f23f421f4ffcbe Mon Sep 17 00:00:00 2001 From: Lorenz Haas Date: Thu, 1 Oct 2015 19:49:31 +0200 Subject: [PATCH] CppEditor: Add filter option for InsertVirtualMethods' dialog If a base class contains many virtual functions it's sometimes hard to find the right method. With the new filter above the list of functions one can now easily navigate to the appropriate method. Change-Id: I2ddb99fdceef5679b15fc4819f8a69dfa6ae0a0c Reviewed-by: Orgad Shaneh Reviewed-by: Nikolai Kosjar --- src/plugins/cppeditor/cppinsertvirtualmethods.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp index 95931764f1d..ab6d15ead4a 100644 --- a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp +++ b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -120,6 +121,7 @@ private: private: QTreeView *m_view; + QLineEdit *m_filter; QCheckBox *m_hideReimplementedFunctions; QComboBox *m_insertMode; QCheckBox *m_virtualKeyword; @@ -935,6 +937,8 @@ public: return false; } + if (!QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent)) + return false; if (m_hideReimplemented) return !index.data(InsertVirtualMethodsDialog::Reimplemented).toBool(); return true; @@ -958,6 +962,7 @@ private: InsertVirtualMethodsDialog::InsertVirtualMethodsDialog(QWidget *parent) : QDialog(parent) , m_view(0) + , m_filter(0) , m_hideReimplementedFunctions(0) , m_insertMode(0) , m_virtualKeyword(0) @@ -972,6 +977,7 @@ InsertVirtualMethodsDialog::InsertVirtualMethodsDialog(QWidget *parent) , classFunctionFilterModel(new InsertVirtualMethodsFilterModel(this)) { classFunctionFilterModel->setSourceModel(classFunctionModel); + classFunctionFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); } InsertVirtualMethodsDialog::~InsertVirtualMethodsDialog() @@ -990,6 +996,10 @@ void InsertVirtualMethodsDialog::initGui() // View QGroupBox *groupBoxView = new QGroupBox(tr("&Functions to insert:"), this); QVBoxLayout *groupBoxViewLayout = new QVBoxLayout(groupBoxView); + m_filter = new QLineEdit(this); + m_filter->setClearButtonEnabled(true); + m_filter->setPlaceholderText(tr("Filter")); + groupBoxViewLayout->addWidget(m_filter); m_view = new QTreeView(this); m_view->setEditTriggers(QAbstractItemView::NoEditTriggers); m_view->setHeaderHidden(true); @@ -1055,11 +1065,14 @@ void InsertVirtualMethodsDialog::initGui() connect(m_hideReimplementedFunctions, SIGNAL(toggled(bool)), this, SLOT(setHideReimplementedFunctions(bool))); + connect(m_filter, &QLineEdit::textChanged, + classFunctionFilterModel, &QSortFilterProxyModel::setFilterWildcard); } void InsertVirtualMethodsDialog::initData() { m_settings->read(); + m_filter->clear(); m_hideReimplementedFunctions->setChecked(m_settings->hideReimplementedFunctions); const QStringList alwaysPresentReplacements = defaultOverrideReplacements(); m_availableOverrideReplacements = alwaysPresentReplacements; @@ -1121,6 +1134,7 @@ bool InsertVirtualMethodsDialog::gather() { initGui(); initData(); + m_filter->setFocus(); // Expand the dialog a little bit adjustSize();