forked from qt-creator/qt-creator
Locator: Do not use object pool for some filters and LocatorManager
Also bundle lifetime management into one object. Also minor interfact cleanup. Change-Id: I60eec84b0b28a20ce353fcdbfdff1c4848686ba0 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -160,7 +160,7 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
|||||||
SaveFile::initializeUmask();
|
SaveFile::initializeUmask();
|
||||||
|
|
||||||
Find::initialize();
|
Find::initialize();
|
||||||
m_locator->initialize(this, arguments, errorMessage);
|
m_locator->initialize();
|
||||||
|
|
||||||
MacroExpander *expander = Utils::globalMacroExpander();
|
MacroExpander *expander = Utils::globalMacroExpander();
|
||||||
expander->registerVariable("CurrentDate:ISO", tr("The current date (ISO)."),
|
expander->registerVariable("CurrentDate:ISO", tr("The current date (ISO)."),
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
#include "locator.h"
|
#include "locator.h"
|
||||||
|
|
||||||
|
#include "directoryfilter.h"
|
||||||
|
#include "executefilter.h"
|
||||||
#include "externaltoolsfilter.h"
|
#include "externaltoolsfilter.h"
|
||||||
#include "filesystemfilter.h"
|
#include "filesystemfilter.h"
|
||||||
#include "javascriptfilter.h"
|
#include "javascriptfilter.h"
|
||||||
@@ -58,7 +60,7 @@
|
|||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QtPlugin>
|
#include <QtPlugin>
|
||||||
|
|
||||||
#ifdef Q_OS_OSX
|
#ifdef Q_OS_MACOS
|
||||||
#include "spotlightlocatorfilter.h"
|
#include "spotlightlocatorfilter.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -67,6 +69,22 @@ namespace Internal {
|
|||||||
|
|
||||||
static Locator *m_instance = nullptr;
|
static Locator *m_instance = nullptr;
|
||||||
|
|
||||||
|
class LocatorData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LocatorManager m_locatorManager;
|
||||||
|
|
||||||
|
JavaScriptFilter m_javaScriptFilter;
|
||||||
|
OpenDocumentsFilter m_openDocumentsFilter;
|
||||||
|
FileSystemFilter m_fileSystemFilter;
|
||||||
|
ExecuteFilter m_executeFilter;
|
||||||
|
ExternalToolsFilter m_externalToolsFilter;
|
||||||
|
LocatorFiltersFilter m_locatorsFiltersFilter;
|
||||||
|
#ifdef Q_OS_MACOS
|
||||||
|
SpotlightLocatorFilter m_spotlightLocatorFilter;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
Locator::Locator()
|
Locator::Locator()
|
||||||
{
|
{
|
||||||
m_instance = this;
|
m_instance = this;
|
||||||
@@ -76,18 +94,8 @@ Locator::Locator()
|
|||||||
|
|
||||||
Locator::~Locator()
|
Locator::~Locator()
|
||||||
{
|
{
|
||||||
m_corePlugin->removeObject(m_javaScriptFilter);
|
|
||||||
m_corePlugin->removeObject(m_openDocumentsFilter);
|
|
||||||
m_corePlugin->removeObject(m_fileSystemFilter);
|
|
||||||
m_corePlugin->removeObject(m_executeFilter);
|
|
||||||
m_corePlugin->removeObject(m_settingsPage);
|
|
||||||
m_corePlugin->removeObject(m_externalToolsFilter);
|
|
||||||
delete m_javaScriptFilter;
|
|
||||||
delete m_openDocumentsFilter;
|
|
||||||
delete m_fileSystemFilter;
|
|
||||||
delete m_executeFilter;
|
|
||||||
delete m_settingsPage;
|
delete m_settingsPage;
|
||||||
delete m_externalToolsFilter;
|
delete m_locatorData;
|
||||||
qDeleteAll(m_customFilters);
|
qDeleteAll(m_customFilters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,12 +104,10 @@ Locator *Locator::instance()
|
|||||||
return m_instance;
|
return m_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Locator::initialize(CorePlugin *corePlugin, const QStringList &, QString *)
|
void Locator::initialize()
|
||||||
{
|
{
|
||||||
m_corePlugin = corePlugin;
|
m_locatorData = new LocatorData;
|
||||||
|
|
||||||
m_settingsPage = new LocatorSettingsPage(this);
|
m_settingsPage = new LocatorSettingsPage(this);
|
||||||
m_corePlugin->addObject(m_settingsPage);
|
|
||||||
|
|
||||||
QAction *action = new QAction(Utils::Icons::ZOOM.icon(), tr("Locate..."), this);
|
QAction *action = new QAction(Utils::Icons::ZOOM.icon(), tr("Locate..."), this);
|
||||||
Command *cmd = ActionManager::registerAction(action, Constants::LOCATE);
|
Command *cmd = ActionManager::registerAction(action, Constants::LOCATE);
|
||||||
@@ -117,28 +123,6 @@ void Locator::initialize(CorePlugin *corePlugin, const QStringList &, QString *)
|
|||||||
StatusBarManager::addStatusBarWidget(locatorWidget, StatusBarManager::First,
|
StatusBarManager::addStatusBarWidget(locatorWidget, StatusBarManager::First,
|
||||||
Context("LocatorWidget"));
|
Context("LocatorWidget"));
|
||||||
|
|
||||||
new LocatorManager(this);
|
|
||||||
|
|
||||||
m_javaScriptFilter = new JavaScriptFilter;
|
|
||||||
m_corePlugin->addObject(m_javaScriptFilter);
|
|
||||||
|
|
||||||
m_openDocumentsFilter = new OpenDocumentsFilter;
|
|
||||||
m_corePlugin->addObject(m_openDocumentsFilter);
|
|
||||||
|
|
||||||
m_fileSystemFilter = new FileSystemFilter();
|
|
||||||
m_corePlugin->addObject(m_fileSystemFilter);
|
|
||||||
|
|
||||||
m_executeFilter = new ExecuteFilter();
|
|
||||||
m_corePlugin->addObject(m_executeFilter);
|
|
||||||
|
|
||||||
m_externalToolsFilter = new ExternalToolsFilter;
|
|
||||||
m_corePlugin->addObject(m_externalToolsFilter);
|
|
||||||
|
|
||||||
m_corePlugin->addAutoReleasedObject(new LocatorFiltersFilter);
|
|
||||||
#ifdef Q_OS_OSX
|
|
||||||
m_corePlugin->addAutoReleasedObject(new SpotlightLocatorFilter);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
connect(ICore::instance(), &ICore::saveSettingsRequested, this, &Locator::saveSettings);
|
connect(ICore::instance(), &ICore::saveSettingsRequested, this, &Locator::saveSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,7 +241,7 @@ void Locator::updateEditorManagerPlaceholderText()
|
|||||||
"</body></html>")
|
"</body></html>")
|
||||||
.arg(openCommand->keySequence().toString(QKeySequence::NativeText))
|
.arg(openCommand->keySequence().toString(QKeySequence::NativeText))
|
||||||
.arg(locateCommand->keySequence().toString(QKeySequence::NativeText))
|
.arg(locateCommand->keySequence().toString(QKeySequence::NativeText))
|
||||||
.arg(m_fileSystemFilter->shortcutString());
|
.arg(m_locatorData->m_fileSystemFilter.shortcutString());
|
||||||
|
|
||||||
QString classes;
|
QString classes;
|
||||||
// not nice, but anyhow
|
// not nice, but anyhow
|
||||||
|
|||||||
@@ -26,25 +26,18 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "ilocatorfilter.h"
|
#include "ilocatorfilter.h"
|
||||||
#include "directoryfilter.h"
|
|
||||||
#include "executefilter.h"
|
|
||||||
#include "locatorconstants.h"
|
#include "locatorconstants.h"
|
||||||
|
|
||||||
#include <coreplugin/actionmanager/command.h>
|
#include <coreplugin/actionmanager/command.h>
|
||||||
|
|
||||||
#include <QFutureWatcher>
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class CorePlugin;
|
class LocatorData;
|
||||||
class OpenDocumentsFilter;
|
|
||||||
class FileSystemFilter;
|
|
||||||
class JavaScriptFilter;
|
|
||||||
class LocatorSettingsPage;
|
class LocatorSettingsPage;
|
||||||
class ExternalToolsFilter;
|
|
||||||
|
|
||||||
class Locator : public QObject
|
class Locator : public QObject
|
||||||
{
|
{
|
||||||
@@ -56,7 +49,7 @@ public:
|
|||||||
|
|
||||||
static Locator *instance();
|
static Locator *instance();
|
||||||
|
|
||||||
void initialize(CorePlugin *corePlugin, const QStringList &arguments, QString *errorMessage);
|
void initialize();
|
||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
bool delayedInitialize();
|
bool delayedInitialize();
|
||||||
|
|
||||||
@@ -80,18 +73,13 @@ private:
|
|||||||
void updateEditorManagerPlaceholderText();
|
void updateEditorManagerPlaceholderText();
|
||||||
|
|
||||||
LocatorSettingsPage *m_settingsPage = nullptr;
|
LocatorSettingsPage *m_settingsPage = nullptr;
|
||||||
|
LocatorData *m_locatorData = nullptr;
|
||||||
|
|
||||||
bool m_settingsInitialized = false;
|
bool m_settingsInitialized = false;
|
||||||
QList<ILocatorFilter *> m_filters;
|
QList<ILocatorFilter *> m_filters;
|
||||||
QList<ILocatorFilter *> m_customFilters;
|
QList<ILocatorFilter *> m_customFilters;
|
||||||
QMap<Id, QAction *> m_filterActionMap;
|
QMap<Id, QAction *> m_filterActionMap;
|
||||||
QTimer m_refreshTimer;
|
QTimer m_refreshTimer;
|
||||||
JavaScriptFilter *m_javaScriptFilter = nullptr;
|
|
||||||
OpenDocumentsFilter *m_openDocumentsFilter = nullptr;
|
|
||||||
FileSystemFilter *m_fileSystemFilter = nullptr;
|
|
||||||
ExecuteFilter *m_executeFilter = nullptr;
|
|
||||||
CorePlugin *m_corePlugin = nullptr;
|
|
||||||
ExternalToolsFilter *m_externalToolsFilter = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -38,8 +38,7 @@ using namespace Core::Internal;
|
|||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
LocatorManager::LocatorManager(QObject *parent)
|
LocatorManager::LocatorManager()
|
||||||
: QObject(parent)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,14 +33,12 @@ namespace Core {
|
|||||||
|
|
||||||
class ILocatorFilter;
|
class ILocatorFilter;
|
||||||
|
|
||||||
namespace Internal { class LocatorWidget; }
|
|
||||||
|
|
||||||
class CORE_EXPORT LocatorManager : public QObject
|
class CORE_EXPORT LocatorManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LocatorManager(QObject *parent = nullptr);
|
LocatorManager();
|
||||||
|
|
||||||
static void showFilter(ILocatorFilter *filter);
|
static void showFilter(ILocatorFilter *filter);
|
||||||
static void show(const QString &text, int selectionStart = -1, int selectionLength = 0);
|
static void show(const QString &text, int selectionStart = -1, int selectionLength = 0);
|
||||||
|
|||||||
@@ -29,10 +29,12 @@
|
|||||||
|
|
||||||
#include <utils/optional.h>
|
#include <utils/optional.h>
|
||||||
|
|
||||||
|
#include <QFutureWatcher>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QAbstractItemModel;
|
||||||
class QAction;
|
class QAction;
|
||||||
class QMenu;
|
class QMenu;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|||||||
Reference in New Issue
Block a user