HelloWorld: Move the plugin class definition to the .cpp

The latest trend.

Change-Id: Ic70739dec71e2102735021f5cf152abae6dfea12
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2024-01-10 12:19:53 +01:00
parent 28b06e89d5
commit 06c9898dbf
4 changed files with 36 additions and 56 deletions

View File

@@ -2,7 +2,8 @@ add_qtc_plugin(HelloWorld
SKIP_TRANSLATION
PLUGIN_DEPENDS Core
SOURCES
helloworldplugin.cpp helloworldplugin.h
helloworldplugin.cpp
helloworldtr.h
helloworldwindow.cpp helloworldwindow.h
helloworldwindow.cpp
helloworldwindow.h
)

View File

@@ -8,7 +8,6 @@ QtcPlugin {
files: [
"helloworldplugin.cpp",
"helloworldplugin.h",
"helloworldwindow.cpp",
"helloworldwindow.h",
"helloworldtr.h"

View File

@@ -1,8 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "helloworldplugin.h"
#include "helloworldtr.h"
#include <coreplugin/actionmanager/actionmanager.h>
@@ -12,6 +10,8 @@
#include <coreplugin/imode.h>
#include <coreplugin/modemanager.h>
#include <extensionsystem/iplugin.h>
#include <QDebug>
#include <QAction>
#include <QMenu>
@@ -22,7 +22,7 @@ namespace HelloWorld::Internal {
/*! A mode with a push button based on BaseMode. */
class HelloMode : public Core::IMode
class HelloMode final : public Core::IMode
{
public:
HelloMode()
@@ -36,15 +36,29 @@ public:
}
};
class HelloWorldPlugin final : public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "HelloWorld.json")
public:
HelloWorldPlugin();
~HelloWorldPlugin() final;
void initialize() final;
void extensionsInitialized() final;
private:
HelloMode *m_helloMode = nullptr;
};
/*! Constructs the Hello World plugin. Normally plugins don't do anything in
their constructor except for initializing their member variables. The
actual work is done later, in the initialize() and extensionsInitialized()
functions.
*/
HelloWorldPlugin::HelloWorldPlugin()
{
}
HelloWorldPlugin::HelloWorldPlugin() = default;
/*! Plugins are responsible for deleting objects they created on the heap, and
to unregister objects from the plugin manager that they registered there.
@@ -62,10 +76,10 @@ void HelloWorldPlugin::initialize()
{
// Create a unique context for our own view, that will be used for the
// menu entry later.
Core::Context context("HelloWorld.MainView");
const Core::Context context("HelloWorld.MainView");
// Create our own menu to place in the Tools menu
Utils::Id menuId = "HelloWorld.HelloWorldMenu";
const Utils::Id menuId = "HelloWorld.HelloWorldMenu";
Core::ActionContainer *helloWorldMenu = Core::ActionManager::createMenu(menuId);
QMenu *menu = helloWorldMenu->menu();
@@ -78,15 +92,19 @@ void HelloWorldPlugin::initialize()
toolsMenu->addMenu(helloWorldMenu);
// Create an action to be triggered by a menu entry.
// The Action builder registers the action with the action manager
// The ActionBuilder registers the action with Core::ActionManager
// on its destruction.
Core::ActionBuilder hello(this, "HelloWorld.HelloWorldAction");
hello.setText(Tr::tr("Say \"&Hello World!\""));
hello.setContext(context);
hello.addOnTriggered(this, [this] { sayHelloWorld(); });
// Add the Hello World action command to the menu
hello.addToContainer(menuId);
hello.addToContainer(menuId); // Add the Hello World action command to the menu
hello.addOnTriggered(this, [] {
// When passing nullptr for the parent, the message box becomes an
// application-global modal dialog box
QMessageBox::information(nullptr,
Tr::tr("Hello World!"),
Tr::tr("Hello World! Beautiful day today, isn't it?"));
});
// Add a mode with a push button based on BaseMode.
m_helloMode = new HelloMode;
@@ -107,13 +125,6 @@ void HelloWorldPlugin::extensionsInitialized()
{
}
void HelloWorldPlugin::sayHelloWorld()
{
// When passing nullptr for the parent, the message box becomes an
// application-global modal dialog box
QMessageBox::information(nullptr,
Tr::tr("Hello World!"),
Tr::tr("Hello World! Beautiful day today, isn't it?"));
}
} // namespace HelloWorld::Internal
#include <helloworldplugin.moc>

View File

@@ -1,31 +0,0 @@
// Copyright (C) 2016 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 HelloWorld::Internal {
class HelloMode;
class HelloWorldPlugin
: public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "HelloWorld.json")
public:
HelloWorldPlugin();
~HelloWorldPlugin() override;
void initialize() override;
void extensionsInitialized() override;
private:
void sayHelloWorld();
HelloMode *m_helloMode = nullptr;
};
} // namespace HelloWorld::Internal