/* * Copyright 2019 Michail Vourlakos * * This file is part of Latte-Dock * * Latte-Dock 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 2 of * the License, or (at your option) any later version. * * Latte-Dock 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 this program. If not, see . */ #include "abstractlayout.h" // Qt #include #include #include // KDE #include namespace Latte { namespace Layout { AbstractLayout::AbstractLayout(QObject *parent, QString layoutFile, QString assignedName) : QObject(parent) { qDebug() << "Layout file to create object: " << layoutFile << " with name: " << assignedName; if (QFile(layoutFile).exists()) { if (assignedName.isEmpty()) { assignedName = layoutName(layoutFile); } //!this order is important because setFile initializes also the m_layoutGroup setFile(layoutFile); setName(assignedName); loadConfig(); init(); m_loadedCorrectly = true; } } AbstractLayout::~AbstractLayout() { } void AbstractLayout::init() { connect(this, &AbstractLayout::backgroundStyleChanged, this, &AbstractLayout::backgroundChanged); connect(this, &AbstractLayout::backgroundStyleChanged, this, &AbstractLayout::textColorChanged); connect(this, &AbstractLayout::customBackgroundChanged, this, &AbstractLayout::backgroundChanged); connect(this, &AbstractLayout::customTextColorChanged, this, &AbstractLayout::textColorChanged); connect(this, &AbstractLayout::colorChanged, this, &AbstractLayout::backgroundChanged); connect(this, &AbstractLayout::colorChanged, this, &AbstractLayout::textColorChanged); connect(this, &AbstractLayout::customBackgroundChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::customTextColorChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::colorChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::iconChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::lastUsedActivityChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::launchersChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::preferredForShortcutsTouchedChanged, this, &AbstractLayout::saveConfig); connect(this, &AbstractLayout::versionChanged, this, &AbstractLayout::saveConfig); } int AbstractLayout::version() const { return m_version; } void AbstractLayout::setVersion(int ver) { if (m_version == ver) { return; } m_version = ver; emit versionChanged(); } bool AbstractLayout::preferredForShortcutsTouched() const { return m_preferredForShortcutsTouched; } void AbstractLayout::setPreferredForShortcutsTouched(bool touched) { if (m_preferredForShortcutsTouched == touched) { return; } m_preferredForShortcutsTouched = touched; emit preferredForShortcutsTouchedChanged(); } QString AbstractLayout::background() const { if (m_backgroundStyle == ColorBackgroundStyle) { return m_color; } else { return m_customBackground; } } QString AbstractLayout::textColor() const { if (m_backgroundStyle == ColorBackgroundStyle) { return predefinedTextColor(); } else { return m_customTextColor; } } BackgroundStyle AbstractLayout::backgroundStyle() const { return m_backgroundStyle; } void AbstractLayout::setBackgroundStyle(const BackgroundStyle &style) { if (m_backgroundStyle == style) { return; } m_backgroundStyle = style; emit backgroundStyleChanged(); } QString AbstractLayout::customBackground() const { return m_customBackground; } void AbstractLayout::setCustomBackground(const QString &background) { if (m_customBackground == background) { return; } m_customBackground = background; emit customBackgroundChanged(); } QString AbstractLayout::file() const { return m_layoutFile; } void AbstractLayout::setFile(QString file) { if (m_layoutFile == file) { return; } qDebug() << "Layout file:" << file; m_layoutFile = file; KSharedConfigPtr filePtr = KSharedConfig::openConfig(m_layoutFile); m_layoutGroup = KConfigGroup(filePtr, "LayoutSettings"); emit fileChanged(); } QString AbstractLayout::name() const { return m_layoutName; } void AbstractLayout::setName(QString name) { if (m_layoutName == name) { return; } qDebug() << "Layout name:" << name; m_layoutName = name; emit nameChanged(); } QString AbstractLayout::color() const { return m_color; } void AbstractLayout::setColor(QString color) { if (m_color == color) { return; } m_color = color; emit colorChanged(); } QString AbstractLayout::icon() const { return m_icon; } void AbstractLayout::setIcon(const QString &icon) { if (m_icon == icon) { return; } m_icon = icon; emit iconChanged(); } QString AbstractLayout::lastUsedActivity() const { return m_lastUsedActivity; } void AbstractLayout::clearLastUsedActivity() { m_lastUsedActivity = ""; emit lastUsedActivityChanged(); } QString AbstractLayout::defaultCustomTextColor() { return "#3C1C00"; } QString AbstractLayout::defaultCustomBackground() { return "defaultcustom"; } QString AbstractLayout::defaultTextColor(const QString &color) { //! the user is in default layout theme if (color == "blue") { return "#D7E3FF"; } else if (color == "brown") { return "#F1DECB"; } else if (color == "darkgrey") { return "#ECECEC"; } else if (color == "gold") { return "#7C3636"; } else if (color == "green") { return "#4D7549"; } else if (color == "lightskyblue") { return "#0C2A43"; } else if (color == "orange") { return "#6F3902"; } else if (color == "pink") { return "#743C46"; } else if (color == "purple") { return "#ECD9FF"; } else if (color == "red") { return "#F3E4E4"; } else if (color == "wheat") { return "#6A4E25"; } else { return "#FCFCFC"; } } QString AbstractLayout::predefinedTextColor() const { return AbstractLayout::defaultTextColor(m_color); } QString AbstractLayout::customTextColor() const { return m_customTextColor; } void AbstractLayout::setCustomTextColor(const QString &customColor) { if (m_customTextColor == customColor) { return; } m_customTextColor = customColor; emit customTextColorChanged(); } QStringList AbstractLayout::launchers() const { return m_launchers; } void AbstractLayout::setLaunchers(QStringList launcherList) { if (m_launchers == launcherList) return; m_launchers = launcherList; emit launchersChanged(); } Type AbstractLayout::type() const { return Type::Abstract; } QList combinedFreeEdges(const QList &edges1, const QList &edges2) { QList validFreeEdges; for (int i=0; i(m_layoutGroup.readEntry("backgroundStyle", (int)ColorBackgroundStyle)); QString deprecatedTextColor = m_layoutGroup.readEntry("textColor", QString()); QString deprecatedBackground = m_layoutGroup.readEntry("background", QString()); if (deprecatedBackground.startsWith("/")) { m_customBackground = deprecatedBackground; m_customTextColor = deprecatedTextColor; setBackgroundStyle(PatternBackgroundStyle); m_layoutGroup.writeEntry("background", QString()); m_layoutGroup.writeEntry("textColor", QString()); saveConfig(); } else { m_customBackground = m_layoutGroup.readEntry("customBackground", QString()); m_customTextColor = m_layoutGroup.readEntry("customTextColor", QString()); } m_icon = m_layoutGroup.readEntry("icon", QString()); } void AbstractLayout::saveConfig() { qDebug() << "abstract layout is saving... for layout:" << m_layoutName; m_layoutGroup.writeEntry("version", m_version); m_layoutGroup.writeEntry("color", m_color); m_layoutGroup.writeEntry("launchers", m_launchers); m_layoutGroup.writeEntry("backgroundStyle", (int)m_backgroundStyle); m_layoutGroup.writeEntry("customBackground", m_customBackground); m_layoutGroup.writeEntry("customTextColor", m_customTextColor); m_layoutGroup.writeEntry("icon", m_icon); m_layoutGroup.writeEntry("lastUsedActivity", m_lastUsedActivity); m_layoutGroup.writeEntry("preferredForShortcutsTouched", m_preferredForShortcutsTouched); m_layoutGroup.sync(); } } }