CompilationDataBase: Hide plugin class definition in .cpp

Change-Id: Ib6c5f1a10479f8c27cc448c38fb5e3546f1e2239
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2024-01-12 13:15:55 +01:00
parent b2bed13655
commit 39fc082472
4 changed files with 53 additions and 61 deletions

View File

@@ -3,15 +3,20 @@ add_qtc_plugin(CompilationDatabaseProjectManager
PLUGIN_DEPENDS Core CppEditor ProjectExplorer TextEditor PLUGIN_DEPENDS Core CppEditor ProjectExplorer TextEditor
SOURCES SOURCES
compilationdatabaseconstants.h compilationdatabaseconstants.h
compilationdatabaseproject.cpp compilationdatabaseproject.h compilationdatabaseproject.cpp
compilationdatabaseprojectmanagerplugin.cpp compilationdatabaseprojectmanagerplugin.h compilationdatabaseproject.h
compilationdatabaseprojectmanagerplugin.cpp
compilationdatabaseprojectmanagertr.h compilationdatabaseprojectmanagertr.h
compilationdatabaseutils.cpp compilationdatabaseutils.h compilationdatabaseutils.cpp
compilationdbparser.cpp compilationdbparser.h compilationdatabaseutils.h
compilationdbparser.cpp
compilationdbparser.h
) )
extend_qtc_plugin(CompilationDatabaseProjectManager extend_qtc_plugin(CompilationDatabaseProjectManager
CONDITION WITH_TESTS CONDITION WITH_TESTS
SOURCES SOURCES
compilationdatabasetests.cpp compilationdatabasetests.h compilationdatabasetests.qrc compilationdatabasetests.cpp
compilationdatabasetests.h
compilationdatabasetests.qrc
) )

View File

@@ -16,7 +16,6 @@ QtcPlugin {
"compilationdatabaseutils.cpp", "compilationdatabaseutils.cpp",
"compilationdatabaseutils.h", "compilationdatabaseutils.h",
"compilationdatabaseprojectmanagerplugin.cpp", "compilationdatabaseprojectmanagerplugin.cpp",
"compilationdatabaseprojectmanagerplugin.h",
"compilationdbparser.cpp", "compilationdbparser.cpp",
"compilationdbparser.h", "compilationdbparser.h",
] ]

View File

