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