- training_area_telegrams.cpp: Fixed QJsonObject initializer syntax (Qt6 requires {{}} not ({}))
- training_area_telegrams.cpp: Fixed fromJson() methods to access m_* members directly
- training_area_telegrams.cpp: Fixed brace mismatches in multiple toJson() methods
- training_area_telegrams.h: Changed Header struct to public members for consistency
- tx_mixin.cpp: Fixed getEquipmentNumber() template for direct member access
- lts_coordinate.cpp: Added missing #include <iomanip>
- MIGRATION_STATUS.md: Added migration progress tracking document
C++17 constraint enforced due to RTI Connext DDS 7.7.0 incompatibility with C++20+
Build status: BUILD_RTI=OFF successful (0 errors, warnings only)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
101 lines
2.9 KiB
C++
101 lines
2.9 KiB
C++
|
|
|
|
#include "style_manager.h"
|
|
|
|
#include <LtsPluginManager/lts_plugin_loader.h>
|
|
#include <PluginInterfaces/style_plugin_interface.h>
|
|
#include <QtCore/QDebug>
|
|
#include <QtCore/QPluginLoader>
|
|
|
|
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;
|
|
}
|
|
|
|
} // namespace LtsUtils
|