aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/locator
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/coreplugin/locator')
-rw-r--r--src/plugins/coreplugin/locator/basefilefilter.cpp2
-rw-r--r--src/plugins/coreplugin/locator/directoryfilter.cpp170
-rw-r--r--src/plugins/coreplugin/locator/directoryfilter.h29
-rw-r--r--src/plugins/coreplugin/locator/directoryfilter.ui37
-rw-r--r--src/plugins/coreplugin/locator/executefilter.cpp6
-rw-r--r--src/plugins/coreplugin/locator/filesystemfilter.cpp3
-rw-r--r--src/plugins/coreplugin/locator/locator.cpp25
-rw-r--r--src/plugins/coreplugin/locator/locator.h5
-rw-r--r--src/plugins/coreplugin/locator/locator_test.cpp2
-rw-r--r--src/plugins/coreplugin/locator/locatorwidget.cpp7
-rw-r--r--src/plugins/coreplugin/locator/opendocumentsfilter.cpp2
-rw-r--r--src/plugins/coreplugin/locator/opendocumentsfilter.h2
12 files changed, 200 insertions, 90 deletions
diff --git a/src/plugins/coreplugin/locator/basefilefilter.cpp b/src/plugins/coreplugin/locator/basefilefilter.cpp
index 220f6ff782..e2b26b57ae 100644
--- a/src/plugins/coreplugin/locator/basefilefilter.cpp
+++ b/src/plugins/coreplugin/locator/basefilefilter.cpp
@@ -153,7 +153,7 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil
QFileInfo fi(path);
LocatorFilterEntry filterEntry(this, fi.fileName(), QString(path + fp.postfix));
filterEntry.fileName = path;
- filterEntry.extraInfo = FileUtils::shortNativePath(FileName(fi));
+ filterEntry.extraInfo = FilePath::fromFileInfo(fi).shortNativePath();
const int matchLevel = matchLevelFor(match, matchText);
if (hasPathSeparator) {
diff --git a/src/plugins/coreplugin/locator/directoryfilter.cpp b/src/plugins/coreplugin/locator/directoryfilter.cpp
index 645bae42d3..02e7e59fe9 100644
--- a/src/plugins/coreplugin/locator/directoryfilter.cpp
+++ b/src/plugins/coreplugin/locator/directoryfilter.cpp
@@ -24,6 +24,9 @@
****************************************************************************/
#include "directoryfilter.h"
+#include "ui_directoryfilter.h"
+
+#include "locator.h"
#include <coreplugin/coreconstants.h>
#include <utils/algorithm.h>
@@ -32,8 +35,7 @@
#include <QFileDialog>
#include <QTimer>
-using namespace Core;
-using namespace Core::Internal;
+namespace Core {
DirectoryFilter::DirectoryFilter(Id id)
: m_filters({"*.h", "*.cpp", "*.ui", "*.qrc"}),
@@ -64,12 +66,13 @@ void DirectoryFilter::restoreState(const QByteArray &state)
QMutexLocker locker(&m_lock);
QString name;
+ QStringList directories;
QString shortcut;
bool defaultFilter;
QDataStream in(state);
in >> name;
- in >> m_directories;
+ in >> directories;
in >> m_filters;
in >> shortcut;
in >> defaultFilter;
@@ -79,6 +82,8 @@ void DirectoryFilter::restoreState(const QByteArray &state)
else
m_exclusionFilters.clear();
+ if (m_isCustomFilter)
+ m_directories = directories;
setDisplayName(name);
setShortcutString(shortcut);
setIncludedByDefault(defaultFilter);
@@ -88,60 +93,83 @@ void DirectoryFilter::restoreState(const QByteArray &state)
bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
{
+ if (!m_ui) {
+ m_ui = new Internal::Ui::DirectoryFilterOptions;
+ }
bool success = false;
QDialog dialog(parent);
m_dialog = &dialog;
- m_ui.setupUi(&dialog);
+ m_ui->setupUi(&dialog);
dialog.setWindowTitle(ILocatorFilter::msgConfigureDialogTitle());
- m_ui.prefixLabel->setText(ILocatorFilter::msgPrefixLabel());
- m_ui.prefixLabel->setToolTip(ILocatorFilter::msgPrefixToolTip());
- m_ui.defaultFlag->setText(ILocatorFilter::msgIncludeByDefault());
- m_ui.defaultFlag->setToolTip(ILocatorFilter::msgIncludeByDefaultToolTip());
- connect(m_ui.addButton, &QPushButton::clicked,
- this, &DirectoryFilter::addDirectory, Qt::DirectConnection);
- connect(m_ui.editButton, &QPushButton::clicked,
- this, &DirectoryFilter::editDirectory, Qt::DirectConnection);
- connect(m_ui.removeButton, &QPushButton::clicked,
- this, &DirectoryFilter::removeDirectory, Qt::DirectConnection);
- connect(m_ui.directoryList, &QListWidget::itemSelectionChanged,
- this, &DirectoryFilter::updateOptionButtons, Qt::DirectConnection);
- m_ui.nameEdit->setText(displayName());
- m_ui.nameEdit->selectAll();
- m_ui.directoryList->clear();
- m_ui.directoryList->addItems(m_directories);
- m_ui.filePatternLabel->setText(Utils::msgFilePatternLabel());
- m_ui.filePatternLabel->setBuddy(m_ui.filePattern);
- m_ui.filePattern->setToolTip(Utils::msgFilePatternToolTip());
- m_ui.filePattern->setText(Utils::transform(m_filters, &QDir::toNativeSeparators).join(','));
- m_ui.exclusionPatternLabel->setText(Utils::msgExclusionPatternLabel());
- m_ui.exclusionPatternLabel->setBuddy(m_ui.exclusionPattern);
- m_ui.exclusionPattern->setToolTip(Utils::msgFilePatternToolTip());
- m_ui.exclusionPattern->setText(Utils::transform(m_exclusionFilters, &QDir::toNativeSeparators)
- .join(','));
- m_ui.shortcutEdit->setText(shortcutString());
- m_ui.defaultFlag->setChecked(isIncludedByDefault());
+ m_ui->prefixLabel->setText(ILocatorFilter::msgPrefixLabel());
+ m_ui->prefixLabel->setToolTip(ILocatorFilter::msgPrefixToolTip());
+ m_ui->defaultFlag->setText(ILocatorFilter::msgIncludeByDefault());
+ m_ui->defaultFlag->setToolTip(ILocatorFilter::msgIncludeByDefaultToolTip());
+ m_ui->nameEdit->setText(displayName());
+ m_ui->nameEdit->selectAll();
+ connect(m_ui->addButton,
+ &QPushButton::clicked,
+ this,
+ &DirectoryFilter::handleAddDirectory,
+ Qt::DirectConnection);
+ connect(m_ui->editButton,
+ &QPushButton::clicked,
+ this,
+ &DirectoryFilter::handleEditDirectory,
+ Qt::DirectConnection);
+ connect(m_ui->removeButton,
+ &QPushButton::clicked,
+ this,
+ &DirectoryFilter::handleRemoveDirectory,
+ Qt::DirectConnection);
+ connect(m_ui->directoryList,
+ &QListWidget::itemSelectionChanged,
+ this,
+ &DirectoryFilter::updateOptionButtons,
+ Qt::DirectConnection);
+ m_ui->directoryList->clear();
+ m_ui->directoryList->addItems(m_directories);
+ m_ui->nameLabel->setVisible(m_isCustomFilter);
+ m_ui->nameEdit->setVisible(m_isCustomFilter);
+ m_ui->directoryLabel->setVisible(m_isCustomFilter);
+ m_ui->directoryList->setVisible(m_isCustomFilter);
+ m_ui->addButton->setVisible(m_isCustomFilter);
+ m_ui->editButton->setVisible(m_isCustomFilter);
+ m_ui->removeButton->setVisible(m_isCustomFilter);
+ m_ui->filePatternLabel->setText(Utils::msgFilePatternLabel());
+ m_ui->filePatternLabel->setBuddy(m_ui->filePattern);
+ m_ui->filePattern->setToolTip(Utils::msgFilePatternToolTip());
+ m_ui->filePattern->setText(Utils::transform(m_filters, &QDir::toNativeSeparators).join(','));
+ m_ui->exclusionPatternLabel->setText(Utils::msgExclusionPatternLabel());
+ m_ui->exclusionPatternLabel->setBuddy(m_ui->exclusionPattern);
+ m_ui->exclusionPattern->setToolTip(Utils::msgFilePatternToolTip());
+ m_ui->exclusionPattern->setText(
+ Utils::transform(m_exclusionFilters, &QDir::toNativeSeparators).join(','));
+ m_ui->shortcutEdit->setText(shortcutString());
+ m_ui->defaultFlag->setChecked(isIncludedByDefault());
updateOptionButtons();
+ dialog.adjustSize();
if (dialog.exec() == QDialog::Accepted) {
QMutexLocker locker(&m_lock);
bool directoriesChanged = false;
const QStringList oldDirectories = m_directories;
const QStringList oldFilters = m_filters;
const QStringList oldExclusionFilters = m_exclusionFilters;
- setDisplayName(m_ui.nameEdit->text().trimmed());
+ setDisplayName(m_ui->nameEdit->text().trimmed());
m_directories.clear();
const int oldCount = oldDirectories.count();
- const int newCount = m_ui.directoryList->count();
+ const int newCount = m_ui->directoryList->count();
if (oldCount != newCount)
directoriesChanged = true;
for (int i = 0; i < newCount; ++i) {
- m_directories.append(m_ui.directoryList->item(i)->text());
+ m_directories.append(m_ui->directoryList->item(i)->text());
if (!directoriesChanged && m_directories.at(i) != oldDirectories.at(i))
directoriesChanged = true;
}
- m_filters = Utils::splitFilterUiText(m_ui.filePattern->text());
- m_exclusionFilters = Utils::splitFilterUiText(m_ui.exclusionPattern->text());
- setShortcutString(m_ui.shortcutEdit->text().trimmed());
- setIncludedByDefault(m_ui.defaultFlag->isChecked());
+ m_filters = Utils::splitFilterUiText(m_ui->filePattern->text());
+ m_exclusionFilters = Utils::splitFilterUiText(m_ui->exclusionPattern->text());
+ setShortcutString(m_ui->shortcutEdit->text().trimmed());
+ setIncludedByDefault(m_ui->defaultFlag->isChecked());
needsRefresh = directoriesChanged || oldFilters != m_filters
|| oldExclusionFilters != m_exclusionFilters;
success = true;
@@ -149,37 +177,37 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
return success;
}
-void DirectoryFilter::addDirectory()
+void DirectoryFilter::handleAddDirectory()
{
QString dir = QFileDialog::getExistingDirectory(m_dialog, tr("Select Directory"));
if (!dir.isEmpty())
- m_ui.directoryList->addItem(dir);
+ m_ui->directoryList->addItem(dir);
}
-void DirectoryFilter::editDirectory()
+void DirectoryFilter::handleEditDirectory()
{
- if (m_ui.directoryList->selectedItems().count() < 1)
+ if (m_ui->directoryList->selectedItems().count() < 1)
return;
- QListWidgetItem *currentItem = m_ui.directoryList->selectedItems().at(0);
+ QListWidgetItem *currentItem = m_ui->directoryList->selectedItems().at(0);
QString dir = QFileDialog::getExistingDirectory(m_dialog, tr("Select Directory"),
currentItem->text());
if (!dir.isEmpty())
currentItem->setText(dir);
}
-void DirectoryFilter::removeDirectory()
+void DirectoryFilter::handleRemoveDirectory()
{
- if (m_ui.directoryList->selectedItems().count() < 1)
+ if (m_ui->directoryList->selectedItems().count() < 1)
return;
- QListWidgetItem *currentItem = m_ui.directoryList->selectedItems().at(0);
- delete m_ui.directoryList->takeItem(m_ui.directoryList->row(currentItem));
+ QListWidgetItem *currentItem = m_ui->directoryList->selectedItems().at(0);
+ delete m_ui->directoryList->takeItem(m_ui->directoryList->row(currentItem));
}
void DirectoryFilter::updateOptionButtons()
{
- bool haveSelectedItem = (m_ui.directoryList->selectedItems().count() > 0);
- m_ui.editButton->setEnabled(haveSelectedItem);
- m_ui.removeButton->setEnabled(haveSelectedItem);
+ bool haveSelectedItem = (m_ui->directoryList->selectedItems().count() > 0);
+ m_ui->editButton->setEnabled(haveSelectedItem);
+ m_ui->removeButton->setEnabled(haveSelectedItem);
}
void DirectoryFilter::updateFileIterator()
@@ -225,3 +253,45 @@ void DirectoryFilter::refresh(QFutureInterface<void> &future)
future.setProgressValueAndText(subDirIterator.currentProgress(), tr("%1 filter update: canceled").arg(displayName()));
}
}
+
+void DirectoryFilter::setIsCustomFilter(bool value)
+{
+ m_isCustomFilter = value;
+}
+
+void DirectoryFilter::setDirectories(const QStringList &directories)
+{
+ if (directories == m_directories)
+ return;
+ m_directories = directories;
+ Internal::Locator::instance()->refresh({this});
+}
+
+void DirectoryFilter::addDirectory(const QString &directory)
+{
+ setDirectories(m_directories + QStringList(directory));
+}
+
+void DirectoryFilter::removeDirectory(const QString &directory)
+{
+ QStringList directories = m_directories;
+ directories.removeOne(directory);
+ setDirectories(directories);
+}
+
+QStringList DirectoryFilter::directories() const
+{
+ return m_directories;
+}
+
+void DirectoryFilter::setFilters(const QStringList &filters)
+{
+ m_filters = filters;
+}
+
+void DirectoryFilter::setExclusionFilters(const QStringList &exclusionFilters)
+{
+ m_exclusionFilters = exclusionFilters;
+}
+
+} // namespace Core
diff --git a/src/plugins/coreplugin/locator/directoryfilter.h b/src/plugins/coreplugin/locator/directoryfilter.h
index 06ef1f37e3..803141afdb 100644
--- a/src/plugins/coreplugin/locator/directoryfilter.h
+++ b/src/plugins/coreplugin/locator/directoryfilter.h
@@ -25,9 +25,10 @@
#pragma once
-#include "ui_directoryfilter.h"
#include "basefilefilter.h"
+#include <coreplugin/core_global.h>
+
#include <QString>
#include <QByteArray>
#include <QFutureInterface>
@@ -35,8 +36,12 @@
namespace Core {
namespace Internal {
+namespace Ui {
+class DirectoryFilterOptions;
+} // namespace Ui
+} // namespace Internal
-class DirectoryFilter : public BaseFileFilter
+class CORE_EXPORT DirectoryFilter : public BaseFileFilter
{
Q_OBJECT
@@ -47,10 +52,20 @@ public:
bool openConfigDialog(QWidget *parent, bool &needsRefresh) override;
void refresh(QFutureInterface<void> &future) override;
+ void setIsCustomFilter(bool value);
+ void setDirectories(const QStringList &directories);
+ void addDirectory(const QString &directory);
+ void removeDirectory(const QString &directory);
+ QStringList directories() const;
+ void setFilters(const QStringList &filters);
+ void setExclusionFilters(const QStringList &exclusionFilters);
+
+ using ILocatorFilter::setDisplayName;
+
private:
- void addDirectory();
- void editDirectory();
- void removeDirectory();
+ void handleAddDirectory();
+ void handleEditDirectory();
+ void handleRemoveDirectory();
void updateOptionButtons();
void updateFileIterator();
@@ -60,10 +75,10 @@ private:
// Our config dialog, uses in addDirectory and editDirectory
// to give their dialogs the right parent
QDialog *m_dialog = nullptr;
- Ui::DirectoryFilterOptions m_ui;
+ Internal::Ui::DirectoryFilterOptions *m_ui = nullptr;
mutable QMutex m_lock;
QStringList m_files;
+ bool m_isCustomFilter = true;
};
-} // namespace Internal
} // namespace Core
diff --git a/src/plugins/coreplugin/locator/directoryfilter.ui b/src/plugins/coreplugin/locator/directoryfilter.ui
index 37d26e4ed7..5889a82750 100644
--- a/src/plugins/coreplugin/locator/directoryfilter.ui
+++ b/src/plugins/coreplugin/locator/directoryfilter.ui
@@ -10,11 +10,11 @@
<height>300</height>
</rect>
</property>
- <layout class="QGridLayout">
- <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
<layout class="QGridLayout">
<item row="0" column="0">
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="nameLabel">
<property name="text">
<string>Name:</string>
</property>
@@ -81,7 +81,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
</widget>
</item>
<item row="1" column="3">
- <layout class="QVBoxLayout" name="verticalLayout">
+ <layout class="QVBoxLayout" name="directoryButtonLayout">
<item>
<widget class="QPushButton" name="addButton">
<property name="text">
@@ -110,8 +110,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
</property>
<property name="sizeHint" stdset="0">
<size>
- <width>20</width>
- <height>40</height>
+ <width>0</width>
+ <height>0</height>
</size>
</property>
</spacer>
@@ -119,23 +119,23 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
</layout>
</item>
<item row="1" column="0">
- <layout class="QVBoxLayout" name="verticalLayout_2">
+ <layout class="QVBoxLayout" name="directoryLabelLayout">
<item>
- <widget class="QLabel" name="label_2">
+ <widget class="QLabel" name="directoryLabel">
<property name="text">
<string>Directories:</string>
</property>
</widget>
</item>
<item>
- <spacer name="verticalSpacer">
+ <spacer name="directoryLabelSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
- <width>20</width>
- <height>40</height>
+ <width>0</width>
+ <height>0</height>
</size>
</property>
</spacer>
@@ -154,7 +154,20 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
</item>
</layout>
</item>
- <item row="1" column="0">
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
diff --git a/src/plugins/coreplugin/locator/executefilter.cpp b/src/plugins/coreplugin/locator/executefilter.cpp
index b85bf4ff28..bc4a4b65a7 100644
--- a/src/plugins/coreplugin/locator/executefilter.cpp
+++ b/src/plugins/coreplugin/locator/executefilter.cpp
@@ -44,7 +44,7 @@ ExecuteFilter::ExecuteFilter()
m_process = new Utils::QtcProcess(this);
m_process->setEnvironment(Utils::Environment::systemEnvironment());
- connect(m_process, static_cast<void (QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished),
+ connect(m_process, QOverload<int ,QProcess::ExitStatus>::of(&QProcess::finished),
this, &ExecuteFilter::finished);
connect(m_process, &QProcess::readyReadStandardOutput, this, &ExecuteFilter::readStandardOutput);
connect(m_process, &QProcess::readyReadStandardError, this, &ExecuteFilter::readStandardError);
@@ -160,7 +160,7 @@ void ExecuteFilter::runHeadCommand()
{
if (!m_taskQueue.isEmpty()) {
const ExecuteData &d = m_taskQueue.head();
- const Utils::FileName fullPath = Utils::Environment::systemEnvironment().searchInPath(d.executable);
+ const Utils::FilePath fullPath = Utils::Environment::systemEnvironment().searchInPath(d.executable);
if (fullPath.isEmpty()) {
MessageManager::write(tr("Could not find executable for \"%1\".").arg(d.executable));
m_taskQueue.dequeue();
@@ -169,7 +169,7 @@ void ExecuteFilter::runHeadCommand()
}
MessageManager::write(tr("Starting command \"%1\".").arg(headCommand()));
m_process->setWorkingDirectory(d.workingDirectory);
- m_process->setCommand(fullPath.toString(), d.arguments);
+ m_process->setCommand(Utils::CommandLine(fullPath, d.arguments));
m_process->start();
m_process->closeWriteChannel();
if (!m_process->waitForStarted(1000)) {
diff --git a/src/plugins/coreplugin/locator/filesystemfilter.cpp b/src/plugins/coreplugin/locator/filesystemfilter.cpp
index 3c55e00240..0719e9b781 100644
--- a/src/plugins/coreplugin/locator/filesystemfilter.cpp
+++ b/src/plugins/coreplugin/locator/filesystemfilter.cpp
@@ -142,8 +142,7 @@ QList<LocatorFilterEntry> FileSystemFilter::matchesFor(QFutureInterface<LocatorF
const QString fullFilePath = dirInfo.filePath(fileName);
if (!QFileInfo::exists(fullFilePath) && dirInfo.exists()) {
LocatorFilterEntry createAndOpen(this, tr("Create and Open \"%1\"").arg(entry), fullFilePath);
- createAndOpen.extraInfo = Utils::FileUtils::shortNativePath(
- Utils::FileName::fromString(dirInfo.absolutePath()));
+ createAndOpen.extraInfo = Utils::FilePath::fromString(dirInfo.absolutePath()).shortNativePath();
betterEntries.append(createAndOpen);
}
diff --git a/src/plugins/coreplugin/locator/locator.cpp b/src/plugins/coreplugin/locator/locator.cpp
index 17f8fbbd86..48749cce3e 100644
--- a/src/plugins/coreplugin/locator/locator.cpp
+++ b/src/plugins/coreplugin/locator/locator.cpp
@@ -56,7 +56,6 @@
#include <utils/utilsicons.h>
#include <QAction>
-#include <QFuture>
#include <QSettings>
#include <QtPlugin>
@@ -92,7 +91,7 @@ Locator::Locator()
{
m_instance = this;
m_refreshTimer.setSingleShot(false);
- connect(&m_refreshTimer, &QTimer::timeout, this, [this]() { refresh(); });
+ connect(&m_refreshTimer, &QTimer::timeout, this, [this]() { refresh(filters()); });
}
Locator::~Locator()
@@ -339,12 +338,22 @@ void Locator::setRefreshInterval(int interval)
void Locator::refresh(QList<ILocatorFilter *> filters)
{
- if (filters.isEmpty())
- filters = m_filters;
- QFuture<void> task = Utils::map(filters, &ILocatorFilter::refresh, Utils::MapReduceOption::Unordered);
- FutureProgress *progress =
- ProgressManager::addTask(task, tr("Updating Locator Caches"), Constants::TASK_INDEX);
- connect(progress, &FutureProgress::finished, this, &Locator::saveSettings);
+ if (m_refreshTask.isRunning()) {
+ m_refreshTask.cancel();
+ // this is not ideal because some of the previous filters might have finished, but we
+ // currently cannot find out which part of a map-reduce has finished
+ filters = Utils::filteredUnique(m_refreshingFilters + filters);
+ }
+ m_refreshingFilters = filters;
+ m_refreshTask = Utils::map(filters, &ILocatorFilter::refresh, Utils::MapReduceOption::Unordered);
+ ProgressManager::addTask(m_refreshTask, tr("Updating Locator Caches"), Constants::TASK_INDEX);
+ Utils::onFinished(m_refreshTask, this, [this](const QFuture<void> &future) {
+ if (!future.isCanceled()) {
+ saveSettings();
+ m_refreshingFilters.clear();
+ m_refreshTask = QFuture<void>();
+ }
+ });
}
} // namespace Internal
diff --git a/src/plugins/coreplugin/locator/locator.h b/src/plugins/coreplugin/locator/locator.h
index 10b2dc256a..d7c62c44ba 100644
--- a/src/plugins/coreplugin/locator/locator.h
+++ b/src/plugins/coreplugin/locator/locator.h
@@ -30,6 +30,7 @@
#include <coreplugin/actionmanager/command.h>
+#include <QFuture>
#include <QObject>
#include <QTimer>
@@ -64,7 +65,7 @@ signals:
void filtersChanged();
public slots:
- void refresh(QList<ILocatorFilter *> filters = QList<ILocatorFilter *>());
+ void refresh(QList<ILocatorFilter *> filters);
void saveSettings() const;
private:
@@ -80,6 +81,8 @@ private:
QList<ILocatorFilter *> m_customFilters;
QMap<Id, QAction *> m_filterActionMap;
QTimer m_refreshTimer;
+ QFuture<void> m_refreshTask;
+ QList<ILocatorFilter *> m_refreshingFilters;
};
} // namespace Internal
diff --git a/src/plugins/coreplugin/locator/locator_test.cpp b/src/plugins/coreplugin/locator/locator_test.cpp
index cf99717e5b..c76a5633ea 100644
--- a/src/plugins/coreplugin/locator/locator_test.cpp
+++ b/src/plugins/coreplugin/locator/locator_test.cpp
@@ -89,7 +89,7 @@ void Core::Internal::CorePlugin::test_basefilefilter()
void Core::Internal::CorePlugin::test_basefilefilter_data()
{
auto shortNativePath = [](const QString &file) {
- return Utils::FileUtils::shortNativePath(Utils::FileName::fromString(file));
+ return Utils::FilePath::fromString(file).shortNativePath();
};
QTest::addColumn<QStringList>("testFiles");
diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp
index 994c9e5d0e..b21afd2adc 100644
--- a/src/plugins/coreplugin/locator/locatorwidget.cpp
+++ b/src/plugins/coreplugin/locator/locatorwidget.cpp
@@ -210,7 +210,7 @@ QVariant LocatorModel::data(const QModelIndex &index, int role) const
return QColor(Qt::darkGray);
break;
case LocatorEntryRole:
- return qVariantFromValue(mEntries.at(index.row()));
+ return QVariant::fromValue(mEntries.at(index.row()));
case int(HighlightingItemRole::StartColumn):
case int(HighlightingItemRole::Length): {
LocatorFilterEntry &entry = mEntries[index.row()];
@@ -579,8 +579,9 @@ LocatorWidget::LocatorWidget(Locator *locator) :
m_fileLineEdit->setButtonMenu(Utils::FancyLineEdit::Left, m_filterMenu);
- connect(m_refreshAction, &QAction::triggered,
- locator, [locator]() { locator->refresh(); });
+ connect(m_refreshAction, &QAction::triggered, locator, [locator]() {
+ locator->refresh(locator->filters());
+ });
connect(m_configureAction, &QAction::triggered, this, &LocatorWidget::showConfigureDialog);
connect(m_fileLineEdit, &QLineEdit::textChanged,
this, &LocatorWidget::showPopupDelayed);
diff --git a/src/plugins/coreplugin/locator/opendocumentsfilter.cpp b/src/plugins/coreplugin/locator/opendocumentsfilter.cpp
index 575e992557..fe67e5d884 100644
--- a/src/plugins/coreplugin/locator/opendocumentsfilter.cpp
+++ b/src/plugins/coreplugin/locator/opendocumentsfilter.cpp
@@ -76,7 +76,7 @@ QList<LocatorFilterEntry> OpenDocumentsFilter::matchesFor(QFutureInterface<Locat
const QRegularExpressionMatch match = regexp.match(displayName);
if (match.hasMatch()) {
LocatorFilterEntry filterEntry(this, displayName, QString(fileName + fp.postfix));
- filterEntry.extraInfo = FileUtils::shortNativePath(FileName::fromString(fileName));
+ filterEntry.extraInfo = FilePath::fromString(fileName).shortNativePath();
filterEntry.fileName = fileName;
filterEntry.highlightInfo = highlightInfo(match);
if (match.capturedStart() == 0)
diff --git a/src/plugins/coreplugin/locator/opendocumentsfilter.h b/src/plugins/coreplugin/locator/opendocumentsfilter.h
index 8d140c86d7..956dea22d2 100644
--- a/src/plugins/coreplugin/locator/opendocumentsfilter.h
+++ b/src/plugins/coreplugin/locator/opendocumentsfilter.h
@@ -56,7 +56,7 @@ private:
class Entry
{
public:
- Utils::FileName fileName;
+ Utils::FilePath fileName;
QString displayName;
};