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