CppEditor: Reduce visible CppTypeHierarchy interface

... and remove related helpers from the plugin class itself.

Change-Id: Ibc6af7518a2c90da93e619dde05edbd1eb7948f0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2024-01-22 11:07:15 +01:00
parent 8b86fe239b
commit ee4d258776
5 changed files with 63 additions and 45 deletions

View File

@@ -166,7 +166,6 @@ public:
QAction *m_reparseExternallyChangedFiles = nullptr;
QAction *m_findRefsCategorizedAction = nullptr;
QAction *m_openTypeHierarchyAction = nullptr;
QAction *m_openIncludeHierarchyAction = nullptr;
CppQuickFixSettingsPage m_quickFixSettingsPage;
@@ -174,7 +173,6 @@ public:
QPointer<CppCodeModelInspectorDialog> m_cppCodeModelInspectorDialog;
CppOutlineWidgetFactory m_cppOutlineWidgetFactory;
CppTypeHierarchyFactory m_cppTypeHierarchyFactory;
CppIncludeHierarchyFactory m_cppIncludeHierarchyFactory;
CppEditorFactory m_cppEditorFactory;
@@ -353,13 +351,7 @@ void CppEditorPlugin::addPerSymbolActions()
addSymbolActionToMenus(TextEditor::Constants::RENAME_SYMBOL);
ActionBuilder openTypeHierarchy(this, Constants::OPEN_TYPE_HIERARCHY);
openTypeHierarchy.setText(Tr::tr("Open Type Hierarchy"));
openTypeHierarchy.setContext(context);
openTypeHierarchy.bindContextAction(&d->m_openTypeHierarchyAction);
openTypeHierarchy.setDefaultKeySequence(Tr::tr("Meta+Shift+T"), Tr::tr("Ctrl+Shift+T"));
openTypeHierarchy.addToContainers(menus, Constants::G_SYMBOL);
openTypeHierarchy.addOnTriggered(this, &CppEditorPlugin::openTypeHierarchy);
setupCppTypeHierarchy();
addSymbolActionToMenus(TextEditor::Constants::OPEN_CALL_HIERARCHY);
@@ -551,7 +543,6 @@ void CppEditorPluginPrivate::onTaskStarted(Id type)
ActionManager::command(TextEditor::Constants::FIND_USAGES)->action()->setEnabled(false);
ActionManager::command(TextEditor::Constants::RENAME_SYMBOL)->action()->setEnabled(false);
m_reparseExternallyChangedFiles->setEnabled(false);
m_openTypeHierarchyAction->setEnabled(false);
m_openIncludeHierarchyAction->setEnabled(false);
}
}
@@ -562,7 +553,6 @@ void CppEditorPluginPrivate::onAllTasksFinished(Id type)
ActionManager::command(TextEditor::Constants::FIND_USAGES)->action()->setEnabled(true);
ActionManager::command(TextEditor::Constants::RENAME_SYMBOL)->action()->setEnabled(true);
m_reparseExternallyChangedFiles->setEnabled(true);
m_openTypeHierarchyAction->setEnabled(true);
m_openIncludeHierarchyAction->setEnabled(true);
}
}
@@ -578,14 +568,6 @@ void CppEditorPluginPrivate::inspectCppCodeModel()
}
}
void CppEditorPlugin::openTypeHierarchy()
{
if (currentCppEditorWidget()) {
emit typeHierarchyRequested();
NavigationWidget::activateSubWidget(Constants::TYPE_HIERARCHY_ID, Side::Left);
}
}
void CppEditorPlugin::openIncludeHierarchy()
{
if (currentCppEditorWidget()) {

View File

@@ -26,14 +26,12 @@ public:
static void clearHeaderSourceCache();
void openDeclarationDefinitionInNextSplit();
void openTypeHierarchy();
void openIncludeHierarchy();
void showPreProcessorDialog();
void renameSymbolUnderCursor();
void switchDeclarationDefinition();
signals:
void typeHierarchyRequested();
void includeHierarchyRequested();
private:

View File

@@ -6,11 +6,13 @@
#include "cppeditorconstants.h"
#include "cppeditortr.h"
#include "cppeditorwidget.h"
#include "cppeditorplugin.h"
#include "cppelementevaluator.h"
#include <coreplugin/find/itemviewfind.h>
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/find/itemviewfind.h>
#include <coreplugin/inavigationwidgetfactory.h>
#include <coreplugin/navigationwidget.h>
#include <coreplugin/progressmanager/progressmanager.h>
#include <texteditor/texteditor.h>
@@ -25,15 +27,14 @@
#include <QFuture>
#include <QFutureWatcher>
#include <QLabel>
#include <QLatin1String>
#include <QMenu>
#include <QModelIndex>
#include <QSharedPointer>
#include <QStackedLayout>
#include <QStackedWidget>
#include <QStandardItemModel>
#include <QVBoxLayout>
using namespace Core;
using namespace Utils;
namespace CppEditor::Internal {
@@ -195,8 +196,6 @@ CppTypeHierarchyWidget::CppTypeHierarchyWidget()
showNoTypeHierarchyLabel();
setLayout(m_stackLayout);
connect(CppEditorPlugin::instance(), &CppEditorPlugin::typeHierarchyRequested,
this, &CppTypeHierarchyWidget::perform);
connect(&m_futureWatcher, &QFutureWatcher<void>::finished,
this, &CppTypeHierarchyWidget::displayHierarchy);
}
@@ -399,18 +398,63 @@ QMimeData *CppTypeHierarchyModel::mimeData(const QModelIndexList &indexes) const
// CppTypeHierarchyFactory
CppTypeHierarchyFactory::CppTypeHierarchyFactory()
class CppTypeHierarchyFactory final : public INavigationWidgetFactory
{
setDisplayName(Tr::tr("Type Hierarchy"));
setPriority(700);
setId(Constants::TYPE_HIERARCHY_ID);
public:
CppTypeHierarchyFactory()
{
setDisplayName(Tr::tr("Type Hierarchy"));
setPriority(700);
setId(Constants::TYPE_HIERARCHY_ID);
ActionBuilder openTypeHierarchy(this, Constants::OPEN_TYPE_HIERARCHY);
openTypeHierarchy.setText(Tr::tr("Open Type Hierarchy"));
openTypeHierarchy.setContext(Context(Constants::CPPEDITOR_ID));
openTypeHierarchy.bindContextAction(&m_openTypeHierarchyAction);
openTypeHierarchy.setDefaultKeySequence(Tr::tr("Meta+Shift+T"), Tr::tr("Ctrl+Shift+T"));
openTypeHierarchy.addToContainers({Constants::M_TOOLS_CPP, Constants::M_CONTEXT},
Constants::G_SYMBOL);
connect(m_openTypeHierarchyAction, &QAction::triggered, this, [] {
NavigationWidget::activateSubWidget(Constants::TYPE_HIERARCHY_ID, Side::Left);
});
connect(ProgressManager::instance(), &ProgressManager::taskStarted, [this](Id type) {
if (type == Constants::TASK_INDEX)
m_openTypeHierarchyAction->setEnabled(false);
});
connect(ProgressManager::instance(), &ProgressManager::allTasksFinished, [this](Id type) {
if (type == Constants::TASK_INDEX)
m_openTypeHierarchyAction->setEnabled(true);
});
}
NavigationView createWidget() final
{
auto w = new CppTypeHierarchyWidget;
connect(m_openTypeHierarchyAction, &QAction::triggered, w, &CppTypeHierarchyWidget::perform);
w->perform();
return {w, {}};
}
QAction *m_openTypeHierarchyAction = nullptr;
};
static CppTypeHierarchyFactory &cppTypeHierarchyFactory()
{
static CppTypeHierarchyFactory theCppTypeHierarchyFactory;
return theCppTypeHierarchyFactory;
}
Core::NavigationView CppTypeHierarchyFactory::createWidget()
void openCppTypeHierarchy()
{
auto w = new CppTypeHierarchyWidget;
w->perform();
return {w, {}};
cppTypeHierarchyFactory().m_openTypeHierarchyAction->trigger();
}
void setupCppTypeHierarchy()
{
(void) cppTypeHierarchyFactory(); // Trigger instantiation
}
} // CppEditor::Internal

View File

@@ -3,16 +3,9 @@
#pragma once
#include <coreplugin/inavigationwidgetfactory.h>
namespace CppEditor::Internal {
class CppTypeHierarchyFactory : public Core::INavigationWidgetFactory
{
public:
CppTypeHierarchyFactory();
Core::NavigationView createWidget() override;
};
void openCppTypeHierarchy();
void setupCppTypeHierarchy();
} // CppEditor::Internal

View File

@@ -12,6 +12,7 @@
#include "cppmodelmanager.h"
#include "cpptoolsreuse.h"
#include "cpptoolstestcase.h"
#include "cpptypehierarchy.h"
#include "cppworkingcopy.h"
#include "projectinfo.h"
@@ -382,7 +383,7 @@ public:
void OpenTypeHierarchyTokenAction::run(CppEditorWidget *)
{
CppEditorPlugin::instance()->openTypeHierarchy();
openCppTypeHierarchy();
QApplication::processEvents();
}