Commit f58c723c authored by Alexander Semke's avatar Alexander Semke

Avoided duplicated looping over the plugin pathes and some minor code

style fixes in the panel plugin handler.
parent d6766567
Pipeline #28955 passed with stage
in 26 minutes and 2 seconds
......@@ -28,15 +28,14 @@ class Cantor::PanelPluginPrivate
public:
QString name;
QStringList requiredExtensions;
Session* session;
QWidget* parentWidget;
Session* session = nullptr;
QWidget* parentWidget = nullptr;
};
PanelPlugin::PanelPlugin( QObject* parent) : QObject(parent), /* KXMLGUIClient(dynamic_cast<KXMLGUIClient*>(parent)),*/
d(new PanelPluginPrivate)
{
d->parentWidget=nullptr;
d->session=nullptr;
}
PanelPlugin::~PanelPlugin()
......@@ -46,7 +45,7 @@ PanelPlugin::~PanelPlugin()
void PanelPlugin::setParentWidget(QWidget* widget)
{
d->parentWidget=widget;
d->parentWidget = widget;
}
QWidget* PanelPlugin::parentWidget()
......@@ -56,8 +55,8 @@ QWidget* PanelPlugin::parentWidget()
void PanelPlugin::setPluginInfo(const KPluginMetaData& info)
{
d->name=info.name();
d->requiredExtensions=info.value(QStringLiteral("RequiredExtensions")).split(QLatin1Char(','));
d->name = info.name();
d->requiredExtensions = info.value(QStringLiteral("RequiredExtensions")).split(QLatin1Char(','));
}
QStringList PanelPlugin::requiredExtensions()
......@@ -87,7 +86,7 @@ void Cantor::PanelPlugin::restoreState(const Cantor::PanelPlugin::State& state)
d->session = state.session;
}
Cantor::Session * Cantor::PanelPlugin::session()
Cantor::Session* Cantor::PanelPlugin::session()
{
return d->session;
}
......
......@@ -23,12 +23,9 @@ using namespace Cantor;
#include <QDebug>
#include <QDir>
#include <KService>
#include <KServiceTypeTrader>
#include <KPluginMetaData>
#include "session.h"
#include "panelplugin.h"
#include "backend.h"
class Cantor::PanelPluginHandlerPrivate
......@@ -51,19 +48,15 @@ PanelPluginHandler::~PanelPluginHandler()
void PanelPluginHandler::loadPlugins()
{
QStringList panelDirs;
foreach(const QString &dir, QCoreApplication::libraryPaths()) {
panelDirs << dir + QDir::separator() + QLatin1String("cantor/panels");
}
QPluginLoader loader;
foreach(const QString &dir, panelDirs){
for (const QString& path : QCoreApplication::libraryPaths()) {
const QString& dir = path + QDir::separator() + QLatin1String("cantor/panels");
qDebug() << "dir: " << dir;
QStringList panels;
QDir panelDir = QDir(dir);
panels = panelDir.entryList();
QPluginLoader loader;
const QStringList& panels = panelDir.entryList();
foreach (const QString &panel, panels)
for (const QString& panel : panels)
{
if (panel==QLatin1String(".") || panel==QLatin1String(".."))
continue;
......@@ -80,11 +73,6 @@ void PanelPluginHandler::loadPlugins()
KPluginMetaData info(loader);
plugin->setPluginInfo(info);
// This set session to null inside plugin
Cantor::PanelPlugin::State emptyState;
plugin->restoreState(emptyState);
d->plugins.append(plugin);
}
}
......@@ -106,10 +94,10 @@ QList<PanelPlugin*> PanelPluginHandler::plugins(Session* session)
const QStringList& extensions = session->backend()->extensions();
qDebug()<<"loading panel plugins for session of type "<<session->backend()->name();
for(Cantor::PanelPlugin* plugin : d->plugins)
for (auto* plugin : d->plugins)
{
bool supported=true;
foreach(const QString& req, plugin->requiredExtensions()){
for (const QString& req : plugin->requiredExtensions()){
// FIXME: That req.isEmpty() is there just because Help Panel has req
// empty, returning FALSE when the comparison must to return TRUE.
supported = supported && (extensions.contains(req) || req.isEmpty());
......@@ -132,9 +120,9 @@ QList<PanelPlugin*> PanelPluginHandler::plugins(Session* session)
QList<PanelPlugin*> PanelPluginHandler::activePluginsForSession(Session* session, const PanelStates& previousPluginStates)
{
QList<Cantor::PanelPlugin*> plugins = this->plugins(session);
for(Cantor::PanelPlugin* plugin : plugins)
for (auto* plugin : plugins)
{
if(plugin==nullptr)
if(!plugin)
{
qDebug()<<"somethings wrong with plugin inside PanelPluginHandler";
continue;
......
......@@ -43,10 +43,10 @@ class CANTOR_EXPORT PanelPluginHandler : public QObject
~PanelPluginHandler() override;
QList<PanelPlugin*> allPlugins();
QList<PanelPlugin*> plugins(Session* session);
QList<PanelPlugin*> plugins(Session*);
using PanelStates = QMap<QString, Cantor::PanelPlugin::State>;
QList<PanelPlugin*> activePluginsForSession(Session* session, const PanelStates& previousPluginStates);
QList<PanelPlugin*> activePluginsForSession(Session*, const PanelStates&);
void loadPlugins();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment