Continues migration with DDS, Common

This commit is contained in:
torsten committed 2026-07-17 12:41:42 +02:00
1 parent 9b15cee841
commit fa48db111e
668 files changed
+111841 -2

No files matched your search

@@ -0,0 +1,22 @@
#
# $Id$
# $HeadURL$
# $Author$
# Created by Mike Wille, NLSE, 2018-02-15
#
SET(srcs
style_manager.h
style_manager.cpp
)
NGL_ADD_LIBRARY2(WS LtsUtilsGuiStyleManager SHARED ${srcs})
NGL_TARGET_INCLUDE_DIRECTORIES(LtsUtilsGuiStyleManager
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(LtsUtilsGuiStyleManager
Qt5::Core
LtsPluginLoader
)
@@ -0,0 +1,114 @@
#include "style_manager.h"
#include <LtsPluginManager/lts_plugin_loader.h>
#include <PluginInterfaces/style_plugin_interface.h>
#include <QPluginLoader>
#include <QDebug>
namespace LtsUtils
{
struct StyleManagerHandler
{
StyleManager styleManager;
};
Q_GLOBAL_STATIC(StyleManagerHandler, s_styleManagerHandler)
StyleManager *StyleManager::getInstance()
{
return &s_styleManagerHandler->styleManager;
}
bool StyleManager::loadStyle(const QString &stylePluginName, bool highDpi)
{
if (m_currentStylePluginLoader != nullptr)
{
QObject *pluginInstance = m_currentStylePluginLoader->instance();
StylePlugin::Plugin *sp = qobject_cast<StylePlugin::Plugin *>(pluginInstance);
if (sp == nullptr)
{
qWarning() << "StyleManager::loadStyle: could not unload style plugin - wrong type ("
<< pluginInstance->metaObject()->className() << ") - new style not loaded";
return false;
}
sp->unloadStyle();
m_currentStylePluginLoader = nullptr;
}
LtsPluginManager::LtsPluginLoader *pluginLoader = LtsPluginManager::LtsPluginLoader::getInstance();
QPluginLoader *stylePluginLoader = nullptr;
int pluginsLoaded = 0;
std::function<bool(const LtsPluginManager::PluginInstance &pi)> loadPluginFn = [&stylePluginLoader, &pluginsLoaded]
(const LtsPluginManager::PluginInstance &pi)
{
stylePluginLoader = pi.pluginLoader;
pluginsLoaded++;
return true;
};
if (!pluginLoader->loadPlugins(LtsPluginManager::PluginType::STYLE, loadPluginFn, QStringList() << stylePluginName))
{
qWarning() << "StyleManager::loadStyle: Error loading Style Plugin - using default Qt style";
return false;
}
if (pluginsLoaded == 0)
{
qWarning() << "StyleManager::loadStyle: Could not find Style Plugin" << stylePluginName << "- using default Qt style";
return false;
}
if (pluginsLoaded > 1)
{
qWarning() << "StyleManager::loadStyle: Style Plugin" << stylePluginName << " is ambiguous - using default Qt style";
return false;
}
if (stylePluginLoader == nullptr)
{
qWarning() << "StyleManager::loadStyle: No Style Plugin loader available - using default Qt style";
return false;
}
StylePlugin::Plugin *sp = qobject_cast<StylePlugin::Plugin *>(stylePluginLoader->instance());
if (sp == nullptr)
{
qWarning() << "StyleManager::loadStyle: could not load style plugin - wrong type ("
<< stylePluginLoader->instance()->metaObject()->className() << ") - new style not loaded";
return false;
}
sp->loadStyle(highDpi);
m_currentStylePluginLoader = stylePluginLoader;
m_stylePluginName = stylePluginName;
emit signalStyleChanged(stylePluginName);
return true;
}
}
@@ -0,0 +1,36 @@
#pragma once
#include <StyleManager/ltsutilsguistylemanager_export.h>
#include <QObject>
class QPluginLoader;
namespace LtsUtils
{
class LTSUTILSGUISTYLEMANAGER_EXPORT StyleManager : public QObject
{
Q_OBJECT
using QObject::QObject;
~StyleManager() = default;
public:
static StyleManager *getInstance();
bool loadStyle(const QString &stylePluginName, bool highDpi = false);
const QString &currentStyleName() const { return m_stylePluginName; }
private:
friend struct StyleManagerHandler;
QPluginLoader *m_currentStylePluginLoader = nullptr;
QString m_stylePluginName;
signals:
void signalStyleChanged(const QString &stylePluginName);
};
}