Warning, file /graphics/glaxnimate/src/gui/settings/clipboard_settings.cpp 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 #include "clipboard_settings.hpp"
0008 
0009 #include <QWidget>
0010 #include <QCheckBox>
0011 #include <QVBoxLayout>
0012 #include <QSpacerItem>
0013 
0014 #include "app/application.hpp"
0015 #include "io/io_registry.hpp"
0016 
0017 using namespace glaxnimate::gui;
0018 using namespace glaxnimate;
0019 
0020 static std::vector<settings::ClipboardSettings::MimeSettings>& mutable_mime_types()
0021 {
0022     static std::vector<settings::ClipboardSettings::MimeSettings> settings {
0023         {io::IoRegistry::instance().serializer_from_slug("glaxnimate"), true, QIcon(app::Application::instance()->data_file("images/logo.svg"))},
0024         {io::IoRegistry::instance().serializer_from_slug("svg"),        true, QIcon::fromTheme("image-svg+xml")},
0025         {io::IoRegistry::instance().serializer_from_slug("raster"),     true, QIcon::fromTheme("image-png")},
0026         {io::IoRegistry::instance().serializer_from_slug("json"),       false, QIcon::fromTheme("application-json")},
0027     };
0028     return settings;
0029 }
0030 
0031 const std::vector<settings::ClipboardSettings::MimeSettings>& settings::ClipboardSettings::mime_types()
0032 {
0033     return mutable_mime_types();
0034 }
0035 
0036 void settings::ClipboardSettings::load(QSettings & settings)
0037 {
0038     for ( auto& set : mutable_mime_types() )
0039         if ( set.serializer->slug() != "glaxnimate" )
0040             set.enabled = settings.value(set.serializer->slug(), set.enabled).toBool();
0041 }
0042 
0043 void settings::ClipboardSettings::save(QSettings & settings)
0044 {
0045     for ( auto& set : mutable_mime_types() )
0046         if ( set.serializer->slug() != "glaxnimate" )
0047             settings.setValue(set.serializer->slug(), set.enabled);
0048 }
0049 
0050 QWidget * settings::ClipboardSettings::make_widget(QWidget* parent)
0051 {
0052     QWidget* wid = new QWidget(parent);
0053     QVBoxLayout* lay = new QVBoxLayout(wid);
0054     wid->setLayout(lay);
0055 
0056     for ( auto& mt : mutable_mime_types() )
0057     {
0058         QCheckBox* check = new QCheckBox(mt.serializer->name(), parent);
0059         check->setCheckable(true);
0060         check->setChecked(mt.enabled);
0061         check->setIcon(mt.icon);
0062         if ( mt.serializer->slug() == "glaxnimate" )
0063             check->setEnabled(false);
0064         else
0065             QObject::connect(check, &QCheckBox::clicked, [&mt](bool b){ mt.enabled = b; });
0066         lay->addWidget(check);
0067     }
0068 
0069     lay->insertStretch(-1);
0070 
0071     return wid;
0072 }
0073 
0074