diff --git a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp index a1c7f526c88..f6297b84a5a 100644 --- a/src/plugins/clangcodemodel/clangcodemodelplugin.cpp +++ b/src/plugins/clangcodemodel/clangcodemodelplugin.cpp @@ -41,7 +41,7 @@ #include -#include +#include #include #include @@ -55,12 +55,12 @@ bool ClangCodeModelPlugin::initialize(const QStringList &arguments, QString *err Q_UNUSED(arguments) Q_UNUSED(errorMessage) - auto panelFactory = new ProjectExplorer::IProjectPanelFactory(); + auto panelFactory = new ProjectExplorer::ProjectPanelFactory(); panelFactory->setPriority(60); panelFactory->setDisplayName(ClangProjectSettingsWidget::tr("Clang Settings")); panelFactory->setSimpleCreateWidgetFunction(QIcon()); - ProjectExplorer::IProjectPanelFactory::registerFactory(panelFactory); + ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); ClangCodeModel::Internal::initializeClang(); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 3151d54e1ee..e303c2d3b5c 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -84,7 +84,7 @@ #include "devicesupport/devicemanager.h" #include "devicesupport/devicesettingspage.h" #include "targetsettingspanel.h" -#include "iprojectpanelfactory.h" +#include "projectpanelfactory.h" #ifdef Q_OS_WIN # include "windebuginterface.h" @@ -321,7 +321,7 @@ ProjectExplorerPlugin::~ProjectExplorerPlugin() // Force sequence of deletion: delete d->m_kitManager; // remove all the profile informations delete d->m_toolChainManager; - IProjectPanelFactory::destroyFactories(); + ProjectPanelFactory::destroyFactories(); delete d; } @@ -471,31 +471,31 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er addAutoReleasedObject(new CurrentProjectFilter); // ProjectPanelFactories - auto editorSettingsPanelFactory = new IProjectPanelFactory; + auto editorSettingsPanelFactory = new ProjectPanelFactory; editorSettingsPanelFactory->setPriority(30); QString displayName = QCoreApplication::translate("EditorSettingsPanelFactory", "Editor"); editorSettingsPanelFactory->setDisplayName(displayName); QIcon icon = QIcon(QLatin1String(":/projectexplorer/images/EditorSettings.png")); editorSettingsPanelFactory->setSimpleCreateWidgetFunction(icon); - IProjectPanelFactory::registerFactory(editorSettingsPanelFactory); + ProjectPanelFactory::registerFactory(editorSettingsPanelFactory); - auto codeStyleSettingsPanelFactory = new IProjectPanelFactory; + auto codeStyleSettingsPanelFactory = new ProjectPanelFactory; codeStyleSettingsPanelFactory->setPriority(40); displayName = QCoreApplication::translate("CodeStyleSettingsPanelFactory", "Code Style"); codeStyleSettingsPanelFactory->setDisplayName(displayName); icon = QIcon(QLatin1String(":/projectexplorer/images/CodeStyleSettings.png")); codeStyleSettingsPanelFactory->setSimpleCreateWidgetFunction(icon); - IProjectPanelFactory::registerFactory(codeStyleSettingsPanelFactory); + ProjectPanelFactory::registerFactory(codeStyleSettingsPanelFactory); - auto dependenciesPanelFactory = new IProjectPanelFactory; + auto dependenciesPanelFactory = new ProjectPanelFactory; dependenciesPanelFactory->setPriority(50); displayName = QCoreApplication::translate("DependenciesPanelFactory", "Dependencies"); dependenciesPanelFactory->setDisplayName(displayName); icon = QIcon(QLatin1String(":/projectexplorer/images/ProjectDependencies.png")); dependenciesPanelFactory->setSimpleCreateWidgetFunction(icon); - IProjectPanelFactory::registerFactory(dependenciesPanelFactory); + ProjectPanelFactory::registerFactory(dependenciesPanelFactory); - auto unconfiguredProjectPanel = new IProjectPanelFactory; + auto unconfiguredProjectPanel = new ProjectPanelFactory; unconfiguredProjectPanel->setPriority(-10); unconfiguredProjectPanel->setDisplayName(tr("Configure Project")); unconfiguredProjectPanel->setSupportsFunction([](Project *project){ @@ -503,9 +503,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er }); icon = QIcon(QLatin1String(":/projectexplorer/images/unconfigured.png")); unconfiguredProjectPanel->setSimpleCreateWidgetFunction(icon); - IProjectPanelFactory::registerFactory(unconfiguredProjectPanel); + ProjectPanelFactory::registerFactory(unconfiguredProjectPanel); - auto targetSettingsPanelFactory = new IProjectPanelFactory; + auto targetSettingsPanelFactory = new ProjectPanelFactory; targetSettingsPanelFactory->setPriority(-10); displayName = QCoreApplication::translate("TargetSettingsPanelFactory", "Build & Run"); targetSettingsPanelFactory->setDisplayName(displayName); @@ -516,7 +516,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er targetSettingsPanelFactory->setCreateWidgetFunction([](Project *project) { return new TargetSettingsPanelWidget(project); }); - IProjectPanelFactory::registerFactory(targetSettingsPanelFactory); + ProjectPanelFactory::registerFactory(targetSettingsPanelFactory); addAutoReleasedObject(new ProcessStepFactory); diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index d2a3fc12e94..ca9be7b40aa 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -149,7 +149,7 @@ HEADERS += projectexplorer.h \ xcodebuildparser.h \ propertiespanel.h \ panelswidget.h \ - iprojectpanelfactory.h + projectpanelfactory.h SOURCES += projectexplorer.cpp \ abi.cpp \ @@ -286,7 +286,7 @@ SOURCES += projectexplorer.cpp \ xcodebuildparser.cpp \ propertiespanel.cpp \ panelswidget.cpp \ - iprojectpanelfactory.cpp + projectpanelfactory.cpp FORMS += processstep.ui \ editorsettingspropertiespage.ui \ diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index ca719536c6d..841d9e78902 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -85,7 +85,6 @@ QtcPlugin { "ipotentialkit.cpp", "ipotentialkit.h", "iprojectmanager.h", - "iprojectpanelfactory.cpp", "iprojectpanelfactory.h", "itaskhandler.h", "kit.cpp", "kit.h", "kitchooser.cpp", "kitchooser.h", @@ -122,6 +121,7 @@ QtcPlugin { "projectmacroexpander.cpp", "projectmacroexpander.h", "projectmodels.cpp", "projectmodels.h", "projectnodes.cpp", "projectnodes.h", + "projectpanelfactory.cpp", "projectpanelfactory.h", "projecttreewidget.cpp", "projecttreewidget.h", "projectwindow.cpp", "projectwindow.h", "projectwizardpage.cpp", "projectwizardpage.h", "projectwizardpage.ui", diff --git a/src/plugins/projectexplorer/iprojectpanelfactory.cpp b/src/plugins/projectexplorer/projectpanelfactory.cpp similarity index 68% rename from src/plugins/projectexplorer/iprojectpanelfactory.cpp rename to src/plugins/projectexplorer/projectpanelfactory.cpp index f31b0f8010b..f3bb78091db 100644 --- a/src/plugins/projectexplorer/iprojectpanelfactory.cpp +++ b/src/plugins/projectexplorer/projectpanelfactory.cpp @@ -27,74 +27,71 @@ ** ****************************************************************************/ -#include "iprojectpanelfactory.h" +#include "projectpanelfactory.h" -using namespace ProjectExplorer; +namespace ProjectExplorer { -QList IProjectPanelFactory::s_factories; +static QList s_factories; -IProjectPanelFactory::IProjectPanelFactory() +ProjectPanelFactory::ProjectPanelFactory() : m_priority(0), - m_supportsFunction(&supportsAllProjects) + m_supportsFunction([] (Project *) { return true; }) {} -int IProjectPanelFactory::priority() const +int ProjectPanelFactory::priority() const { return m_priority; } -void IProjectPanelFactory::setPriority(int priority) +void ProjectPanelFactory::setPriority(int priority) { m_priority = priority; } -QString IProjectPanelFactory::displayName() const +QString ProjectPanelFactory::displayName() const { return m_displayName; } -void IProjectPanelFactory::setDisplayName(const QString &name) +void ProjectPanelFactory::setDisplayName(const QString &name) { m_displayName = name; } -bool IProjectPanelFactory::supportsAllProjects(Project *) -{ - return true; -} - -void IProjectPanelFactory::registerFactory(IProjectPanelFactory *factory) +void ProjectPanelFactory::registerFactory(ProjectPanelFactory *factory) { auto it = std::lower_bound(s_factories.begin(), s_factories.end(), factory, - [](IProjectPanelFactory *a, IProjectPanelFactory *b) { + [](ProjectPanelFactory *a, ProjectPanelFactory *b) { return (a->priority() == b->priority() && a < b) || a->priority() < b->priority(); }); s_factories.insert(it, factory); } -QList IProjectPanelFactory::factories() +QList ProjectPanelFactory::factories() { return s_factories; } -void IProjectPanelFactory::destroyFactories() +void ProjectPanelFactory::destroyFactories() { qDeleteAll(s_factories); s_factories.clear(); } -bool IProjectPanelFactory::supports(Project *project) +bool ProjectPanelFactory::supports(Project *project) { return m_supportsFunction(project); } -void IProjectPanelFactory::setSupportsFunction(std::function function) +void ProjectPanelFactory::setSupportsFunction(std::function function) { m_supportsFunction = function; } -QWidget *IProjectPanelFactory::createWidget(Project *project) +QWidget *ProjectPanelFactory::createWidget(Project *project) { return m_createWidgetFunction(project); } + +} // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/iprojectpanelfactory.h b/src/plugins/projectexplorer/projectpanelfactory.h similarity index 84% rename from src/plugins/projectexplorer/iprojectpanelfactory.h rename to src/plugins/projectexplorer/projectpanelfactory.h index 3804ca014d6..d6f6b4d641a 100644 --- a/src/plugins/projectexplorer/iprojectpanelfactory.h +++ b/src/plugins/projectexplorer/projectpanelfactory.h @@ -27,27 +27,24 @@ ** ****************************************************************************/ -#ifndef IPROJECTPROPERTIES_H -#define IPROJECTPROPERTIES_H +#ifndef PROJECTPANELFACTORY_H +#define PROJECTPANELFACTORY_H #include "projectexplorer_export.h" #include "propertiespanel.h" #include "panelswidget.h" -#include -#include - #include namespace ProjectExplorer { + class Project; class ProjectExplorerPlugin; -class Target; -class PROJECTEXPLORER_EXPORT IProjectPanelFactory +class PROJECTEXPLORER_EXPORT ProjectPanelFactory { public: - IProjectPanelFactory(); + ProjectPanelFactory(); // simple properties QString displayName() const; @@ -55,11 +52,11 @@ public: int priority() const; void setPriority(int priority); - // interface for users of IProjectPanelFactory + // interface for users of ProjectPanelFactory bool supports(Project *project); - QWidget *createWidget(ProjectExplorer::Project *project); + QWidget *createWidget(Project *project); - // interface for "implementations" of IProjectPanelFactory + // interface for "implementations" of ProjectPanelFactory // by default all projects are supported, only set a custom supports function // if you need something different void setSupportsFunction(std::function function); @@ -88,11 +85,10 @@ public: m_createWidgetFunction = function; } - static bool supportsAllProjects(Project *); + // This takes ownership. + static void registerFactory(ProjectPanelFactory *factory); - static void registerFactory(IProjectPanelFactory *factory); - - static QList factories(); + static QList factories(); private: friend class ProjectExplorerPlugin; @@ -102,9 +98,8 @@ private: QString m_displayName; std::function m_supportsFunction; std::function m_createWidgetFunction; - static QList s_factories; }; } // namespace ProjectExplorer -#endif // IPROJECTPROPERTIES_H +#endif // PROJECTPANELFACTORY_H diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 4e2a460976a..ec110091b26 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -34,7 +34,7 @@ #include "kitmanager.h" #include "project.h" #include "projectexplorer.h" -#include "iprojectpanelfactory.h" +#include "projectpanelfactory.h" #include "session.h" #include "target.h" @@ -121,7 +121,7 @@ void ProjectWindow::projectUpdated(Project *p) QStringList ProjectWindow::tabDisplayNamesFor(Project *project) { QStringList subTabs; - foreach (IProjectPanelFactory *panelFactory, IProjectPanelFactory::factories()) { + foreach (ProjectPanelFactory *panelFactory, ProjectPanelFactory::factories()) { if (panelFactory->supports(project)) subTabs << panelFactory->displayName(); } @@ -214,9 +214,9 @@ void ProjectWindow::showProperties(int index, int subIndex) // Set up custom panels again: int pos = 0; - IProjectPanelFactory *fac = 0; + ProjectPanelFactory *fac = 0; - foreach (IProjectPanelFactory *panelFactory, IProjectPanelFactory::factories()) { + foreach (ProjectPanelFactory *panelFactory, ProjectPanelFactory::factories()) { if (panelFactory->supports(project)) { if (subIndex == pos) { fac = panelFactory;