File indexing completed on 2024-04-21 04:38:10
0001 /* 0002 SPDX-FileCopyrightText: 2018 Anton Anikin <anton@anikin.xyz> 0003 SPDX-FileCopyrightText: 2020 Friedrich W. H. Kossebau <kossebau@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "plugin.h" 0009 0010 // plugin 0011 #include "checksdb.h" 0012 #include "globalsettings.h" 0013 #include "analyzer.h" 0014 #include "checksetselectionmanager.h" 0015 #include "debug.h" 0016 #include "config/globalconfigpage.h" 0017 #include "config/projectconfigpage.h" 0018 // KDevPlatform 0019 #include <interfaces/contextmenuextension.h> 0020 #include <project/projectconfigpage.h> 0021 // KF 0022 #include <KPluginFactory> 0023 // Qt 0024 #include <QApplication> 0025 0026 0027 K_PLUGIN_FACTORY_WITH_JSON(ClazyFactory, "kdevclazy.json", 0028 registerPlugin<Clazy::Plugin>();) 0029 0030 namespace Clazy 0031 { 0032 0033 Plugin::Plugin(QObject* parent, const QVariantList&) 0034 : IPlugin(QStringLiteral("kdevclazy"), parent) 0035 , m_db(nullptr) 0036 , m_checkSetSelectionManager(new CheckSetSelectionManager) 0037 { 0038 setXMLFile(QStringLiteral("kdevclazy.rc")); 0039 0040 // create after ui.rc file is set with action ids 0041 m_analyzer = new Analyzer(this, m_checkSetSelectionManager, this); 0042 } 0043 0044 Plugin::~Plugin() = default; 0045 0046 void Plugin::unload() 0047 { 0048 delete m_checkSetSelectionManager; 0049 m_checkSetSelectionManager = nullptr; 0050 delete m_analyzer; 0051 m_analyzer = nullptr; 0052 } 0053 0054 KDevelop::ContextMenuExtension Plugin::contextMenuExtension(KDevelop::Context* context, QWidget* parent) 0055 { 0056 KDevelop::ContextMenuExtension extension = KDevelop::IPlugin::contextMenuExtension(context, parent); 0057 0058 m_analyzer->fillContextMenuExtension(extension, context, parent); 0059 0060 return extension; 0061 } 0062 0063 KDevelop::ConfigPage* Plugin::perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, QWidget* parent) 0064 { 0065 if (m_db.isNull()) { 0066 reloadDB(); 0067 } 0068 0069 return number ? nullptr : new ProjectConfigPage(this, options.project, m_checkSetSelectionManager, parent); 0070 } 0071 0072 KDevelop::ConfigPage* Plugin::configPage(int number, QWidget* parent) 0073 { 0074 if (m_db.isNull()) { 0075 reloadDB(); 0076 } 0077 0078 return number ? nullptr : new GlobalConfigPage(m_checkSetSelectionManager, m_db, this, parent); 0079 } 0080 0081 QSharedPointer<const ChecksDB> Plugin::checksDB() const 0082 { 0083 return m_db; 0084 } 0085 0086 QSharedPointer<const ChecksDB> Plugin::loadedChecksDB() 0087 { 0088 if (m_db.isNull()) { 0089 reloadDB(); 0090 } 0091 0092 return m_db; 0093 } 0094 0095 void Plugin::reloadDB() 0096 { 0097 m_db.reset(new ChecksDB(GlobalSettings::docsPath())); 0098 connect(GlobalSettings::self(), &GlobalSettings::docsPathChanged, this, &Plugin::reloadDB); 0099 } 0100 0101 } 0102 0103 #include "plugin.moc" 0104 #include "moc_plugin.cpp"