quicksettings: Add docked/convergence quick setting

This commit is contained in:
Devin Lin 2023-03-28 23:49:09 -07:00
parent 1070605538
commit fc5b968534
8 changed files with 122 additions and 5 deletions

View file

@ -34,6 +34,7 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
Q_EMIT taskSwitcherPreviewsEnabledChanged();
Q_EMIT actionDrawerTopLeftModeChanged();
Q_EMIT actionDrawerTopRightModeChanged();
Q_EMIT convergenceModeEnabledChanged();
}
});
}
@ -141,3 +142,16 @@ void MobileShellSettings::setActionDrawerTopRightMode(ActionDrawerMode actionDra
group.writeEntry("actionDrawerTopRightMode", (int)actionDrawerMode, KConfigGroup::Notify);
m_config->sync();
}
bool MobileShellSettings::convergenceModeEnabled() const
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
return group.readEntry("convergenceModeEnabled", false);
}
void MobileShellSettings::setConvergenceModeEnabled(bool enabled)
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
group.writeEntry("convergenceModeEnabled", enabled, KConfigGroup::Notify);
m_config->sync();
}

View file

@ -36,6 +36,9 @@ class MobileShellSettings : public QObject
Q_PROPERTY(ActionDrawerMode actionDrawerTopLeftMode READ actionDrawerTopLeftMode WRITE setActionDrawerTopLeftMode NOTIFY actionDrawerTopLeftModeChanged)
Q_PROPERTY(ActionDrawerMode actionDrawerTopRightMode READ actionDrawerTopRightMode WRITE setActionDrawerTopRightMode NOTIFY actionDrawerTopRightModeChanged)
// convergence mode
Q_PROPERTY(bool convergenceModeEnabled READ convergenceModeEnabled WRITE setConvergenceModeEnabled NOTIFY convergenceModeEnabledChanged)
public:
static MobileShellSettings *self();
@ -151,6 +154,18 @@ public:
*/
void setActionDrawerTopRightMode(ActionDrawerMode actionDrawerMode);
/**
* Whether convergence/docked mode is enabled.
*/
bool convergenceModeEnabled() const;
/**
* Set whether convergence/docked mode is enabled.
*
* @param enabled
*/
void setConvergenceModeEnabled(bool enabled);
Q_SIGNALS:
void vibrationsEnabledChanged();
void vibrationIntensityChanged();
@ -161,6 +176,7 @@ Q_SIGNALS:
void taskSwitcherPreviewsEnabledChanged();
void actionDrawerTopLeftModeChanged();
void actionDrawerTopRightModeChanged();
void convergenceModeEnabledChanged();
private:
KConfigWatcher::Ptr m_configWatcher;

View file

@ -4,17 +4,32 @@
import QtQuick
import org.kde.kwin
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
Item {
id: root
function run(client) {
// if (client.output === 0) {
if (!ShellSettings.Settings.convergenceModeEnabled) {
client.setMaximize(true, true);
client.noBorder = true;
// } else {
// client.noBorder = false;
// }
} else {
client.noBorder = false;
}
}
Connections {
target: ShellSettings.Settings
function onConvergenceModeEnabledChanged() {
const clients = Workspace.clients;
for (let i = 0; i < clients.length; i++) {
if (clients[i].normalWindow) {
root.run(clients[i]);
}
}
}
}
Connections {

View file

@ -6,6 +6,7 @@ plasma_install_package(audio org.kde.plasma.quicksetting.audio quicksettings)
plasma_install_package(battery org.kde.plasma.quicksetting.battery quicksettings)
plasma_install_package(bluetooth org.kde.plasma.quicksetting.bluetooth quicksettings)
plasma_install_package(caffeine org.kde.plasma.quicksetting.caffeine quicksettings)
plasma_install_package(docked org.kde.plasma.quicksettings.docked quicksettings)
plasma_install_package(donotdisturb org.kde.plasma.quicksetting.donotdisturb quicksettings)
plasma_install_package(keyboardtoggle org.kde.plasma.quicksetting.keyboardtoggle quicksettings)
plasma_install_package(mobiledata org.kde.plasma.quicksetting.mobiledata quicksettings)

View file

@ -0,0 +1,6 @@
#! /usr/bin/env bash
# SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
# SPDX-License-Identifier: GPL-2.0-or-later
$XGETTEXT `find . -name \*.js -o -name \*.qml -o -name \*.cpp` -o $podir/plasma_org.kde.plasma.quicksetting.docked.pot

View file

@ -0,0 +1,19 @@
// SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
import QtQuick 2.15
import org.kde.plasma.quicksetting.flashlight
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
QS.QuickSetting {
text: i18n("Docked Mode")
icon: "preferences-desktop-display-randr"
enabled: ShellSettings.Settings.convergenceModeEnabled
function toggle() {
ShellSettings.Settings.convergenceModeEnabled = !ShellSettings.Settings.convergenceModeEnabled;
}
}

View file

@ -0,0 +1,47 @@
{
"KPackageStructure": "KPackage/GenericQML",
"KPlugin": {
"Authors": [
{
"Email": "devin@kde.org",
"Name": "Devin Lin",
"Name[az]": "Devin Lin",
"Name[ca@valencia]": "Devin Lin",
"Name[ca]": "Devin Lin",
"Name[cs]": "Devin Lin",
"Name[de]": "Devin Lin",
"Name[en_GB]": "Devin Lin",
"Name[es]": "Devin Lin",
"Name[eu]": "Devin Lin",
"Name[fi]": "Devin Lin",
"Name[fr]": "Devin Lin",
"Name[ia]": "Devin Lin",
"Name[is]": "Devin Lin",
"Name[it]": "Devin Lin",
"Name[ka]": "Devin Lin",
"Name[ko]": "Devin Lin",
"Name[nl]": "Devin Lin",
"Name[nn]": "Devin Lin",
"Name[pa]": "ਡੇਵਿਨ ਲਿਨ",
"Name[pl]": "Devin Lin",
"Name[pt]": "Devin Lin",
"Name[pt_BR]": "Devin Lin",
"Name[ru]": "Devin Lin",
"Name[sl]": "Devin Lin",
"Name[sv]": "Devin Lin",
"Name[tr]": "Devin Lin",
"Name[uk]": "Devin Lin",
"Name[x-test]": "xxDevin Linxx",
"Name[zh_CN]": "Devin Lin"
}
],
"Description": "Quick setting to toggle docked mode for Plasma Mobile",
"Icon": "preferences-desktop-display-randr",
"Id": "org.kde.plasma.quicksetting.docked",
"License": "GPL",
"Name": "Docked Mode",
"Version": "0.1",
"Website": "https://kde.org"
}
}

View file

@ -4,7 +4,6 @@
import QtQuick 2.15
import org.kde.plasma.quicksetting.flashlight 1.0
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
QS.QuickSetting {