Core: Merge Find and Locator into Core plugin

Change-Id: I7053310272235d854c9f409670ff52a10a7add8b
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
hjk
2014-01-13 16:17:34 +01:00
committed by Eike Ziller
parent 8b854270a6
commit 4d96fa7aba
239 changed files with 1625 additions and 1787 deletions

View File

@@ -36,7 +36,7 @@
#include <coreplugin/progressmanager/futureprogress.h>
#include <coreplugin/dialogs/readonlyfilesdialog.h>
#include <coreplugin/documentmanager.h>
#include <find/ifindsupport.h>
#include <coreplugin/find/ifindsupport.h>
#include <texteditor/itexteditor.h>
#include <texteditor/refactoringchanges.h>
#include <utils/stylehelper.h>
@@ -56,27 +56,26 @@
namespace TextEditor {
namespace Internal {
class BaseFileFindPrivate {
class BaseFileFindPrivate
{
public:
BaseFileFindPrivate() : m_resultLabel(0), m_filterCombo(0) {}
QMap<QFutureWatcher<Utils::FileSearchResultList> *, QPointer<Find::SearchResult> > m_watchers;
QPointer<Find::IFindSupport> m_currentFindSupport;
QMap<QFutureWatcher<Utils::FileSearchResultList> *, QPointer<Core::SearchResult> > m_watchers;
QPointer<Core::IFindSupport> m_currentFindSupport;
QLabel *m_resultLabel;
QStringListModel m_filterStrings;
QString m_filterSetting;
QPointer<QComboBox> m_filterCombo;
};
} // namespace Internal
} // namespace TextEditor
using namespace Core;
using namespace Internal;
using namespace Utils;
using namespace Find;
using namespace TextEditor;
using namespace TextEditor::Internal;
using namespace Core;
BaseFileFind::BaseFileFind() : d(new BaseFileFindPrivate)
{
@@ -125,14 +124,14 @@ QStringList BaseFileFind::fileNameFilters() const
return filters;
}
void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
void BaseFileFind::runNewSearch(const QString &txt, Core::FindFlags findFlags,
SearchResultWindow::SearchMode searchMode)
{
d->m_currentFindSupport = 0;
if (d->m_filterCombo)
updateComboEntries(d->m_filterCombo, true);
SearchResult *search = Find::SearchResultWindow::instance()->startNewSearch(label(),
toolTip().arg(Find::IFindFilter::descriptionForFindFlags(findFlags)),
SearchResult *search = Core::SearchResultWindow::instance()->startNewSearch(label(),
toolTip().arg(Core::IFindFilter::descriptionForFindFlags(findFlags)),
txt, searchMode, QString::fromLatin1("TextEditor"));
search->setTextToReplace(txt);
search->setSearchAgainSupported(true);
@@ -142,10 +141,10 @@ void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
parameters.nameFilters = fileNameFilters();
parameters.additionalParameters = additionalParameters();
search->setUserData(qVariantFromValue(parameters));
connect(search, SIGNAL(activated(Find::SearchResultItem)), this, SLOT(openEditor(Find::SearchResultItem)));
connect(search, SIGNAL(activated(Core::SearchResultItem)), this, SLOT(openEditor(Core::SearchResultItem)));
if (searchMode == SearchResultWindow::SearchAndReplace) {
connect(search, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>,bool)),
this, SLOT(doReplace(QString,QList<Find::SearchResultItem>,bool)));
connect(search, SIGNAL(replaceButtonClicked(QString,QList<Core::SearchResultItem>,bool)),
this, SLOT(doReplace(QString,QList<Core::SearchResultItem>,bool)));
}
connect(search, SIGNAL(visibilityChanged(bool)), this, SLOT(hideHighlightAll(bool)));
connect(search, SIGNAL(cancelled()), this, SLOT(cancel()));
@@ -157,20 +156,20 @@ void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
runSearch(search);
}
void BaseFileFind::runSearch(Find::SearchResult *search)
void BaseFileFind::runSearch(Core::SearchResult *search)
{
FileFindParameters parameters = search->userData().value<FileFindParameters>();
CountingLabel *label = new CountingLabel;
connect(search, SIGNAL(countChanged(int)), label, SLOT(updateCount(int)));
CountingLabel *statusLabel = new CountingLabel;
connect(search, SIGNAL(countChanged(int)), statusLabel, SLOT(updateCount(int)));
Find::SearchResultWindow::instance()->popup(IOutputPane::Flags(IOutputPane::ModeSwitch|IOutputPane::WithFocus));
Core::SearchResultWindow::instance()->popup(IOutputPane::Flags(IOutputPane::ModeSwitch|IOutputPane::WithFocus));
QFutureWatcher<FileSearchResultList> *watcher = new QFutureWatcher<FileSearchResultList>();
d->m_watchers.insert(watcher, search);
watcher->setPendingResultsLimit(1);
connect(watcher, SIGNAL(resultReadyAt(int)), this, SLOT(displayResult(int)));
connect(watcher, SIGNAL(finished()), this, SLOT(searchFinished()));
if (parameters.flags & Find::FindRegularExpression) {
if (parameters.flags & FindRegularExpression) {
watcher->setFuture(Utils::findInFilesRegExp(parameters.text,
files(parameters.nameFilters, parameters.additionalParameters),
textDocumentFlagsForFindFlags(parameters.flags),
@@ -188,24 +187,24 @@ void BaseFileFind::runSearch(Find::SearchResult *search)
connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
}
void BaseFileFind::findAll(const QString &txt, Find::FindFlags findFlags)
void BaseFileFind::findAll(const QString &txt, Core::FindFlags findFlags)
{
runNewSearch(txt, findFlags, SearchResultWindow::SearchOnly);
}
void BaseFileFind::replaceAll(const QString &txt, Find::FindFlags findFlags)
void BaseFileFind::replaceAll(const QString &txt, Core::FindFlags findFlags)
{
runNewSearch(txt, findFlags, SearchResultWindow::SearchAndReplace);
}
void BaseFileFind::doReplace(const QString &text,
const QList<Find::SearchResultItem> &items,
const QList<Core::SearchResultItem> &items,
bool preserveCase)
{
QStringList files = replaceAll(text, items, preserveCase);
if (!files.isEmpty()) {
DocumentManager::notifyFilesChangedInternally(files);
Find::SearchResultWindow::instance()->hide();
Core::SearchResultWindow::instance()->hide();
}
}
@@ -219,9 +218,9 @@ void BaseFileFind::displayResult(int index) {
return;
}
Utils::FileSearchResultList results = watcher->resultAt(index);
QList<Find::SearchResultItem> items;
QList<Core::SearchResultItem> items;
foreach (const Utils::FileSearchResult &result, results) {
Find::SearchResultItem item;
Core::SearchResultItem item;
item.path = QStringList() << QDir::toNativeSeparators(result.fileName);
item.lineNumber = result.lineNumber;
item.text = result.matchingLine;
@@ -231,7 +230,7 @@ void BaseFileFind::displayResult(int index) {
item.userData = result.regexpCapturedTexts;
items << item;
}
search->addResults(items, Find::SearchResult::AddOrdered);
search->addResults(items, Core::SearchResult::AddOrdered);
}
void BaseFileFind::searchFinished()
@@ -304,7 +303,7 @@ void BaseFileFind::updateComboEntries(QComboBox *combo, bool onTop)
}
}
void BaseFileFind::openEditor(const Find::SearchResultItem &item)
void BaseFileFind::openEditor(const Core::SearchResultItem &item)
{
SearchResult *result = qobject_cast<SearchResult *>(sender());
IEditor *openedEditor = 0;
@@ -352,7 +351,7 @@ void BaseFileFind::recheckEnabled()
}
QStringList BaseFileFind::replaceAll(const QString &text,
const QList<Find::SearchResultItem> &items,
const QList<Core::SearchResultItem> &items,
bool preserveCase)
{
if (items.isEmpty())
@@ -360,12 +359,12 @@ QStringList BaseFileFind::replaceAll(const QString &text,
RefactoringChanges refactoring;
QHash<QString, QList<Find::SearchResultItem> > changes;
foreach (const Find::SearchResultItem &item, items)
QHash<QString, QList<Core::SearchResultItem> > changes;
foreach (const Core::SearchResultItem &item, items)
changes[QDir::fromNativeSeparators(item.path.first())].append(item);
// Checking for files without write permissions
QHashIterator<QString, QList<Find::SearchResultItem> > it(changes);
QHashIterator<QString, QList<Core::SearchResultItem> > it(changes);
QSet<QString> roFiles;
while (it.hasNext()) {
it.next();
@@ -386,12 +385,12 @@ QStringList BaseFileFind::replaceAll(const QString &text,
while (it.hasNext()) {
it.next();
const QString fileName = it.key();
const QList<Find::SearchResultItem> changeItems = it.value();
const QList<Core::SearchResultItem> changeItems = it.value();
ChangeSet changeSet;
RefactoringFilePtr file = refactoring.file(fileName);
QSet<QPair<int, int> > processed;
foreach (const Find::SearchResultItem &item, changeItems) {
foreach (const Core::SearchResultItem &item, changeItems) {
const QPair<int, int> &p = qMakePair(item.lineNumber, item.textMarkPos);
if (processed.contains(p))
continue;
@@ -441,3 +440,5 @@ void CountingLabel::updateCount(int count)
{
setText(tr("%1 found").arg(count));
}
} // namespace TextEditor