@@ -1,8 +1,6 @@
// Copyright (C) 2018 The Qt Company Ltd. // Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "compilationdatabaseprojectmanagerplugin.h"
#include "compilationdatabaseconstants.h" #include "compilationdatabaseconstants.h"
#include "compilationdatabaseproject.h" #include "compilationdatabaseproject.h"
#include "compilationdatabaseprojectmanagertr.h" #include "compilationdatabaseprojectmanagertr.h"
@@ -12,6 +10,8 @@
#include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/command.h>
#include <extensionsystem/iplugin.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmanager.h> #include <projectexplorer/projectmanager.h>
#include <projectexplorer/projecttree.h> #include <projectexplorer/projecttree.h>
@@ -37,50 +37,60 @@ public:
QAction changeRootAction{Tr::tr("Change Root Directory")}; QAction changeRootAction{Tr::tr("Change Root Directory")};
}; };
CompilationDatabaseProjectManagerPlugin::~CompilationDatabaseProjectManagerPlugin() class CompilationDatabaseProjectManagerPlugin final : public ExtensionSystem::IPlugin
{ {
delete d; Q_OBJECT
} Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "CompilationDatabaseProjectManager.json")
void CompilationDatabaseProjectManagerPlugin::initialize() ~CompilationDatabaseProjectManagerPlugin()
{ {
d = new CompilationDatabaseProjectManagerPluginPrivate; delete d;
}
Utils::FileIconProvider::registerIconOverlayForFilename(Utils::Icons::PROJECT.imageFilePath().toString(), void initialize() final
COMPILE_COMMANDS_JSON); {
Utils::FileIconProvider::registerIconOverlayForFilename( d = new CompilationDatabaseProjectManagerPluginPrivate;
Utils::Icons::PROJECT.imageFilePath().toString(),
QString(COMPILE_COMMANDS_JSON) + Constants::COMPILATIONDATABASEPROJECT_FILES_SUFFIX);
ProjectManager::registerProjectType<CompilationDatabaseProject>( Utils::FileIconProvider::registerIconOverlayForFilename(Utils::Icons::PROJECT.imageFilePath().toString(),
Constants::COMPILATIONDATABASEMIMETYPE); COMPILE_COMMANDS_JSON);
Utils::FileIconProvider::registerIconOverlayForFilename(
Utils::Icons::PROJECT.imageFilePath().toString(),
QString(COMPILE_COMMANDS_JSON) + Constants::COMPILATIONDATABASEPROJECT_FILES_SUFFIX);
Command *cmd = ActionManager::registerAction(&d->changeRootAction, CHANGEROOTDIR); ProjectManager::registerProjectType<CompilationDatabaseProject>(
Constants::COMPILATIONDATABASEMIMETYPE);
ActionContainer *mprojectContextMenu = ActionManager::actionContainer( Command *cmd = ActionManager::registerAction(&d->changeRootAction, CHANGEROOTDIR);
ProjectExplorer::Constants::M_PROJECTCONTEXT);
mprojectContextMenu->addSeparator(ProjectExplorer::Constants::G_PROJECT_TREE);
mprojectContextMenu->addAction(cmd, ProjectExplorer::Constants::G_PROJECT_TREE);
connect(&d->changeRootAction, &QAction::triggered, ActionContainer *mprojectContextMenu = ActionManager::actionContainer(
ProjectTree::instance(), &ProjectTree::changeProjectRootDirectory); ProjectExplorer::Constants::M_PROJECTCONTEXT);
mprojectContextMenu->addSeparator(ProjectExplorer::Constants::G_PROJECT_TREE);
mprojectContextMenu->addAction(cmd, ProjectExplorer::Constants::G_PROJECT_TREE);
const auto onProjectChanged = [this] { connect(&d->changeRootAction, &QAction::triggered,
const auto currentProject = qobject_cast<CompilationDatabaseProject *>( ProjectTree::instance(), &ProjectTree::changeProjectRootDirectory);
ProjectTree::currentProject());
d->changeRootAction.setEnabled(currentProject); const auto onProjectChanged = [this] {
}; const auto currentProject = qobject_cast<CompilationDatabaseProject *>(
ProjectTree::currentProject());
connect(ProjectManager::instance(), &ProjectManager::startupProjectChanged, d->changeRootAction.setEnabled(currentProject);
this, onProjectChanged); };
connect(ProjectTree::instance(), &ProjectTree::currentProjectChanged, connect(ProjectManager::instance(), &ProjectManager::startupProjectChanged,
this, onProjectChanged); this, onProjectChanged);
connect(ProjectTree::instance(), &ProjectTree::currentProjectChanged,
this, onProjectChanged);
#ifdef WITH_TESTS #ifdef WITH_TESTS
addTest<CompilationDatabaseTests>(); addTest<CompilationDatabaseTests>();
#endif #endif
} }
class CompilationDatabaseProjectManagerPluginPrivate *d = nullptr;
};
} // CompilationDatabaseProjectManager::Internal } // CompilationDatabaseProjectManager::Internal
#include "compilationdatabaseprojectmanagerplugin.moc"

View File

@@ -1,22 +0,0 @@
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <extensionsystem/iplugin.h>
namespace CompilationDatabaseProjectManager::Internal {
class CompilationDatabaseProjectManagerPlugin final : public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "CompilationDatabaseProjectManager.json")
~CompilationDatabaseProjectManagerPlugin();
void initialize() final;
class CompilationDatabaseProjectManagerPluginPrivate *d = nullptr;
};
} // CompilationDatabaseProjectManager::Internal