Skip to content

Commit

Permalink
settings: provide accent-color settings
Browse files Browse the repository at this point in the history
  • Loading branch information
easyteacher committed Sep 3, 2023
1 parent 756b941 commit 455ceca
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
24 changes: 20 additions & 4 deletions src/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ void SettingsPortal::ReadAll(const QStringList &groups)
if (groupMatches(QStringLiteral("org.freedesktop.appearance"), groups)) {
QVariantMap appearanceSettings;
appearanceSettings.insert(QStringLiteral("color-scheme"), readFdoColorScheme().variant());
appearanceSettings.insert(QStringLiteral("accent-color"), readAccentColor().variant());

result.insert(QStringLiteral("org.freedesktop.appearance"), appearanceSettings);
}
Expand Down Expand Up @@ -148,10 +149,16 @@ void SettingsPortal::Read(const QString &group, const QString &key)
QDBusMessage reply;
QDBusMessage message = q_ptr->message();

if (group == QLatin1String("org.freedesktop.appearance") && key == QLatin1String("color-scheme")) {
reply = message.createReply(QVariant::fromValue(readFdoColorScheme()));
QDBusConnection::sessionBus().send(reply);
return;
if (group == QLatin1String("org.freedesktop.appearance")) {
if (key == QLatin1String("color-scheme")) {
reply = message.createReply(QVariant::fromValue(readFdoColorScheme()));
QDBusConnection::sessionBus().send(reply);
return;
} else if (key == QLatin1String("accent-color")) {
reply = message.createReply(QVariant::fromValue(readAccentColor()));
QDBusConnection::sessionBus().send(reply);
return;
}
}
// All other namespaces start with this prefix
else if (!group.startsWith(QStringLiteral("org.kde.kdeglobals"))) {
Expand Down Expand Up @@ -192,6 +199,9 @@ void SettingsPortal::globalSettingChanged(int type, int arg)
readProperty(QStringLiteral("org.kde.kdeglobals.General"), QStringLiteral("ColorScheme")));

Q_EMIT SettingChanged(QStringLiteral("org.freedesktop.appearance"), QStringLiteral("color-scheme"), readFdoColorScheme());

// https://github.com/flatpak/xdg-desktop-portal/pull/815
Q_EMIT SettingChanged(QStringLiteral("org.freedesktop.appearance"), QStringLiteral("accent-color"), readAccentColor());
break;
case FontChanged:
fontChanged();
Expand Down Expand Up @@ -270,3 +280,9 @@ QDBusVariant SettingsPortal::readFdoColorScheme()

return QDBusVariant(result);
}

QDBusVariant SettingsPortal::readAccentColor() const
{
const QColor accentColor = qGuiApp->palette().highlight().color();
return QDBusVariant(QVariantList{accentColor.redF(), accentColor.greenF(), accentColor.blueF()});
}
7 changes: 7 additions & 0 deletions src/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@ private Q_SLOTS:

private:
QDBusVariant readProperty(const QString &group, const QString &key);

/**
* Returns a list that contains redF, blueF and greenF and represents
* the current accent color.
* Format: (ddd)
*/
QDBusVariant readAccentColor() const;
QDBusVariant readFdoColorScheme();

KSharedConfigPtr m_kdeglobals;
Expand Down

0 comments on commit 455ceca

Please sign in to comment.