improve AbstractLayout background infrastructure

--the new infrastructure can remember settings between
CustomBackgroundStyle and ColorStyle in order to
help the user to not have to reassign values
when changing backgrounds, between predefined
colors style and custom one.
pull/12/head
Michail Vourlakos 5 years ago
parent a613bb49ba
commit 72fdf4563b

@ -58,12 +58,20 @@ AbstractLayout::~AbstractLayout()
void AbstractLayout::init()
{
connect(this, &AbstractLayout::backgroundChanged, this, &AbstractLayout::saveConfig);
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::lastUsedActivityChanged, this, &AbstractLayout::saveConfig);
connect(this, &AbstractLayout::launchersChanged, this, &AbstractLayout::saveConfig);
connect(this, &AbstractLayout::preferredForShortcutsTouchedChanged, this, &AbstractLayout::saveConfig);
connect(this, &AbstractLayout::textColorChanged, this, &AbstractLayout::saveConfig);
connect(this, &AbstractLayout::versionChanged, this, &AbstractLayout::saveConfig);
}
@ -101,29 +109,53 @@ void AbstractLayout::setPreferredForShortcutsTouched(bool touched)
QString AbstractLayout::background() const
{
return m_background;
if (m_backgroundStyle == Types::ColorStyle) {
return m_color;
} else {
return m_customBackground;
}
}
void AbstractLayout::setBackground(QString path)
QString AbstractLayout::textColor() const
{
if (path == m_background) {
return;
if (m_backgroundStyle == Types::ColorStyle) {
return predefinedTextColor();
} else {
return m_customTextColor;
}
}
Types::BackgroundStyle AbstractLayout::backgroundStyle() const
{
return m_backgroundStyle;
}
if (!path.isEmpty() && !QFileInfo(path).exists()) {
void AbstractLayout::setBackgroundStyle(const Types::BackgroundStyle &style)
{
if (m_backgroundStyle == style) {
return;
}
m_background = path;
m_backgroundStyle = style;
emit backgroundStyleChanged();
}
//! initialize the text color also
if (path.isEmpty()) {
setTextColor(QString());
}
emit backgroundChanged();
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
{
@ -190,53 +222,57 @@ void AbstractLayout::clearLastUsedActivity()
emit lastUsedActivityChanged();
}
QString AbstractLayout::textColor() const
QString AbstractLayout::predefinedTextColor() const
{
//! the user is in default layout theme
if (m_background.isEmpty()) {
if (m_color == "blue") {
return "#D7E3FF";
} else if (m_color == "brown") {
return "#F1DECB";
} else if (m_color == "darkgrey") {
return "#ECECEC";
} else if (m_color == "gold") {
return "#7C3636";
} else if (m_color == "green") {
return "#4D7549";
} else if (m_color == "lightskyblue") {
return "#0C2A43";
} else if (m_color == "orange") {
return "#6F3902";
} else if (m_color == "pink") {
return "#743C46";
} else if (m_color == "purple") {
return "#ECD9FF";
} else if (m_color == "red") {
return "#F3E4E4";
} else if (m_color == "wheat") {
return "#6A4E25";
} else {
return "#FCFCFC";
}
if (m_color == "blue") {
return "#D7E3FF";
} else if (m_color == "brown") {
return "#F1DECB";
} else if (m_color == "darkgrey") {
return "#ECECEC";
} else if (m_color == "gold") {
return "#7C3636";
} else if (m_color == "green") {
return "#4D7549";
} else if (m_color == "lightskyblue") {
return "#0C2A43";
} else if (m_color == "orange") {
return "#6F3902";
} else if (m_color == "pink") {
return "#743C46";
} else if (m_color == "purple") {
return "#ECD9FF";
} else if (m_color == "red") {
return "#F3E4E4";
} else if (m_color == "wheat") {
return "#6A4E25";
} else {
return "#FCFCFC";
}
}
return "#" + m_textColor;
QString AbstractLayout::customTextColor() const
{
return m_customTextColor;
}
void AbstractLayout::setTextColor(QString color)
void AbstractLayout::setCustomTextColor(const QString &customColor)
{
QString cuColor = customColor;
//! remove # if someone is trying to set it this way
if (color.startsWith("#")) {
color.remove(0, 1);
if (cuColor.startsWith("#")) {
cuColor.remove(0, 1);
}
if (m_textColor == color) {
if (m_customTextColor == cuColor) {
return;
}
m_textColor = color;
emit textColorChanged();
m_customTextColor = cuColor;
emit customTextColorChanged();
}
QStringList AbstractLayout::launchers() const
@ -288,23 +324,29 @@ QString AbstractLayout::layoutName(const QString &fileName)
void AbstractLayout::loadConfig()
{
m_version = m_layoutGroup.readEntry("version", 2);
m_color = m_layoutGroup.readEntry("color", QString("blue"));
m_textColor = m_layoutGroup.readEntry("textColor", QString("fcfcfc"));
m_launchers = m_layoutGroup.readEntry("launchers", QStringList());
m_lastUsedActivity = m_layoutGroup.readEntry("lastUsedActivity", QString());
m_preferredForShortcutsTouched = m_layoutGroup.readEntry("preferredForShortcutsTouched", false);
QString back = m_layoutGroup.readEntry("background", "");
m_color = m_layoutGroup.readEntry("color", QString("blue"));
m_backgroundStyle = static_cast<Types::BackgroundStyle>(m_layoutGroup.readEntry("backgroundStyle", (int)Types::ColorStyle));
if (!back.isEmpty()) {
if (QFileInfo(back).exists()) {
m_background = back;
} else {
m_layoutGroup.writeEntry("background", QString());
}
}
QString deprecatedTextColor = m_layoutGroup.readEntry("textColor", QString("fcfcfc"));
QString deprecatedBackground = m_layoutGroup.readEntry("background", QString());
if (deprecatedBackground.startsWith("/")) {
m_customBackground = deprecatedBackground;
m_customTextColor = deprecatedTextColor;
setBackgroundStyle(Types::CustomBackgroundStyle);
// emit activitiesChanged();*/
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("fcfcfc"));
}
}
void AbstractLayout::saveConfig()
@ -313,9 +355,10 @@ void AbstractLayout::saveConfig()
m_layoutGroup.writeEntry("version", m_version);
m_layoutGroup.writeEntry("color", m_color);
m_layoutGroup.writeEntry("launchers", m_launchers);
m_layoutGroup.writeEntry("background", m_background);
m_layoutGroup.writeEntry("backgroundStyle", (int)m_backgroundStyle);
m_layoutGroup.writeEntry("customBackground", m_customBackground);
m_layoutGroup.writeEntry("customTextColor", m_customTextColor);
m_layoutGroup.writeEntry("lastUsedActivity", m_lastUsedActivity);
m_layoutGroup.writeEntry("textColor", m_textColor);
m_layoutGroup.writeEntry("preferredForShortcutsTouched", m_preferredForShortcutsTouched);
m_layoutGroup.sync();

@ -20,6 +20,9 @@
#ifndef ABSTRACTLAYOUT_H
#define ABSTRACTLAYOUT_H
// local
#include "../../liblatte2/types.h"
// Qt
#include <QObject>
@ -59,11 +62,10 @@ class AbstractLayout : public QObject
Q_PROPERTY(bool preferredForShortcutsTouched READ preferredForShortcutsTouched WRITE setPreferredForShortcutsTouched NOTIFY preferredForShortcutsTouchedChanged)
Q_PROPERTY(QString background READ background NOTIFY backgroundChanged)
Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)
Q_PROPERTY(QString lastUsedActivity READ lastUsedActivity NOTIFY lastUsedActivityChanged)
Q_PROPERTY(QString textColor READ textColor NOTIFY textColorChanged)
Q_PROPERTY(QStringList launchers READ launchers WRITE setLaunchers NOTIFY launchersChanged)
Q_PROPERTY(QString lastUsedActivity READ lastUsedActivity NOTIFY lastUsedActivityChanged)
public:
AbstractLayout(QObject *parent, QString layoutFile, QString assignedName = QString());
@ -84,14 +86,24 @@ public:
QString file() const;
QString background() const;
void setBackground(QString path);
QString color() const;
void setColor(QString color);
QString customBackground() const;
void setCustomBackground(const QString &background);
QString customTextColor() const;
void setCustomTextColor(const QString &customColor);
QString predefinedTextColor() const;
QString textColor() const;
void setTextColor(QString color);
Types::BackgroundStyle backgroundStyle() const;
void setBackgroundStyle(const Types::BackgroundStyle &style);
QStringList launchers() const;
void setLaunchers(QStringList launcherList);
@ -104,6 +116,9 @@ public:
signals:
void backgroundChanged();
void backgroundStyleChanged();
void customBackgroundChanged();
void customTextColorChanged();
void colorChanged();
void fileChanged();
void lastUsedActivityChanged();
@ -129,11 +144,13 @@ protected:
//if version doesn't exist it is and old layout file
int m_version{2};
QString m_background;
QString m_customBackground;
QString m_customTextColor;
QString m_color;
QString m_lastUsedActivity; //the last used activity for this layout
QString m_textColor;
Types::BackgroundStyle m_backgroundStyle{Types::ColorStyle};
QString m_layoutFile;
QString m_layoutName;
@ -141,6 +158,7 @@ protected:
QStringList m_launchers;
KConfigGroup m_layoutGroup;
};
}

@ -692,7 +692,7 @@ void Layouts::save()
generic->unlock();
}
if (iLayoutCurrentData.color.startsWith("/")) {
/* if (iLayoutCurrentData.color.startsWith("/")) {
//it is image file in such case
if (iLayoutCurrentData.color != generic->background()) {
generic->setBackground(iLayoutCurrentData.color);
@ -707,7 +707,7 @@ void Layouts::save()
generic->setBackground(QString());
generic->setTextColor(QString());
}
}
}*/
//! update only the Central-specific layout parts
CentralLayout *centralActive = isOriginalLayout ? m_handler->corona()->layoutsManager()->synchronizer()->centralLayout(iLayoutOriginalData.name) : nullptr;

@ -439,7 +439,7 @@ QVariant Layouts::data(const QModelIndex &index, int role) const
}
if (role == Qt::UserRole) {
return m_layoutsTable[row].background.isEmpty() ? m_layoutsTable[row].color : m_layoutsTable[row].background;
return m_layoutsTable[row].background;
}
break;
case NAMECOLUMN:

@ -128,7 +128,7 @@ Item{
opacity: 0
fillMode: Image.Tile
source: hasBackground ? latteView.layout.background : "../../icons/"+editVisual.layoutColor+"print.jpg"
source: hasBackground ? latteView.layout.background : "../../icons/"+latteView.layout.background+"print.jpg"
readonly property bool hasBackground: (latteView && latteView.layout && latteView.layout.background.startsWith("/")) ?
true : false

@ -251,6 +251,13 @@ public:
Installed = 4
};
Q_ENUM(ImportExportState);
enum BackgroundStyle
{
ColorStyle = 0,
CustomBackgroundStyle
};
Q_ENUM(BackgroundStyle);
};
}//end of namespace

Loading…
Cancel
Save