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,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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user