Warning, file /graphics/glaxnimate/src/gui/settings/plugin_settings_group.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "app/settings/custom_settings_group.hpp" 0010 #include "widgets/settings/plugin_settings_widget.hpp" 0011 #include "plugin/plugin.hpp" 0012 0013 namespace glaxnimate::gui::settings { 0014 0015 class PluginSettingsGroup : public app::settings::CustomSettingsGroupBase 0016 { 0017 public: 0018 PluginSettingsGroup(QStringList default_enabled) 0019 : enabled(std::move(default_enabled)) {} 0020 0021 QString slug() const override { return "plugins"; } 0022 QIcon icon() const override { return QIcon::fromTheme("system-software-install"); } 0023 QString label() const override { return i18n("Plugins"); } 0024 void load ( QSettings & settings ) override 0025 { 0026 plugin::PluginRegistry::instance().load(); 0027 0028 enabled = settings.value("enabled", enabled).toStringList(); 0029 0030 for ( const auto& plugin : plugin::PluginRegistry::instance().plugins() ) 0031 if ( enabled.contains(plugin->data().id) ) 0032 plugin->enable(); 0033 } 0034 0035 void save ( QSettings & settings ) override 0036 { 0037 enabled.clear(); 0038 0039 for ( const auto& plugin : plugin::PluginRegistry::instance().plugins() ) 0040 if ( plugin->enabled() ) 0041 enabled.push_back(plugin->data().id); 0042 0043 settings.setValue("enabled", enabled); 0044 } 0045 0046 QWidget * make_widget ( QWidget * parent ) override { return new PluginSettingsWidget(parent); } 0047 0048 private: 0049 QStringList enabled; 0050 }; 0051 0052 } // namespace glaxnimate::gui::settings