mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-07-26 06:14:45 +00:00
initialstart: Add dark mode switch
This commit is contained in:
parent
7fd6a1a8a7
commit
0347ac1453
6 changed files with 82 additions and 0 deletions
|
|
@ -9,6 +9,8 @@ set(prepareplugin_SRCS
|
||||||
${DBUS_SRCS}
|
${DBUS_SRCS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
kconfig_add_kcfg_files(prepareplugin_SRCS colorssettings.kcfgc GENERATE_MOC)
|
||||||
|
|
||||||
add_library(prepareplugin ${prepareplugin_SRCS})
|
add_library(prepareplugin ${prepareplugin_SRCS})
|
||||||
|
|
||||||
target_link_libraries(prepareplugin
|
target_link_libraries(prepareplugin
|
||||||
|
|
|
||||||
25
initialstart/modules/prepare/colorssettings.kcfg
Normal file
25
initialstart/modules/prepare/colorssettings.kcfg
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
|
||||||
|
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
|
||||||
|
<kcfgfile name="kdeglobals"/>
|
||||||
|
<group name="General">
|
||||||
|
<entry name="colorScheme" key="ColorScheme" type="String">
|
||||||
|
<label>Color scheme name</label>
|
||||||
|
<default>BreezeLight</default>
|
||||||
|
</entry>
|
||||||
|
<entry name="accentColor" key="AccentColor" type="Color">
|
||||||
|
<label>Accent color</label>
|
||||||
|
<default>transparent</default>
|
||||||
|
</entry>
|
||||||
|
<entry name="lastUsedCustomAccentColor" key="LastUsedCustomAccentColor" type="Color">
|
||||||
|
<label>The last used custom accent color before user switched to wallpaper generated color or default color</label>
|
||||||
|
<default>transparent</default>
|
||||||
|
</entry>
|
||||||
|
<entry name="accentColorFromWallpaper" key="accentColorFromWallpaper" type="Bool">
|
||||||
|
<label>Whether accent color from wallpaper should be applied</label>
|
||||||
|
<default>false</default>
|
||||||
|
</entry>
|
||||||
|
</group>
|
||||||
|
</kcfg>
|
||||||
7
initialstart/modules/prepare/colorssettings.kcfgc
Normal file
7
initialstart/modules/prepare/colorssettings.kcfgc
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
File=colorssettings.kcfg
|
||||||
|
ClassName=ColorsSettings
|
||||||
|
Mutators=true
|
||||||
|
DefaultValueGetters=true
|
||||||
|
GenerateProperties=true
|
||||||
|
ParentInConstructor=true
|
||||||
|
Notifiers=true
|
||||||
|
|
@ -113,6 +113,24 @@ Item {
|
||||||
onCurrentValueChanged: Prepare.PrepareUtil.scaling = parseInt(currentValue.substring(0, currentValue.length - 1));
|
onCurrentValueChanged: Prepare.PrepareUtil.scaling = parseInt(currentValue.substring(0, currentValue.length - 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FormCard.FormCard {
|
||||||
|
id: darkThemeCard
|
||||||
|
maximumWidth: root.cardWidth
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
|
||||||
|
|
||||||
|
FormCard.FormSwitchDelegate {
|
||||||
|
id: darkThemeSwitch
|
||||||
|
text: i18n("Dark Theme")
|
||||||
|
checked: Prepare.PrepareUtil.usingDarkTheme
|
||||||
|
onCheckedChanged: {
|
||||||
|
if (checked !== Prepare.PrepareUtil.usingDarkTheme) {
|
||||||
|
Prepare.PrepareUtil.usingDarkTheme = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
PrepareUtil::PrepareUtil(QObject *parent)
|
PrepareUtil::PrepareUtil(QObject *parent)
|
||||||
: QObject{parent}
|
: QObject{parent}
|
||||||
|
, m_colorsSettings{new ColorsSettings(this)}
|
||||||
{
|
{
|
||||||
m_brightnessInterface =
|
m_brightnessInterface =
|
||||||
new org::kde::Solid::PowerManagement::Actions::BrightnessControl(QStringLiteral("org.kde.Solid.PowerManagement"),
|
new org::kde::Solid::PowerManagement::Actions::BrightnessControl(QStringLiteral("org.kde.Solid.PowerManagement"),
|
||||||
|
|
@ -57,6 +58,9 @@ PrepareUtil::PrepareUtil(QObject *parent)
|
||||||
connect(m_brightnessInterfaceWatcher, &QDBusServiceWatcher::serviceUnregistered, this, [this]() -> void {
|
connect(m_brightnessInterfaceWatcher, &QDBusServiceWatcher::serviceUnregistered, this, [this]() -> void {
|
||||||
Q_EMIT brightnessAvailableChanged();
|
Q_EMIT brightnessAvailableChanged();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// set property initially
|
||||||
|
m_usingDarkTheme = m_colorsSettings->colorScheme() == "BreezeDark";
|
||||||
}
|
}
|
||||||
|
|
||||||
int PrepareUtil::scaling() const
|
int PrepareUtil::scaling() const
|
||||||
|
|
@ -109,6 +113,24 @@ bool PrepareUtil::brightnessAvailable() const
|
||||||
return m_brightnessInterface->isValid();
|
return m_brightnessInterface->isValid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PrepareUtil::usingDarkTheme() const
|
||||||
|
{
|
||||||
|
return m_usingDarkTheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrepareUtil::setUsingDarkTheme(bool usingDarkTheme)
|
||||||
|
{
|
||||||
|
// use plasma-apply-colorscheme since it has logic for notifying the shell of changes
|
||||||
|
if (usingDarkTheme) {
|
||||||
|
QProcess::execute("plasma-apply-colorscheme", {QStringLiteral("BreezeDark")});
|
||||||
|
} else {
|
||||||
|
QProcess::execute("plasma-apply-colorscheme", {QStringLiteral("BreezeLight")});
|
||||||
|
}
|
||||||
|
|
||||||
|
m_usingDarkTheme = usingDarkTheme;
|
||||||
|
Q_EMIT usingDarkThemeChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void PrepareUtil::fetchBrightness()
|
void PrepareUtil::fetchBrightness()
|
||||||
{
|
{
|
||||||
QDBusPendingReply<int> reply = m_brightnessInterface->brightness();
|
QDBusPendingReply<int> reply = m_brightnessInterface->brightness();
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
#include <kscreen/config.h>
|
#include <kscreen/config.h>
|
||||||
|
|
||||||
#include "brightnesscontrolinterface.h"
|
#include "brightnesscontrolinterface.h"
|
||||||
|
#include "colorssettings.h"
|
||||||
|
|
||||||
class PrepareUtil : public QObject
|
class PrepareUtil : public QObject
|
||||||
{
|
{
|
||||||
|
|
@ -18,6 +19,7 @@ class PrepareUtil : public QObject
|
||||||
Q_PROPERTY(int brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged);
|
Q_PROPERTY(int brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged);
|
||||||
Q_PROPERTY(int maxBrightness READ maxBrightness NOTIFY maxBrightnessChanged)
|
Q_PROPERTY(int maxBrightness READ maxBrightness NOTIFY maxBrightnessChanged)
|
||||||
Q_PROPERTY(bool brightnessAvailable READ brightnessAvailable NOTIFY brightnessAvailableChanged)
|
Q_PROPERTY(bool brightnessAvailable READ brightnessAvailable NOTIFY brightnessAvailableChanged)
|
||||||
|
Q_PROPERTY(bool usingDarkTheme READ usingDarkTheme WRITE setUsingDarkTheme NOTIFY usingDarkThemeChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PrepareUtil(QObject *parent = nullptr);
|
PrepareUtil(QObject *parent = nullptr);
|
||||||
|
|
@ -34,11 +36,15 @@ public:
|
||||||
|
|
||||||
bool brightnessAvailable() const;
|
bool brightnessAvailable() const;
|
||||||
|
|
||||||
|
bool usingDarkTheme() const;
|
||||||
|
void setUsingDarkTheme(bool usingDarkTheme);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void scalingChanged();
|
void scalingChanged();
|
||||||
void brightnessChanged();
|
void brightnessChanged();
|
||||||
void maxBrightnessChanged();
|
void maxBrightnessChanged();
|
||||||
void brightnessAvailableChanged();
|
void brightnessAvailableChanged();
|
||||||
|
void usingDarkThemeChanged();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void fetchBrightness();
|
void fetchBrightness();
|
||||||
|
|
@ -48,7 +54,9 @@ private:
|
||||||
int m_scaling;
|
int m_scaling;
|
||||||
int m_brightness;
|
int m_brightness;
|
||||||
int m_maxBrightness;
|
int m_maxBrightness;
|
||||||
|
bool m_usingDarkTheme;
|
||||||
|
|
||||||
|
ColorsSettings *m_colorsSettings;
|
||||||
KScreen::ConfigPtr m_config;
|
KScreen::ConfigPtr m_config;
|
||||||
org::kde::Solid::PowerManagement::Actions::BrightnessControl *m_brightnessInterface;
|
org::kde::Solid::PowerManagement::Actions::BrightnessControl *m_brightnessInterface;
|
||||||
QDBusServiceWatcher *m_brightnessInterfaceWatcher;
|
QDBusServiceWatcher *m_brightnessInterfaceWatcher;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue