Continues migration with DDS, Common
This commit is contained in:
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 ¤tStyleName() const { return m_stylePluginName; }
|
||||
|
||||
private:
|
||||
friend struct StyleManagerHandler;
|
||||
|
||||
QPluginLoader *m_currentStylePluginLoader = nullptr;
|
||||
QString m_stylePluginName;
|
||||
|
||||
signals:
|
||||
void signalStyleChanged(const QString &stylePluginName);
|
||||
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user