diff --git a/src/plugins/find/findtoolwindow.cpp b/src/plugins/find/findtoolwindow.cpp index b2f17fa63d3d63f1d3570a355568695f7039773f..eec831775b576ca4c23db8caa64ba4c43fb8384c 100644 --- a/src/plugins/find/findtoolwindow.cpp +++ b/src/plugins/find/findtoolwindow.cpp @@ -40,14 +40,15 @@ using namespace Find::Internal; FindToolWindow::FindToolWindow(FindPlugin *plugin) : QDialog(Core::ICore::instance()->mainWindow()), m_plugin(plugin), - m_findCompleter(new QCompleter(this)) + m_findCompleter(new QCompleter(this)), + m_currentFilter(0) { m_ui.setupUi(this); connect(m_ui.closeButton, SIGNAL(clicked()), this, SLOT(reject())); connect(m_ui.searchButton, SIGNAL(clicked()), this, SLOT(accept())); connect(m_ui.matchCase, SIGNAL(toggled(bool)), m_plugin, SLOT(setCaseSensitive(bool))); connect(m_ui.wholeWords, SIGNAL(toggled(bool)), m_plugin, SLOT(setWholeWord(bool))); - connect(m_ui.filterList, SIGNAL(currentIndexChanged(int)), this, SLOT(setCurrentFilter(int))); + connect(m_ui.filterList, SIGNAL(activated(int)), this, SLOT(setCurrentFilter(int))); connect(this, SIGNAL(accepted()), this, SLOT(search())); m_findCompleter->setModel(m_plugin->findCompletionModel()); m_ui.searchTerm->setCompleter(m_findCompleter); @@ -74,6 +75,8 @@ void FindToolWindow::setFindFilters(const QList<IFindFilter *> &filters) m_configWidgets.append(filter->createConfigWidget()); } m_ui.filterList->addItems(names); + if (m_filters.size() > 0) + setCurrentFilter(0); } void FindToolWindow::setFindText(const QString &text) @@ -83,9 +86,11 @@ void FindToolWindow::setFindText(const QString &text) void FindToolWindow::open(IFindFilter *filter) { + if (!filter) + filter = m_currentFilter; int index = m_filters.indexOf(filter); if (index >= 0) { - m_ui.filterList->setCurrentIndex(index); + setCurrentFilter(index); } m_ui.matchCase->setChecked(m_plugin->findFlags() & QTextDocument::FindCaseSensitively); m_ui.wholeWords->setChecked(m_plugin->findFlags() & QTextDocument::FindWholeWords); @@ -96,6 +101,7 @@ void FindToolWindow::open(IFindFilter *filter) void FindToolWindow::setCurrentFilter(int index) { + m_ui.filterList->setCurrentIndex(index); for (int i = 0; i < m_configWidgets.size(); ++i) { QWidget *configWidget = m_configWidgets.at(i); if (!configWidget) @@ -112,6 +118,7 @@ void FindToolWindow::setCurrentFilter(int index) configWidget->setParent(0); } } + m_currentFilter = m_filters.at(index); } void FindToolWindow::search() @@ -129,6 +136,7 @@ void FindToolWindow::writeSettings() { QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup("Find"); + settings->setValue("CurrentFilter", m_currentFilter->id()); foreach (IFindFilter *filter, m_filters) filter->writeSettings(settings); settings->endGroup(); @@ -138,7 +146,13 @@ void FindToolWindow::readSettings() { QSettings *settings = Core::ICore::instance()->settings(); settings->beginGroup("Find"); - foreach (IFindFilter *filter, m_filters) + const QString currentFilter = settings->value("CurrentFilter").toString(); + for (int i = 0; i < m_filters.size(); ++i) { + IFindFilter *filter = m_filters.at(i); filter->readSettings(settings); + if (filter->id() == currentFilter) { + setCurrentFilter(i); + } + } settings->endGroup(); } diff --git a/src/plugins/find/findtoolwindow.h b/src/plugins/find/findtoolwindow.h index d377c46a1cdcf10350d21b4023b90a77d73bacef..c1b8417c38bafd9bf30a8f2e125f498743822f31 100644 --- a/src/plugins/find/findtoolwindow.h +++ b/src/plugins/find/findtoolwindow.h @@ -67,6 +67,7 @@ private: QList<IFindFilter *> m_filters; QCompleter *m_findCompleter; QList<QWidget *> m_configWidgets; + IFindFilter *m_currentFilter; }; } // namespace Internal diff --git a/src/plugins/find/ifindfilter.h b/src/plugins/find/ifindfilter.h index 9859fd75db7d933013890c5b1ed21f78623b6565..69afaa283dd739582e94293aaf5a5ae0c40a301c 100644 --- a/src/plugins/find/ifindfilter.h +++ b/src/plugins/find/ifindfilter.h @@ -45,6 +45,7 @@ public: virtual ~IFindFilter() {} + virtual QString id() const = 0; virtual QString name() const = 0; virtual bool isEnabled() const = 0; virtual QKeySequence defaultShortcut() const = 0; diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index c6448c2f801ae33d924d958e48d9d0d92424dfc3..c4ce7bee5886e90bc6055b3b398f38fe00f3e166 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -51,6 +51,11 @@ AllProjectsFind::AllProjectsFind(ProjectExplorerPlugin *plugin, SearchResultWind connect(m_plugin, SIGNAL(fileListChanged()), this, SIGNAL(changed())); } +QString AllProjectsFind::id() const +{ + return "All Projects"; +} + QString AllProjectsFind::name() const { return tr("All Projects"); diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h index f801dcfed09e806a9f1044e54621b3f1b951961e..67e64e64c5d2a6aeab6226a799e26c8356b37795 100644 --- a/src/plugins/projectexplorer/allprojectsfind.h +++ b/src/plugins/projectexplorer/allprojectsfind.h @@ -50,6 +50,7 @@ class AllProjectsFind : public TextEditor::BaseFileFind public: AllProjectsFind(ProjectExplorerPlugin *plugin, Find::SearchResultWindow *resultWindow); + QString id() const; QString name() const; bool isEnabled() const; diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index 4fcfc68642e5f5f27717c98aa242730f86143430..c830ea96932169dc44c9c4a0fc869ed22bbecfa5 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -52,6 +52,11 @@ CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, SearchResu this, SIGNAL(changed())); } +QString CurrentProjectFind::id() const +{ + return "Current Project"; +} + QString CurrentProjectFind::name() const { return tr("Current Project"); diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h index e9cc264bfdf7f97a9228ae2e7738b8dbff40a7a2..e24b6490a322c43fd381771c027d92cc5ea54087 100644 --- a/src/plugins/projectexplorer/currentprojectfind.h +++ b/src/plugins/projectexplorer/currentprojectfind.h @@ -48,6 +48,7 @@ class CurrentProjectFind : public TextEditor::BaseFileFind public: CurrentProjectFind(ProjectExplorerPlugin *plugin, Find::SearchResultWindow *resultWindow); + QString id() const; QString name() const; bool isEnabled() const; diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index 335142690611b4157f10ae33994a383a0adf0e5f..e73b04e6bd9b68dc02f33a05c244841b41739ba7 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -45,6 +45,11 @@ FindInFiles::FindInFiles(SearchResultWindow *resultWindow) { } +QString FindInFiles::id() const +{ + return "Files on Disk"; +} + QString FindInFiles::name() const { return tr("Files on Disk"); diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index 9fc8a2bc02ddb8a38a4dad767f2d778ba88d3b35..0ec9b97d5bc20269702926329ddd0774708eef69 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -51,6 +51,7 @@ class FindInFiles : public BaseFileFind public: explicit FindInFiles(Find::SearchResultWindow *resultWindow); + QString id() const; QString name() const; QKeySequence defaultShortcut() const; void findAll(const QString &txt, QTextDocument::FindFlags findFlags);