Save info is plugin is linked and loaded inside config info

This commit is contained in:
Maschell 2024-08-04 15:07:30 +02:00
parent 629dc0393f
commit e584d8c1df
3 changed files with 22 additions and 10 deletions

View File

@ -1,12 +1,22 @@
#include "ConfigDisplayItem.h"
#include "config/WUPSConfig.h"
ConfigDisplayItem::ConfigDisplayItem(GeneralConfigInformation &info, std::unique_ptr<WUPSConfigAPIBackend::WUPSConfig> config) : mConfig(std::move(config)), mInfo(std::move(info)) {
ConfigDisplayItem::ConfigDisplayItem(GeneralConfigInformation &info,
std::unique_ptr<WUPSConfigAPIBackend::WUPSConfig> config,
const bool isActive) : mConfig(std::move(config)),
mInfo(std::move(info)),
mIsActivePlugin(isActive) {
assert(mConfig);
}
const GeneralConfigInformation &ConfigDisplayItem::getConfigInformation() const {
return mInfo;
}
const WUPSConfigAPIBackend::WUPSConfig &ConfigDisplayItem::getConfig() const {
return *mConfig;
}
bool ConfigDisplayItem::isActivePlugin() const {
return mIsActivePlugin;
}

View File

@ -1,6 +1,7 @@
#pragma once
#include "config/WUPSConfig.h"
#include "plugin/PluginData.h"
#include <memory>
#include <string>
@ -8,17 +9,21 @@ struct GeneralConfigInformation {
std::string name;
std::string author;
std::string version;
std::shared_ptr<PluginData> pluginData;
};
class ConfigDisplayItem {
public:
ConfigDisplayItem(GeneralConfigInformation &info, std::unique_ptr<WUPSConfigAPIBackend::WUPSConfig> config);
ConfigDisplayItem(GeneralConfigInformation &info, std::unique_ptr<WUPSConfigAPIBackend::WUPSConfig> config, bool isActive);
[[nodiscard]] const GeneralConfigInformation &getConfigInformation() const;
[[nodiscard]] const WUPSConfigAPIBackend::WUPSConfig &getConfig() const;
[[nodiscard]] bool isActivePlugin() const;
private:
std::unique_ptr<WUPSConfigAPIBackend::WUPSConfig> mConfig;
GeneralConfigInformation mInfo;
bool mIsActivePlugin;
};

View File

@ -77,13 +77,11 @@ void ConfigUtils::displayMenu() {
std::vector<ConfigDisplayItem> configs;
for (const auto &plugin : gLoadedPlugins) {
if (!plugin.isLinkedAndLoaded()) {
continue;
}
GeneralConfigInformation info;
info.name = plugin.getMetaInformation().getName();
info.author = plugin.getMetaInformation().getAuthor();
info.version = plugin.getMetaInformation().getVersion();
info.name = plugin.getMetaInformation().getName();
info.author = plugin.getMetaInformation().getAuthor();
info.version = plugin.getMetaInformation().getVersion();
info.pluginData = plugin.getPluginDataCopy();
std::unique_ptr<WUPSConfigAPIBackend::WUPSConfig> config;
if (const auto configData = plugin.getConfigData()) {
@ -124,8 +122,7 @@ void ConfigUtils::displayMenu() {
if (!config) {
config = make_unique_nothrow<WUPSConfigAPIBackend::WUPSConfig>(info.name);
}
configs.emplace_back(info, std::move(config));
configs.emplace_back(info, std::move(config), plugin.isLinkedAndLoaded());
}
// Sort Configs by name