// Copyright 2017 Alejandro Sirgo Rica // // This file is part of Flameshot. // // Flameshot is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Flameshot is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Flameshot. If not, see . #include "confighandler.h" #include ConfigHandler::ConfigHandler(QObject *parent) : QObject(parent) { m_settings = new QSettings(this); } QList ConfigHandler::getButtons() { QList buttons = m_settings->value("buttons").value >(); bool modified = normalizeButtons(buttons); if (modified) { m_settings->setValue("buttons", QVariant::fromValue(buttons)); } return fromIntToButton(buttons); } void ConfigHandler::setButtons(const QList &buttons) { QList l = fromButtonToInt(buttons); normalizeButtons(l); m_settings->setValue("buttons", QVariant::fromValue(l)); } QString ConfigHandler::getSavePath() { return m_settings->value("savePath").toString(); } void ConfigHandler::setSavePath(const QString &savePath) { m_settings->setValue("savePath", savePath); } QColor ConfigHandler::getUIMainColor() { return m_settings->value("uiColor").value(); } void ConfigHandler::setUIMainColor(const QColor &c) { m_settings->setValue("uiColor", c); } QColor ConfigHandler::getUIContrastColor() { return m_settings->value("contastUiColor").value(); } void ConfigHandler::setUIContrastColor(const QColor &c) { m_settings->setValue("contastUiColor", c); } QColor ConfigHandler::getDrawColor() { return m_settings->value("drawColor").value(); } void ConfigHandler::setDrawColor(const QColor &c) { m_settings->setValue("drawColor", c); } bool ConfigHandler::getShowHelp() { return m_settings->value("showHelp").toBool(); } void ConfigHandler::setShowHelp(const bool showHelp) { m_settings->setValue("showHelp", showHelp); } bool ConfigHandler::getDesktopNotification() { return m_settings->value("showDesktopNotification").toBool(); } void ConfigHandler::setDesktopNotification(const bool showDesktopNotification) { m_settings->setValue("showDesktopNotification", showDesktopNotification); } QString ConfigHandler::getFilenamePattern() { return m_settings->value("filenamePattern").toString(); } void ConfigHandler::setFilenamePattern(const QString &pattern) { return m_settings->setValue("filenamePattern", pattern); } bool ConfigHandler::initiatedIsSet() { return m_settings->value("initiated").toBool(); } void ConfigHandler::setInitiated() { m_settings->setValue("initiated", true); } void ConfigHandler::setNotInitiated() { m_settings->setValue("initiated", false); } void ConfigHandler::setDefaults() { setShowHelp(true); setDesktopNotification(true); setDrawColor(QColor(Qt::red)); setUIMainColor(QColor(116, 0, 150)); setUIContrastColor(QColor(86, 0, 120)); setAllTheButtons(); } void ConfigHandler::setAllTheButtons() { QList buttons; auto listTypes = CaptureButton::getIterableButtonTypes(); for (CaptureButton::ButtonType t: listTypes) { buttons << static_cast(t); } m_settings->setValue("buttons", QVariant::fromValue(buttons)); } bool ConfigHandler::normalizeButtons(QList &buttons) { auto listTypes = CaptureButton::getIterableButtonTypes(); QList listTypesInt; for(auto i: listTypes) listTypesInt << static_cast(i); bool hasChanged = false; QMutableListIterator i(buttons); while (i.hasNext()) { if (!listTypesInt.contains(i.next())) { i.remove(); hasChanged = true; } } return hasChanged; } QList ConfigHandler::fromIntToButton( const QList &l) { QList buttons; for(auto i: l) buttons << static_cast(i); return buttons; } QList ConfigHandler::fromButtonToInt( const QList &l) { QList buttons; for(auto i: l) buttons << static_cast(i); return buttons; }