aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/find
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/find')
-rw-r--r--src/plugins/find/currentdocumentfind.cpp1
-rw-r--r--src/plugins/find/currentdocumentfind.h1
-rw-r--r--src/plugins/find/findplugin.cpp163
-rw-r--r--src/plugins/find/findplugin.h34
-rw-r--r--src/plugins/find/findtoolbar.cpp4
-rw-r--r--src/plugins/find/findtoolbar.h14
-rw-r--r--src/plugins/find/findtoolwindow.cpp2
-rw-r--r--src/plugins/find/findtoolwindow.h12
-rw-r--r--src/plugins/find/searchresulttreeitems.h2
-rw-r--r--src/plugins/find/searchresulttreeview.cpp1
-rw-r--r--src/plugins/find/searchresulttreeview.h3
-rw-r--r--src/plugins/find/searchresultwindow.cpp254
-rw-r--r--src/plugins/find/searchresultwindow.h29
13 files changed, 282 insertions, 238 deletions
diff --git a/src/plugins/find/currentdocumentfind.cpp b/src/plugins/find/currentdocumentfind.cpp
index 2ecdc533b7f..448eba3ba52 100644
--- a/src/plugins/find/currentdocumentfind.cpp
+++ b/src/plugins/find/currentdocumentfind.cpp
@@ -36,6 +36,7 @@
#include <QtCore/QDebug>
#include <QtGui/QApplication>
+#include <QtGui/QWidget>
using namespace Core;
using namespace Find;
diff --git a/src/plugins/find/currentdocumentfind.h b/src/plugins/find/currentdocumentfind.h
index 016a9332e37..6e3def7791d 100644
--- a/src/plugins/find/currentdocumentfind.h
+++ b/src/plugins/find/currentdocumentfind.h
@@ -33,7 +33,6 @@
#include "ifindsupport.h"
#include <QtCore/QPointer>
-#include <QtGui/QWidget>
namespace Find {
namespace Internal {
diff --git a/src/plugins/find/findplugin.cpp b/src/plugins/find/findplugin.cpp
index d488b5c3f96..4b215a903f0 100644
--- a/src/plugins/find/findplugin.cpp
+++ b/src/plugins/find/findplugin.cpp
@@ -34,6 +34,7 @@
#include "findtoolbar.h"
#include "findtoolwindow.h"
#include "searchresultwindow.h"
+#include "ifindfilter.h"
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
@@ -46,6 +47,8 @@
#include <utils/qtcassert.h>
#include <QtGui/QMenu>
+#include <QtGui/QStringListModel>
+#include <QtGui/QAction>
#include <QtCore/QtPlugin>
#include <QtCore/QSettings>
@@ -70,43 +73,64 @@ namespace {
const int MAX_COMPLETIONS = 50;
}
-using namespace Find;
-using namespace Find::Internal;
+namespace Find {
-FindPlugin *FindPlugin::m_instance = 0;
+struct FindPluginPrivate {
+ explicit FindPluginPrivate(FindPlugin *q);
-FindPlugin::FindPlugin()
- : m_currentDocumentFind(0),
- m_findToolBar(0),
- m_findDialog(0),
- m_findCompletionModel(new QStringListModel(this)),
- m_replaceCompletionModel(new QStringListModel(this))
+ //variables
+ static FindPlugin *m_instance;
+
+ QHash<IFindFilter *, QAction *> m_filterActions;
+
+ Internal::CurrentDocumentFind *m_currentDocumentFind;
+ Internal::FindToolBar *m_findToolBar;
+ Internal::FindToolWindow *m_findDialog;
+ QTextDocument::FindFlags m_findFlags;
+ QStringListModel *m_findCompletionModel;
+ QStringListModel *m_replaceCompletionModel;
+ QStringList m_findCompletions;
+ QStringList m_replaceCompletions;
+ QAction *m_openFindDialog;
+};
+
+FindPluginPrivate::FindPluginPrivate(FindPlugin *q) :
+ m_currentDocumentFind(0), m_findToolBar(0), m_findDialog(0),
+ m_findCompletionModel(new QStringListModel(q)),
+ m_replaceCompletionModel(new QStringListModel(q))
+{
+}
+
+FindPlugin *FindPluginPrivate::m_instance = 0;
+
+FindPlugin::FindPlugin() : d(new FindPluginPrivate(this))
{
- QTC_ASSERT(!m_instance, return);
- m_instance = this;
+ QTC_ASSERT(!FindPluginPrivate::m_instance, return);
+ FindPluginPrivate::m_instance = this;
}
FindPlugin::~FindPlugin()
{
- m_instance = 0;
- delete m_currentDocumentFind;
- delete m_findToolBar;
- delete m_findDialog;
+ FindPluginPrivate::m_instance = 0;
+ delete d->m_currentDocumentFind;
+ delete d->m_findToolBar;
+ delete d->m_findDialog;
+ delete d;
}
FindPlugin *FindPlugin::instance()
{
- return m_instance;
+ return FindPluginPrivate::m_instance;
}
bool FindPlugin::initialize(const QStringList &, QString *)
{
setupMenu();
- m_currentDocumentFind = new CurrentDocumentFind;
+ d->m_currentDocumentFind = new Internal::CurrentDocumentFind;
- m_findToolBar = new FindToolBar(this, m_currentDocumentFind);
- m_findDialog = new FindToolWindow(this);
+ d->m_findToolBar = new Internal::FindToolBar(this, d->m_currentDocumentFind);
+ d->m_findDialog = new Internal::FindToolWindow(this);
SearchResultWindow *searchResultWindow = new SearchResultWindow;
addAutoReleasedObject(searchResultWindow);
return true;
@@ -120,27 +144,27 @@ void FindPlugin::extensionsInitialized()
void FindPlugin::shutdown()
{
- m_findToolBar->setVisible(false);
- m_findToolBar->setParent(0);
- m_currentDocumentFind->removeConnections();
+ d->m_findToolBar->setVisible(false);
+ d->m_findToolBar->setParent(0);
+ d->m_currentDocumentFind->removeConnections();
writeSettings();
}
void FindPlugin::filterChanged()
{
IFindFilter *changedFilter = qobject_cast<IFindFilter *>(sender());
- QAction *action = m_filterActions.value(changedFilter);
+ QAction *action = d->m_filterActions.value(changedFilter);
QTC_ASSERT(changedFilter, return);
QTC_ASSERT(action, return);
action->setEnabled(changedFilter->isEnabled());
bool haveEnabledFilters = false;
- foreach (IFindFilter *filter, m_filterActions.keys()) {
+ foreach (IFindFilter *filter, d->m_filterActions.keys()) {
if (filter->isEnabled()) {
haveEnabledFilters = true;
break;
}
}
- m_openFindDialog->setEnabled(haveEnabledFilters);
+ d->m_openFindDialog->setEnabled(haveEnabledFilters);
}
void FindPlugin::openFindFilter()
@@ -148,12 +172,12 @@ void FindPlugin::openFindFilter()
QAction *action = qobject_cast<QAction*>(sender());
QTC_ASSERT(action, return);
IFindFilter *filter = action->data().value<IFindFilter *>();
- if (m_currentDocumentFind->candidateIsEnabled())
- m_currentDocumentFind->acceptCandidate();
- QString currentFindString = (m_currentDocumentFind->isEnabled() ? m_currentDocumentFind->currentFindString() : "");
+ if (d->m_currentDocumentFind->candidateIsEnabled())
+ d->m_currentDocumentFind->acceptCandidate();
+ QString currentFindString = (d->m_currentDocumentFind->isEnabled() ? d->m_currentDocumentFind->currentFindString() : "");
if (!currentFindString.isEmpty())
- m_findDialog->setFindText(currentFindString);
- m_findDialog->open(filter);
+ d->m_findDialog->setFindText(currentFindString);
+ d->m_findDialog->open(filter);
}
void FindPlugin::setupMenu()
@@ -182,11 +206,11 @@ void FindPlugin::setupMenu()
Core::ActionContainer *mfindadvanced = am->createMenu(Constants::M_FIND_ADVANCED);
mfindadvanced->menu()->setTitle(tr("Advanced Find"));
mfind->addMenu(mfindadvanced, Constants::G_FIND_FILTERS);
- m_openFindDialog = new QAction(tr("Open Advanced Find..."), this);
- cmd = am->registerAction(m_openFindDialog, QLatin1String("Find.Dialog"), globalcontext);
+ d->m_openFindDialog = new QAction(tr("Open Advanced Find..."), this);
+ cmd = am->registerAction(d->m_openFindDialog, QLatin1String("Find.Dialog"), globalcontext);
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F")));
mfindadvanced->addAction(cmd);
- connect(m_openFindDialog, SIGNAL(triggered()), this, SLOT(openFindFilter()));
+ connect(d->m_openFindDialog, SIGNAL(triggered()), this, SLOT(openFindFilter()));
}
void FindPlugin::setupFilterMenuItems()
@@ -198,10 +222,10 @@ void FindPlugin::setupFilterMenuItems()
QList<int> globalcontext = QList<int>() << Core::Constants::C_GLOBAL_ID;
Core::ActionContainer *mfindadvanced = am->actionContainer(Constants::M_FIND_ADVANCED);
- m_filterActions.clear();
+ d->m_filterActions.clear();
bool haveEnabledFilters = false;
foreach (IFindFilter *filter, findInterfaces) {
- QAction *action = new QAction(QString(" %1").arg(filter->name()), this);
+ QAction *action = new QAction(QLatin1String(" ") + filter->name(), this);
bool isEnabled = filter->isEnabled();
if (isEnabled)
haveEnabledFilters = true;
@@ -210,17 +234,17 @@ void FindPlugin::setupFilterMenuItems()
cmd = am->registerAction(action, QLatin1String("FindFilter.")+filter->id(), globalcontext);
cmd->setDefaultKeySequence(filter->defaultShortcut());
mfindadvanced->addAction(cmd);
- m_filterActions.insert(filter, action);
+ d->m_filterActions.insert(filter, action);
connect(action, SIGNAL(triggered(bool)), this, SLOT(openFindFilter()));
connect(filter, SIGNAL(changed()), this, SLOT(filterChanged()));
}
- m_findDialog->setFindFilters(findInterfaces);
- m_openFindDialog->setEnabled(haveEnabledFilters);
+ d->m_findDialog->setFindFilters(findInterfaces);
+ d->m_openFindDialog->setEnabled(haveEnabledFilters);
}
QTextDocument::FindFlags FindPlugin::findFlags() const
{
- return m_findFlags;
+ return d->m_findFlags;
}
void FindPlugin::setCaseSensitive(bool sensitive)
@@ -244,30 +268,30 @@ void FindPlugin::setFindFlag(QTextDocument::FindFlag flag, bool enabled)
if ((hasFlag && enabled) || (!hasFlag && !enabled))
return;
if (enabled)
- m_findFlags |= flag;
+ d->m_findFlags |= flag;
else
- m_findFlags &= ~flag;
+ d->m_findFlags &= ~flag;
if (flag != QTextDocument::FindBackward)
emit findFlagsChanged();
}
bool FindPlugin::hasFindFlag(QTextDocument::FindFlag flag)
{
- return m_findFlags & flag;
+ return d->m_findFlags & flag;
}
void FindPlugin::writeSettings()
{
QSettings *settings = Core::ICore::instance()->settings();
settings->beginGroup("Find");
- settings->setValue("Backward", QVariant((m_findFlags & QTextDocument::FindBackward) != 0));
- settings->setValue("CaseSensitively", QVariant((m_findFlags & QTextDocument::FindCaseSensitively) != 0));
- settings->setValue("WholeWords", QVariant((m_findFlags & QTextDocument::FindWholeWords) != 0));
- settings->setValue("FindStrings", m_findCompletions);
- settings->setValue("ReplaceStrings", m_replaceCompletions);
+ settings->setValue("Backward", QVariant((d->m_findFlags & QTextDocument::FindBackward) != 0));
+ settings->setValue("CaseSensitively", QVariant((d->m_findFlags & QTextDocument::FindCaseSensitively) != 0));
+ settings->setValue("WholeWords", QVariant((d->m_findFlags & QTextDocument::FindWholeWords) != 0));
+ settings->setValue("FindStrings", d->m_findCompletions);
+ settings->setValue("ReplaceStrings", d->m_replaceCompletions);
settings->endGroup();
- m_findToolBar->writeSettings();
- m_findDialog->writeSettings();
+ d->m_findToolBar->writeSettings();
+ d->m_findDialog->writeSettings();
}
void FindPlugin::readSettings()
@@ -279,24 +303,24 @@ void FindPlugin::readSettings()
setCaseSensitive(settings->value("CaseSensitively", false).toBool());
setWholeWord(settings->value("WholeWords", false).toBool());
blockSignals(block);
- m_findCompletions = settings->value("FindStrings").toStringList();
- m_replaceCompletions = settings->value("ReplaceStrings").toStringList();
- m_findCompletionModel->setStringList(m_findCompletions);
- m_replaceCompletionModel->setStringList(m_replaceCompletions);
+ d->m_findCompletions = settings->value("FindStrings").toStringList();
+ d->m_replaceCompletions = settings->value("ReplaceStrings").toStringList();
+ d->m_findCompletionModel->setStringList(d->m_findCompletions);
+ d->m_replaceCompletionModel->setStringList(d->m_replaceCompletions);
settings->endGroup();
- m_findToolBar->readSettings();
- m_findDialog->readSettings();
+ d->m_findToolBar->readSettings();
+ d->m_findDialog->readSettings();
emit findFlagsChanged(); // would have been done in the setXXX methods above
}
void FindPlugin::updateFindCompletion(const QString &text)
{
- updateCompletion(text, m_findCompletions, m_findCompletionModel);
+ updateCompletion(text, d->m_findCompletions, d->m_findCompletionModel);
}
void FindPlugin::updateReplaceCompletion(const QString &text)
{
- updateCompletion(text, m_replaceCompletions, m_replaceCompletionModel);
+ updateCompletion(text, d->m_replaceCompletions, d->m_replaceCompletionModel);
}
void FindPlugin::updateCompletion(const QString &text, QStringList &completions, QStringListModel *model)
@@ -312,16 +336,29 @@ void FindPlugin::updateCompletion(const QString &text, QStringList &completions,
void FindPlugin::setUseFakeVim(bool on)
{
- if (m_findToolBar)
- m_findToolBar->setUseFakeVim(on);
+ if (d->m_findToolBar)
+ d->m_findToolBar->setUseFakeVim(on);
}
void FindPlugin::openFindToolBar(FindDirection direction)
{
- if (m_findToolBar) {
- m_findToolBar->setBackward(direction == FindBackward);
- m_findToolBar->openFindToolBar();
+ if (d->m_findToolBar) {
+ d->m_findToolBar->setBackward(direction == FindBackward);
+ d->m_findToolBar->openFindToolBar();
}
}
-Q_EXPORT_PLUGIN(FindPlugin)
+QStringListModel *FindPlugin::findCompletionModel() const
+{
+ return d->m_findCompletionModel;
+}
+
+QStringListModel *FindPlugin::replaceCompletionModel() const
+{
+ return d->m_replaceCompletionModel;
+}
+
+
+} // namespace Find
+
+Q_EXPORT_PLUGIN(Find::FindPlugin)
diff --git a/src/plugins/find/findplugin.h b/src/plugins/find/findplugin.h
index 475def0f61c..6d0bfe10f95 100644
--- a/src/plugins/find/findplugin.h
+++ b/src/plugins/find/findplugin.h
@@ -30,22 +30,25 @@
#ifndef FINDPLUGIN_H
#define FINDPLUGIN_H
-#include "ifindfilter.h"
+#include "find_global.h"
#include <extensionsystem/iplugin.h>
-#include <QtCore/QHash>
-#include <QtCore/QStringList>
-#include <QtGui/QAction>
#include <QtGui/QTextDocument>
-#include <QtGui/QStringListModel>
+
+QT_BEGIN_NAMESPACE
+class QStringListModel;
+QT_END_NAMESPACE
namespace Find {
-namespace Internal {
+class IFindFilter;
+struct FindPluginPrivate;
+namespace Internal {
class FindToolBar;
class FindToolWindow;
class CurrentDocumentFind;
+} // namespace Internal
class FIND_EXPORT FindPlugin : public ExtensionSystem::IPlugin
{
@@ -69,8 +72,8 @@ public:
QTextDocument::FindFlags findFlags() const;
void updateFindCompletion(const QString &text);
void updateReplaceCompletion(const QString &text);
- QStringListModel *findCompletionModel() { return m_findCompletionModel; }
- QStringListModel *replaceCompletionModel() { return m_replaceCompletionModel; }
+ QStringListModel *findCompletionModel() const;
+ QStringListModel *replaceCompletionModel() const;
void setUseFakeVim(bool on);
void openFindToolBar(FindDirection direction);
@@ -96,22 +99,9 @@ private:
void readSettings();
//variables
- static FindPlugin *m_instance;
-
- QHash<IFindFilter *, QAction *> m_filterActions;
-
- CurrentDocumentFind *m_currentDocumentFind;
- FindToolBar *m_findToolBar;
- FindToolWindow *m_findDialog;
- QTextDocument::FindFlags m_findFlags;
- QStringListModel *m_findCompletionModel;
- QStringListModel *m_replaceCompletionModel;
- QStringList m_findCompletions;
- QStringList m_replaceCompletions;
- QAction *m_openFindDialog;
+ FindPluginPrivate *d;
};
-} // namespace Internal
} // namespace Find
#endif // FINDPLUGIN_H
diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp
index 3f3449a5c24..a497cfd4e1a 100644
--- a/src/plugins/find/findtoolbar.cpp
+++ b/src/plugins/find/findtoolbar.cpp
@@ -36,7 +36,10 @@
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/command.h>
+#include <coreplugin/findplaceholder.h>
+
#include <extensionsystem/pluginmanager.h>
+
#include <utils/stylehelper.h>
#include <QtCore/QDebug>
@@ -51,6 +54,7 @@
#include <QtGui/QToolButton>
#include <QtGui/QPainter>
#include <QtGui/QPixmapCache>
+#include <QtGui/QStringListModel>
Q_DECLARE_METATYPE(QStringList)
Q_DECLARE_METATYPE(Find::IFindFilter*)
diff --git a/src/plugins/find/findtoolbar.h b/src/plugins/find/findtoolbar.h
index a35438744c2..ab8d8a4132f 100644
--- a/src/plugins/find/findtoolbar.h
+++ b/src/plugins/find/findtoolbar.h
@@ -31,29 +31,27 @@
#define FINDTOOLBAR_H
#include "ui_findwidget.h"
-#include "ifindfilter.h"
#include "currentdocumentfind.h"
-#include <coreplugin/findplaceholder.h>
#include <utils/styledbar.h>
#include <QtCore/QTimer>
-#include <QtGui/QStringListModel>
-#include <QtGui/QWidget>
-#include <QtGui/QLabel>
+namespace Core {
+class FindToolBarPlaceHolder;
+}
namespace Find {
-namespace Internal {
-
class FindPlugin;
+namespace Internal {
+
class FindToolBar : public Utils::StyledBar
{
Q_OBJECT
public:
- FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumentFind);
+ explicit FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumentFind);
~FindToolBar();
void readSettings();
diff --git a/src/plugins/find/findtoolwindow.cpp b/src/plugins/find/findtoolwindow.cpp
index 0c61c7ff95f..2058af703e4 100644
--- a/src/plugins/find/findtoolwindow.cpp
+++ b/src/plugins/find/findtoolwindow.cpp
@@ -34,6 +34,8 @@
#include <QtCore/QSettings>
#include <QtGui/QMainWindow>
+#include <QtGui/QStringListModel>
+#include <QtGui/QCompleter>
using namespace Find;
using namespace Find::Internal;
diff --git a/src/plugins/find/findtoolwindow.h b/src/plugins/find/findtoolwindow.h
index f06b2cbb982..b4575edbceb 100644
--- a/src/plugins/find/findtoolwindow.h
+++ b/src/plugins/find/findtoolwindow.h
@@ -34,20 +34,20 @@
#include "ifindfilter.h"
#include <QtCore/QList>
-#include <QtGui/QCompleter>
-#include <QtGui/QWidget>
-namespace Find {
-namespace Internal {
+QT_FORWARD_DECLARE_CLASS(QCompleter)
+namespace Find {
class FindPlugin;
+namespace Internal {
+
class FindToolWindow : public QDialog
{
Q_OBJECT
public:
- FindToolWindow(FindPlugin *plugin);
+ explicit FindToolWindow(FindPlugin *plugin);
~FindToolWindow();
void setFindFilters(const QList<IFindFilter *> &filters);
@@ -70,7 +70,7 @@ private:
FindPlugin *m_plugin;
QList<IFindFilter *> m_filters;
QCompleter *m_findCompleter;
- QList<QWidget *> m_configWidgets;
+ QWidgetList m_configWidgets;
IFindFilter *m_currentFilter;
};
diff --git a/src/plugins/find/searchresulttreeitems.h b/src/plugins/find/searchresulttreeitems.h
index c5f934dbb09..18ff329a0e0 100644
--- a/src/plugins/find/searchresulttreeitems.h
+++ b/src/plugins/find/searchresulttreeitems.h
@@ -30,9 +30,9 @@
#ifndef SEARCHRESULTTREEITEMS_H
#define SEARCHRESULTTREEITEMS_H
-#include <QtCore/QObject>
#include <QtCore/QString>
#include <QtCore/QList>
+#include <QtCore/qnamespace.h>
namespace Find {
namespace Internal {
diff --git a/src/plugins/find/searchresulttreeview.cpp b/src/plugins/find/searchresulttreeview.cpp
index 85dcdc5591f..22e84f2628b 100644
--- a/src/plugins/find/searchresulttreeview.cpp
+++ b/src/plugins/find/searchresulttreeview.cpp
@@ -33,6 +33,7 @@
#include "searchresulttreeitemdelegate.h"
#include <QtGui/QHeaderView>
+#include <QtGui/QKeyEvent>
using namespace Find::Internal;
diff --git a/src/plugins/find/searchresulttreeview.h b/src/plugins/find/searchresulttreeview.h
index a900c9d7245..8337de6295b 100644
--- a/src/plugins/find/searchresulttreeview.h
+++ b/src/plugins/find/searchresulttreeview.h
@@ -31,7 +31,6 @@
#define SEARCHRESULTTREEVIEW_H
#include <QtGui/QTreeView>
-#include <QtGui/QKeyEvent>
namespace Find {
namespace Internal {
@@ -43,7 +42,7 @@ class SearchResultTreeView : public QTreeView
Q_OBJECT
public:
- SearchResultTreeView(QWidget *parent = 0);
+ explicit SearchResultTreeView(QWidget *parent = 0);
void setAutoExpandResults(bool expand);
void setTextEditorFont(const QFont &font);
diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp
index 84bd59ba772..0289b71e571 100644
--- a/src/plugins/find/searchresultwindow.cpp
+++ b/src/plugins/find/searchresultwindow.cpp
@@ -30,6 +30,7 @@
#include "searchresultwindow.h"
#include "searchresulttreemodel.h"
#include "searchresulttreeitems.h"
+#include "searchresulttreeview.h"
#include <coreplugin/icore.h>
#include <utils/qtcassert.h>
@@ -43,53 +44,72 @@
#include <QtGui/QLineEdit>
#include <QtGui/QStackedWidget>
#include <QtGui/QLabel>
+#include <QtGui/QFont>
-using namespace Find;
-using namespace Find::Internal;
+static const char SETTINGSKEYSECTIONNAME[] = "SearchResults";
+static const char SETTINGSKEYEXPANDRESULTS[] = "ExpandResults";
-static const QString SETTINGSKEYSECTIONNAME("SearchResults");
-static const QString SETTINGSKEYEXPANDRESULTS("ExpandResults");
+namespace Find {
-SearchResultWindow::SearchResultWindow()
- : m_currentSearch(0),
- m_isShowingReplaceUI(false),
- m_focusReplaceEdit(false)
-{
- m_widget = new QStackedWidget;
- m_widget->setWindowTitle(name());
-
- m_searchResultTreeView = new SearchResultTreeView(m_widget);
- m_searchResultTreeView->setFrameStyle(QFrame::NoFrame);
- m_searchResultTreeView->setAttribute(Qt::WA_MacShowFocusRect, false);
- m_widget->addWidget(m_searchResultTreeView);
+struct SearchResultWindowPrivate {
+ SearchResultWindowPrivate();
- m_noMatchesFoundDisplay = new QListWidget(m_widget);
- m_noMatchesFoundDisplay->addItem(tr("No matches found!"));
- m_noMatchesFoundDisplay->setFrameStyle(QFrame::NoFrame);
- m_widget->addWidget(m_noMatchesFoundDisplay);
+ Internal::SearchResultTreeView *m_searchResultTreeView;
+ QListWidget *m_noMatchesFoundDisplay;
+ QToolButton *m_expandCollapseToolButton;
+ QLabel *m_replaceLabel;
+ QLineEdit *m_replaceTextEdit;
+ QToolButton *m_replaceButton;
+ static const bool m_initiallyExpand = false;
+ QStackedWidget *m_widget;
+ SearchResult *m_currentSearch;
+ QList<SearchResultItem> m_items;
+ bool m_isShowingReplaceUI;
+ bool m_focusReplaceEdit;
+};
- m_expandCollapseToolButton = new QToolButton(m_widget);
- m_expandCollapseToolButton->setAutoRaise(true);
- m_expandCollapseToolButton->setCheckable(true);
- m_expandCollapseToolButton->setIcon(QIcon(":/find/images/expand.png"));
- m_expandCollapseToolButton->setToolTip(tr("Expand All"));
-
- m_replaceLabel = new QLabel(tr("Replace with:"), m_widget);
- m_replaceLabel->setContentsMargins(12, 0, 5, 0);
- m_replaceTextEdit = new QLineEdit(m_widget);
- m_replaceButton = new QToolButton(m_widget);
- m_replaceButton->setToolTip(tr("Replace all occurrences"));
- m_replaceButton->setText(tr("Replace"));
- m_replaceButton->setToolButtonStyle(Qt::ToolButtonTextOnly);
- m_replaceButton->setAutoRaise(true);
- m_replaceTextEdit->setTabOrder(m_replaceTextEdit, m_searchResultTreeView);
+SearchResultWindowPrivate::SearchResultWindowPrivate()
+ : m_currentSearch(0), m_isShowingReplaceUI(false), m_focusReplaceEdit(false)
+{
+}
- connect(m_searchResultTreeView, SIGNAL(jumpToSearchResult(int,bool)),
+SearchResultWindow::SearchResultWindow() : d(new SearchResultWindowPrivate)
+{
+ d->m_widget = new QStackedWidget;
+ d->m_widget->setWindowTitle(name());
+
+ d->m_searchResultTreeView = new Internal::SearchResultTreeView(d->m_widget);
+ d->m_searchResultTreeView->setFrameStyle(QFrame::NoFrame);
+ d->m_searchResultTreeView->setAttribute(Qt::WA_MacShowFocusRect, false);
+ d->m_widget->addWidget(d->m_searchResultTreeView);
+
+ d->m_noMatchesFoundDisplay = new QListWidget(d->m_widget);
+ d->m_noMatchesFoundDisplay->addItem(tr("No matches found!"));
+ d->m_noMatchesFoundDisplay->setFrameStyle(QFrame::NoFrame);
+ d->m_widget->addWidget(d->m_noMatchesFoundDisplay);
+
+ d->m_expandCollapseToolButton = new QToolButton(d->m_widget);
+ d->m_expandCollapseToolButton->setAutoRaise(true);
+ d->m_expandCollapseToolButton->setCheckable(true);
+ d->m_expandCollapseToolButton->setIcon(QIcon(":/find/images/expand.png"));
+ d->m_expandCollapseToolButton->setToolTip(tr("Expand All"));
+
+ d->m_replaceLabel = new QLabel(tr("Replace with:"), d->m_widget);
+ d->m_replaceLabel->setContentsMargins(12, 0, 5, 0);
+ d->m_replaceTextEdit = new QLineEdit(d->m_widget);
+ d->m_replaceButton = new QToolButton(d->m_widget);
+ d->m_replaceButton->setToolTip(tr("Replace all occurrences"));
+ d->m_replaceButton->setText(tr("Replace"));
+ d->m_replaceButton->setToolButtonStyle(Qt::ToolButtonTextOnly);
+ d->m_replaceButton->setAutoRaise(true);
+ d->m_replaceTextEdit->setTabOrder(d->m_replaceTextEdit, d->m_searchResultTreeView);
+
+ connect(d->m_searchResultTreeView, SIGNAL(jumpToSearchResult(int,bool)),
this, SLOT(handleJumpToSearchResult(int,bool)));
- connect(m_expandCollapseToolButton, SIGNAL(toggled(bool)), this, SLOT(handleExpandCollapseToolButton(bool)));
- connect(m_replaceTextEdit, SIGNAL(returnPressed()), this, SLOT(handleReplaceButton()));
- connect(m_replaceButton, SIGNAL(clicked()), this, SLOT(handleReplaceButton()));
+ connect(d->m_expandCollapseToolButton, SIGNAL(toggled(bool)), this, SLOT(handleExpandCollapseToolButton(bool)));
+ connect(d->m_replaceTextEdit, SIGNAL(returnPressed()), this, SLOT(handleReplaceButton()));
+ connect(d->m_replaceButton, SIGNAL(clicked()), this, SLOT(handleReplaceButton()));
readSettings();
setShowReplaceUI(false);
@@ -98,55 +118,56 @@ SearchResultWindow::SearchResultWindow()
SearchResultWindow::~SearchResultWindow()
{
writeSettings();
- delete m_currentSearch;
- m_currentSearch = 0;
- delete m_widget;
- m_widget = 0;
- m_items.clear();
+ delete d->m_currentSearch;
+ d->m_currentSearch = 0;
+ delete d->m_widget;
+ d->m_widget = 0;
+ d->m_items.clear();
+ delete d;
}
void SearchResultWindow::setTextToReplace(const QString &textToReplace)
{
- m_replaceTextEdit->setText(textToReplace);
+ d->m_replaceTextEdit->setText(textToReplace);
}
QString SearchResultWindow::textToReplace() const
{
- return m_replaceTextEdit->text();
+ return d->m_replaceTextEdit->text();
}
void SearchResultWindow::setShowReplaceUI(bool show)
{
- m_searchResultTreeView->model()->setShowReplaceUI(show);
- m_replaceLabel->setVisible(show);
- m_replaceTextEdit->setVisible(show);
- m_replaceButton->setVisible(show);
- m_isShowingReplaceUI = show;
+ d->m_searchResultTreeView->model()->setShowReplaceUI(show);
+ d->m_replaceLabel->setVisible(show);
+ d->m_replaceTextEdit->setVisible(show);
+ d->m_replaceButton->setVisible(show);
+ d->m_isShowingReplaceUI = show;
}
void SearchResultWindow::handleReplaceButton()
{
- QTC_ASSERT(m_currentSearch, return);
+ QTC_ASSERT(d->m_currentSearch, return);
// check if button is actually enabled, because this is also triggered
// by pressing return in replace line edit
- if (m_replaceButton->isEnabled())
- m_currentSearch->replaceButtonClicked(m_replaceTextEdit->text(), checkedItems());
+ if (d->m_replaceButton->isEnabled())
+ d->m_currentSearch->replaceButtonClicked(d->m_replaceTextEdit->text(), checkedItems());
}
QList<SearchResultItem> SearchResultWindow::checkedItems() const
{
QList<SearchResultItem> result;
- SearchResultTreeModel *model = m_searchResultTreeView->model();
+ Internal::SearchResultTreeModel *model = d->m_searchResultTreeView->model();
const int fileCount = model->rowCount(QModelIndex());
for (int i = 0; i < fileCount; ++i) {
QModelIndex fileIndex = model->index(i, 0, QModelIndex());
- SearchResultFile *fileItem = static_cast<SearchResultFile *>(fileIndex.internalPointer());
+ Internal::SearchResultFile *fileItem = static_cast<Internal::SearchResultFile *>(fileIndex.internalPointer());
Q_ASSERT(fileItem != 0);
for (int rowIndex = 0; rowIndex < fileItem->childrenCount(); ++rowIndex) {
QModelIndex textIndex = model->index(rowIndex, 0, fileIndex);
- SearchResultTextRow *rowItem = static_cast<SearchResultTextRow *>(textIndex.internalPointer());
+ Internal::SearchResultTextRow *rowItem = static_cast<Internal::SearchResultTextRow *>(textIndex.internalPointer());
if (rowItem->checkState())
- result << m_items.at(rowItem->index());
+ result << d->m_items.at(rowItem->index());
}
}
return result;
@@ -158,27 +179,27 @@ void SearchResultWindow::visibilityChanged(bool /*visible*/)
QWidget *SearchResultWindow::outputWidget(QWidget *)
{
- return m_widget;
+ return d->m_widget;
}
QList<QWidget*> SearchResultWindow::toolBarWidgets() const
{
- return QList<QWidget*>() << m_expandCollapseToolButton << m_replaceLabel << m_replaceTextEdit << m_replaceButton;
+ return QList<QWidget*>() << d->m_expandCollapseToolButton << d->m_replaceLabel << d->m_replaceTextEdit << d->m_replaceButton;
}
SearchResult *SearchResultWindow::startNewSearch(SearchMode searchOrSearchAndReplace)
{
clearContents();
setShowReplaceUI(searchOrSearchAndReplace != SearchOnly);
- delete m_currentSearch;
- m_currentSearch = new SearchResult;
- return m_currentSearch;
+ delete d->m_currentSearch;
+ d->m_currentSearch = new SearchResult;
+ return d->m_currentSearch;
}
void SearchResultWindow::finishSearch()
{
- if (m_items.count()) {
- m_replaceButton->setEnabled(true);
+ if (d->m_items.count()) {
+ d->m_replaceButton->setEnabled(true);
} else {
showNoMatchesFound();
}
@@ -186,55 +207,55 @@ void SearchResultWindow::finishSearch()
void SearchResultWindow::clearContents()
{
- m_replaceTextEdit->setEnabled(false);
- m_replaceButton->setEnabled(false);
- m_replaceTextEdit->clear();
- m_searchResultTreeView->clear();
- m_items.clear();
- m_widget->setCurrentWidget(m_searchResultTreeView);
+ d->m_replaceTextEdit->setEnabled(false);
+ d->m_replaceButton->setEnabled(false);
+ d->m_replaceTextEdit->clear();
+ d->m_searchResultTreeView->clear();
+ d->m_items.clear();
+ d->m_widget->setCurrentWidget(d->m_searchResultTreeView);
navigateStateChanged();
}
void SearchResultWindow::showNoMatchesFound()
{
- m_replaceTextEdit->setEnabled(false);
- m_replaceButton->setEnabled(false);
- m_widget->setCurrentWidget(m_noMatchesFoundDisplay);
+ d->m_replaceTextEdit->setEnabled(false);
+ d->m_replaceButton->setEnabled(false);
+ d->m_widget->setCurrentWidget(d->m_noMatchesFoundDisplay);
}
bool SearchResultWindow::isEmpty() const
{
- return (m_searchResultTreeView->model()->rowCount() < 1);
+ return (d->m_searchResultTreeView->model()->rowCount() < 1);
}
int SearchResultWindow::numberOfResults() const
{
- return m_items.count();
+ return d->m_items.count();
}
bool SearchResultWindow::hasFocus()
{
- return m_searchResultTreeView->hasFocus() || (m_isShowingReplaceUI && m_replaceTextEdit->hasFocus());
+ return d->m_searchResultTreeView->hasFocus() || (d->m_isShowingReplaceUI && d->m_replaceTextEdit->hasFocus());
}
bool SearchResultWindow::canFocus()
{
- return !m_items.isEmpty();
+ return !d->m_items.isEmpty();
}
void SearchResultWindow::setFocus()
{
- if (!m_items.isEmpty()) {
- if (!m_isShowingReplaceUI) {
- m_searchResultTreeView->setFocus();
+ if (!d->m_items.isEmpty()) {
+ if (!d->m_isShowingReplaceUI) {
+ d->m_searchResultTreeView->setFocus();
} else {
- if (!m_widget->focusWidget()
- || m_widget->focusWidget() == m_replaceTextEdit
- || m_focusReplaceEdit) {
- m_replaceTextEdit->setFocus();
- m_replaceTextEdit->selectAll();
+ if (!d->m_widget->focusWidget()
+ || d->m_widget->focusWidget() == d->m_replaceTextEdit
+ || d->m_focusReplaceEdit) {
+ d->m_replaceTextEdit->setFocus();
+ d->m_replaceTextEdit->selectAll();
} else {
- m_searchResultTreeView->setFocus();
+ d->m_searchResultTreeView->setFocus();
}
}
}
@@ -242,21 +263,21 @@ void SearchResultWindow::setFocus()
void SearchResultWindow::setTextEditorFont(const QFont &font)
{
- m_searchResultTreeView->setTextEditorFont(font);
+ d->m_searchResultTreeView->setTextEditorFont(font);
}
void SearchResultWindow::handleJumpToSearchResult(int index, bool /* checked */)
{
- QTC_ASSERT(m_currentSearch, return);
- m_currentSearch->activated(m_items.at(index));
+ QTC_ASSERT(d->m_currentSearch, return);
+ d->m_currentSearch->activated(d->m_items.at(index));
}
void SearchResultWindow::addResult(const QString &fileName, int lineNumber, const QString &rowText,
int searchTermStart, int searchTermLength, const QVariant &userData)
{
//qDebug()<<"###"<<fileName;
- m_widget->setCurrentWidget(m_searchResultTreeView);
- int index = m_items.size();
+ d->m_widget->setCurrentWidget(d->m_searchResultTreeView);
+ int index = d->m_items.size();
SearchResultItem item;
item.fileName = fileName;
item.lineNumber = lineNumber;
@@ -265,34 +286,34 @@ void SearchResultWindow::addResult(const QString &fileName, int lineNumber, cons
item.searchTermLength = searchTermLength;
item.userData = userData;
item.index = index;
- m_items.append(item);
- m_searchResultTreeView->appendResultLine(index, fileName, lineNumber, rowText, searchTermStart, searchTermLength);
+ d->m_items.append(item);
+ d->m_searchResultTreeView->appendResultLine(index, fileName, lineNumber, rowText, searchTermStart, searchTermLength);
if (index == 0) {
- m_replaceTextEdit->setEnabled(true);
+ d->m_replaceTextEdit->setEnabled(true);
// We didn't have an item before, set the focus to the search widget
- m_focusReplaceEdit = true;
+ d->m_focusReplaceEdit = true;
setFocus();
- m_focusReplaceEdit = false;
- m_searchResultTreeView->selectionModel()->select(m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select);
+ d->m_focusReplaceEdit = false;
+ d->m_searchResultTreeView->selectionModel()->select(d->m_searchResultTreeView->model()->index(0, 0, QModelIndex()), QItemSelectionModel::Select);
emit navigateStateChanged();
}
}
void SearchResultWindow::handleExpandCollapseToolButton(bool checked)
{
- m_searchResultTreeView->setAutoExpandResults(checked);
+ d->m_searchResultTreeView->setAutoExpandResults(checked);
if (checked)
- m_searchResultTreeView->expandAll();
+ d->m_searchResultTreeView->expandAll();
else
- m_searchResultTreeView->collapseAll();
+ d->m_searchResultTreeView->collapseAll();
}
void SearchResultWindow::readSettings()
{
QSettings *s = Core::ICore::instance()->settings();
if (s) {
- s->beginGroup(SETTINGSKEYSECTIONNAME);
- m_expandCollapseToolButton->setChecked(s->value(SETTINGSKEYEXPANDRESULTS, m_initiallyExpand).toBool());
+ s->beginGroup(QLatin1String(SETTINGSKEYSECTIONNAME));
+ d->m_expandCollapseToolButton->setChecked(s->value(QLatin1String(SETTINGSKEYEXPANDRESULTS), d->m_initiallyExpand).toBool());
s->endGroup();
}
}
@@ -301,8 +322,8 @@ void SearchResultWindow::writeSettings()
{
QSettings *s = Core::ICore::instance()->settings();
if (s) {
- s->beginGroup(SETTINGSKEYSECTIONNAME);
- s->setValue(SETTINGSKEYEXPANDRESULTS, m_expandCollapseToolButton->isChecked());
+ s->beginGroup(QLatin1String(SETTINGSKEYSECTIONNAME));
+ s->setValue(QLatin1String(SETTINGSKEYEXPANDRESULTS), d->m_expandCollapseToolButton->isChecked());
s->endGroup();
}
}
@@ -314,32 +335,32 @@ int SearchResultWindow::priorityInStatusBar() const
bool SearchResultWindow::canNext()
{
- return m_items.count() > 0;
+ return d->m_items.count() > 0;
}
bool SearchResultWindow::canPrevious()
{
- return m_items.count() > 0;
+ return d->m_items.count() > 0;
}
void SearchResultWindow::goToNext()
{
- if (m_items.count() == 0)
+ if (d->m_items.count() == 0)
return;
- QModelIndex idx = m_searchResultTreeView->model()->next(m_searchResultTreeView->currentIndex());
+ QModelIndex idx = d->m_searchResultTreeView->model()->next(d->m_searchResultTreeView->currentIndex());
if (idx.isValid()) {
- m_searchResultTreeView->setCurrentIndex(idx);
- m_searchResultTreeView->emitJumpToSearchResult(idx);
+ d->m_searchResultTreeView->setCurrentIndex(idx);
+ d->m_searchResultTreeView->emitJumpToSearchResult(idx);
}
}
void SearchResultWindow::goToPrev()
{
- if (!m_searchResultTreeView->model()->rowCount())
+ if (!d->m_searchResultTreeView->model()->rowCount())
return;
- QModelIndex idx = m_searchResultTreeView->model()->prev(m_searchResultTreeView->currentIndex());
+ QModelIndex idx = d->m_searchResultTreeView->model()->prev(d->m_searchResultTreeView->currentIndex());
if (idx.isValid()) {
- m_searchResultTreeView->setCurrentIndex(idx);
- m_searchResultTreeView->emitJumpToSearchResult(idx);
+ d->m_searchResultTreeView->setCurrentIndex(idx);
+ d->m_searchResultTreeView->emitJumpToSearchResult(idx);
}
}
@@ -347,3 +368,6 @@ bool SearchResultWindow::canNavigate()
{
return true;
}
+
+} // namespace Find
+
diff --git a/src/plugins/find/searchresultwindow.h b/src/plugins/find/searchresultwindow.h
index 39713fa853d..c8f38285bc5 100644
--- a/src/plugins/find/searchresultwindow.h
+++ b/src/plugins/find/searchresultwindow.h
@@ -31,20 +31,19 @@
#define SEARCHRESULTWINDOW_H
#include "find_global.h"
-#include "searchresulttreeview.h"
-#include <coreplugin/ioutputpane.h>
+#include <QtCore/QVariant>
+#include <coreplugin/ioutputpane.h>
QT_BEGIN_NAMESPACE
-class QStackedWidget;
-class QListWidget;
-class QToolButton;
-class QLabel;
+class QFont;
QT_END_NAMESPACE
namespace Find {
-
+namespace Internal {
+ class SearchResultTreeView;
+}
class SearchResultWindow;
struct FIND_EXPORT SearchResultItem
@@ -70,6 +69,7 @@ signals:
friend class SearchResultWindow;
};
+struct SearchResultWindowPrivate;
class FIND_EXPORT SearchResultWindow : public Core::IOutputPane
{
Q_OBJECT
@@ -81,7 +81,7 @@ public:
};
SearchResultWindow();
- ~SearchResultWindow();
+ virtual ~SearchResultWindow();
QWidget *outputWidget(QWidget *);
QList<QWidget*> toolBarWidgets() const;
@@ -127,18 +127,7 @@ private:
void writeSettings();
QList<SearchResultItem> checkedItems() const;
- Internal::SearchResultTreeView *m_searchResultTreeView;
- QListWidget *m_noMatchesFoundDisplay;
- QToolButton *m_expandCollapseToolButton;
- QLabel *m_replaceLabel;
- QLineEdit *m_replaceTextEdit;
- QToolButton *m_replaceButton;
- static const bool m_initiallyExpand = false;
- QStackedWidget *m_widget;
- SearchResult *m_currentSearch;
- QList<SearchResultItem> m_items;
- bool m_isShowingReplaceUI;
- bool m_focusReplaceEdit;
+ SearchResultWindowPrivate *d;
};
} // namespace Find