From e1d407b460fff2d653115a31fa953ba35aaa5aec Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Fri, 21 Aug 2015 12:30:35 +0200 Subject: [PATCH] Current Project FindFilter: Show the project displayname Change-Id: I91b083a91ff782fed1e8514a3690965708eff4dd Task-number: QTCREATORBUG-14932 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/find/findplugin.cpp | 12 ++++++++++++ src/plugins/coreplugin/find/findplugin.h | 1 + src/plugins/coreplugin/find/findtoolwindow.cpp | 10 ++++++++++ src/plugins/coreplugin/find/findtoolwindow.h | 1 + src/plugins/coreplugin/find/ifindfilter.h | 1 + src/plugins/projectexplorer/currentprojectfind.cpp | 7 ++++++- 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/find/findplugin.cpp b/src/plugins/coreplugin/find/findplugin.cpp index 4945c824a8c..00ee7aef645 100644 --- a/src/plugins/coreplugin/find/findplugin.cpp +++ b/src/plugins/coreplugin/find/findplugin.cpp @@ -176,6 +176,16 @@ void FindPlugin::filterChanged() d->m_openFindDialog->setEnabled(haveEnabledFilters); } +void FindPlugin::displayNameChanged() +{ + IFindFilter *changedFilter = qobject_cast(sender()); + QAction *action = d->m_filterActions.value(changedFilter); + QTC_ASSERT(changedFilter, return); + QTC_ASSERT(action, return); + action->setText(QLatin1String(" ") + changedFilter->displayName()); + d->m_findDialog->updateFindFilterNames(); +} + void FindPlugin::openFindFilter() { QAction *action = qobject_cast(sender()); @@ -241,10 +251,12 @@ void FindPlugin::setupFilterMenuItems() action->setData(qVariantFromValue(filter)); cmd = ActionManager::registerAction(action, base.withSuffix(filter->id())); cmd->setDefaultKeySequence(filter->defaultShortcut()); + cmd->setAttribute(Command::CA_UpdateText); mfindadvanced->addAction(cmd); d->m_filterActions.insert(filter, action); connect(action, &QAction::triggered, this, &FindPlugin::openFindFilter); connect(filter, &IFindFilter::enabledChanged, this, &FindPlugin::filterChanged); + connect(filter, &IFindFilter::displayNameChanged, this, &FindPlugin::displayNameChanged); } d->m_findDialog->setFindFilters(findInterfaces); d->m_openFindDialog->setEnabled(haveEnabledFilters); diff --git a/src/plugins/coreplugin/find/findplugin.h b/src/plugins/coreplugin/find/findplugin.h index e28fb9cfc9e..aaf32874824 100644 --- a/src/plugins/coreplugin/find/findplugin.h +++ b/src/plugins/coreplugin/find/findplugin.h @@ -90,6 +90,7 @@ signals: private slots: void filterChanged(); + void displayNameChanged(); void openFindFilter(); void writeSettings(); diff --git a/src/plugins/coreplugin/find/findtoolwindow.cpp b/src/plugins/coreplugin/find/findtoolwindow.cpp index 0a00df7a304..62970e6ae2a 100644 --- a/src/plugins/coreplugin/find/findtoolwindow.cpp +++ b/src/plugins/coreplugin/find/findtoolwindow.cpp @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -158,6 +159,15 @@ void FindToolWindow::setFindFilters(const QList &filters) setCurrentFilter(0); } +void FindToolWindow::updateFindFilterNames() +{ + int currentIndex = m_ui.filterList->currentIndex(); + m_ui.filterList->clear(); + QStringList names = Utils::transform(m_filters, &IFindFilter::displayName); + m_ui.filterList->addItems(names); + m_ui.filterList->setCurrentIndex(currentIndex); +} + void FindToolWindow::setFindText(const QString &text) { m_ui.searchTerm->setText(text); diff --git a/src/plugins/coreplugin/find/findtoolwindow.h b/src/plugins/coreplugin/find/findtoolwindow.h index 228746d4421..d67d9b50d39 100644 --- a/src/plugins/coreplugin/find/findtoolwindow.h +++ b/src/plugins/coreplugin/find/findtoolwindow.h @@ -58,6 +58,7 @@ public: void setCurrentFilter(IFindFilter *filter); void readSettings(); void writeSettings(); + void updateFindFilterNames(); protected: bool event(QEvent *event); diff --git a/src/plugins/coreplugin/find/ifindfilter.h b/src/plugins/coreplugin/find/ifindfilter.h index bfb8e87b3ee..79243605027 100644 --- a/src/plugins/coreplugin/find/ifindfilter.h +++ b/src/plugins/coreplugin/find/ifindfilter.h @@ -69,6 +69,7 @@ public: static QString descriptionForFindFlags(FindFlags flags); signals: void enabledChanged(bool enabled); + void displayNameChanged(); }; } // namespace Core diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index ac50a82d5cd..6e864c8ba3f 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -57,7 +57,11 @@ QString CurrentProjectFind::id() const QString CurrentProjectFind::displayName() const { - return tr("Current Project"); + Project *p = ProjectTree::currentProject(); + if (p) + return tr("Project \"%1\"").arg(p->displayName()); + else + return tr("Current Project"); } bool CurrentProjectFind::isEnabled() const @@ -96,6 +100,7 @@ QString CurrentProjectFind::label() const void CurrentProjectFind::handleProjectChanged() { emit enabledChanged(isEnabled()); + emit displayNameChanged(); } void CurrentProjectFind::recheckEnabled()