Commit 2aaf5fca authored by Devin Lin's avatar Devin Lin 🎨
Browse files

navigationpanel: Add force keyboard toggle, and add setting

parent a2170b4b
Pipeline #230635 passed with stage
in 1 minute and 5 seconds
......@@ -31,6 +31,7 @@ MobileShellSettings::MobileShellSettings(QObject *parent)
Q_EMIT vibrationDurationChanged();
Q_EMIT animationsEnabledChanged();
Q_EMIT navigationPanelEnabledChanged();
Q_EMIT keyboardButtonEnabledChanged();
Q_EMIT taskSwitcherPreviewsEnabledChanged();
Q_EMIT actionDrawerTopLeftModeChanged();
Q_EMIT actionDrawerTopRightModeChanged();
......@@ -106,6 +107,19 @@ void MobileShellSettings::setNavigationPanelEnabled(bool navigationPanelEnabled)
m_config->sync();
}
bool MobileShellSettings::keyboardButtonEnabled() const
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
return group.readEntry("keyboardButtonEnabled", false);
}
void MobileShellSettings::setKeyboardButtonEnabled(bool keyboardButtonEnabled)
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
group.writeEntry("keyboardButtonEnabled", keyboardButtonEnabled, KConfigGroup::Notify);
m_config->sync();
}
bool MobileShellSettings::taskSwitcherPreviewsEnabled() const
{
auto group = KConfigGroup{m_config, GENERAL_CONFIG_GROUP};
......
......@@ -28,6 +28,7 @@ class MobileShellSettings : public QObject
// navigation panel
Q_PROPERTY(bool navigationPanelEnabled READ navigationPanelEnabled WRITE setNavigationPanelEnabled NOTIFY navigationPanelEnabledChanged)
Q_PROPERTY(bool keyboardButtonEnabled READ keyboardButtonEnabled WRITE setKeyboardButtonEnabled NOTIFY keyboardButtonEnabledChanged)
// task switcher
Q_PROPERTY(bool taskSwitcherPreviewsEnabled READ taskSwitcherPreviewsEnabled WRITE setTaskSwitcherPreviewsEnabled NOTIFY taskSwitcherPreviewsEnabledChanged)
......@@ -115,6 +116,18 @@ public:
*/
void setNavigationPanelEnabled(bool navigationPanelEnabled);
/**
* Whether the keyboard toggle button on the navigation panel is enabled.
*/
bool keyboardButtonEnabled() const;
/**
* Set whether the keyboard toggle button on the navigation panel is enabled.
*
* @param keyboardButtonEnabled Whether the keyboard button on the navigation panel should be enabled.
*/
void setKeyboardButtonEnabled(bool keyboardButtonEnabled);
/**
* Whether task switcher application previews are enabled.
*/
......@@ -180,6 +193,7 @@ Q_SIGNALS:
void vibrationIntensityChanged();
void vibrationDurationChanged();
void navigationPanelEnabledChanged();
void keyboardButtonEnabledChanged();
void animationsEnabledChanged();
void taskSwitcherPreviewsEnabledChanged();
void actionDrawerTopLeftModeChanged();
......
......@@ -31,6 +31,9 @@ Item {
property NavigationPanelAction middleAction
property NavigationPanelAction rightAction
property NavigationPanelAction leftCornerAction
property NavigationPanelAction rightCornerAction
DropShadow {
anchors.fill: mouseArea
visible: shadow
......@@ -124,6 +127,7 @@ Item {
// button row (anchors provided by state)
NavigationPanelButton {
id: leftButton
visible: root.leftAction.visible
mouseArea: mouseArea
colorGroup: root.foregroundColorGroup
enabled: root.leftAction.enabled
......@@ -139,6 +143,7 @@ Item {
NavigationPanelButton {
id: middleButton
anchors.centerIn: parent
visible: root.middleAction.visible
mouseArea: mouseArea
colorGroup: root.foregroundColorGroup
enabled: root.middleAction.enabled
......@@ -153,6 +158,7 @@ Item {
NavigationPanelButton {
id: rightButton
visible: root.rightAction.visible
mouseArea: mouseArea
colorGroup: root.foregroundColorGroup
enabled: root.rightAction.enabled
......@@ -164,6 +170,21 @@ Item {
}
}
}
NavigationPanelButton {
id: rightCornerButton
visible: root.rightCornerAction.visible
mouseArea: mouseArea
colorGroup: root.foregroundColorGroup
enabled: root.rightCornerButton.enabled
iconSizeFactor: root.rightCornerAction.iconSizeFactor
iconSource: root.rightCornerAction.iconSource
onClicked: {
if (enabled) {
root.rightCornerAction.triggered();
}
}
}
}
}
......@@ -173,7 +194,7 @@ Item {
when: root.width < root.height
PropertyChanges {
target: icons
buttonLength: Math.min(PlasmaCore.Units.gridUnit * 10, icons.height * 0.8 / 3)
buttonLength: Math.min(PlasmaCore.Units.gridUnit * 10, icons.height * 0.7 / 3)
}
AnchorChanges {
target: leftButton
......@@ -204,12 +225,24 @@ Item {
height: icons.buttonLength
width: icons.width
}
AnchorChanges {
target: rightCornerButton
anchors {
horizontalCenter: parent.horizontalCenter
top: parent.top
}
}
PropertyChanges {
target: rightCornerButton
height: PlasmaCore.Units.gridUnit * 2
width: icons.width
}
}, State {
name: "portrait"
when: root.width >= root.height
PropertyChanges {
target: icons
buttonLength: Math.min(PlasmaCore.Units.gridUnit * 8, icons.width * 0.8 / 3)
buttonLength: Math.min(PlasmaCore.Units.gridUnit * 8, icons.width * 0.7 / 3)
}
AnchorChanges {
target: leftButton
......@@ -240,6 +273,18 @@ Item {
height: parent.height
width: icons.buttonLength
}
AnchorChanges {
target: rightCornerButton
anchors {
verticalCenter: parent.verticalCenter
right: parent.right
}
}
PropertyChanges {
target: rightCornerButton
height: parent.height
width: PlasmaCore.Units.gridUnit * 2
}
}
]
}
......@@ -8,6 +8,7 @@ import QtQuick 2.15
QtObject {
property bool enabled
property bool visible: true
property string iconSource
property real iconSizeFactor
......
......@@ -104,4 +104,20 @@ MobileShell.NavigationPanel {
}
}
}
rightCornerAction: MobileShell.NavigationPanelAction {
id: keyboardToggleAction
visible: MobileShell.MobileShellSettings.keyboardButtonEnabled
enabled: Keyboards.KWinVirtualKeyboard.available
iconSource: "input-keyboard-virtual-symbolic"
iconSizeFactor: 0.75
onTriggered: {
if (Keyboards.KWinVirtualKeyboard.visible) {
Keyboards.KWinVirtualKeyboard.active = false;
} else {
Keyboards.KWinVirtualKeyboard.forceActivate();
}
}
}
}
......@@ -70,6 +70,7 @@ KCM.SimpleKCM {
}
MobileForm.FormSwitchDelegate {
id: gestureDelegate
text: i18n("Gesture-only Mode")
description: i18n("Whether to hide the navigation panel.")
checked: !MobileShell.MobileShellSettings.navigationPanelEnabled
......@@ -79,6 +80,25 @@ KCM.SimpleKCM {
}
}
}
MobileForm.FormDelegateSeparator {
visible: MobileShell.MobileShellSettings.navigationPanelEnabled
above: gestureDelegate
below: keyboardButtonDelegate
}
MobileForm.FormSwitchDelegate {
id: keyboardButtonDelegate
visible: MobileShell.MobileShellSettings.navigationPanelEnabled
text: i18n("Keyboard Toggle")
description: i18n("Whether to show a keyboard button on the navigation panel.")
checked: MobileShell.MobileShellSettings.keyboardButtonEnabled
onCheckedChanged: {
if (checked != MobileShell.MobileShellSettings.keyboardButtonEnabled) {
MobileShell.MobileShellSettings.keyboardButtonEnabled = checked;
}
}
}
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment