initialstart: Add system navigation module

Add a module to initialstart that allows users to select the type of
system navigation they would like (gesture or button).
This commit is contained in:
Devin Lin 2025-03-05 11:27:14 -05:00
parent 88462a3b4b
commit 6c1622cf6a
4 changed files with 156 additions and 0 deletions

View file

@ -2,6 +2,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
plasma_install_package(finished org.kde.plasma.mobileinitialstart.finished mobileinitialstart) plasma_install_package(finished org.kde.plasma.mobileinitialstart.finished mobileinitialstart)
plasma_install_package(systemnavigation org.kde.plasma.mobileinitialstart.systemnavigation mobileinitialstart)
add_subdirectory(cellular) add_subdirectory(cellular)
add_subdirectory(prepare) add_subdirectory(prepare)
add_subdirectory(time) add_subdirectory(time)

View file

@ -0,0 +1,101 @@
// SPDX-FileCopyrightText: 2025 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.plasma.mobileinitialstart.initialstart
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
InitialStartModule {
name: i18n("System Navigation")
contentItem: Item {
id: root
readonly property real cardWidth: Math.min(Kirigami.Units.gridUnit * 30, root.width - Kirigami.Units.gridUnit * 2)
ColumnLayout {
anchors {
fill: parent
topMargin: Kirigami.Units.gridUnit
bottomMargin: Kirigami.Units.gridUnit
}
width: root.width
spacing: 0
Label {
Layout.leftMargin: Kirigami.Units.gridUnit
Layout.rightMargin: Kirigami.Units.gridUnit
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true
wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
text: i18n("Choose a method to navigate around the system.")
}
FormCard.FormCard {
maximumWidth: root.cardWidth
Layout.topMargin: Kirigami.Units.gridUnit
Layout.fillWidth: true
FormCard.FormRadioDelegate {
text: i18n("Gesture navigation")
description: i18n("Swipe up from the bottom to see running applications. Flick to go to the home screen.")
onClicked: {
if (checked && ShellSettings.Settings.navigationPanelEnabled) {
ShellSettings.Settings.navigationPanelEnabled = false;
}
checked = Qt.binding(function () { return !ShellSettings.Settings.navigationPanelEnabled; });
}
Binding on checked {
value: !ShellSettings.Settings.navigationPanelEnabled
}
}
}
FormCard.FormCard {
maximumWidth: root.cardWidth
Layout.topMargin: Kirigami.Units.largeSpacing
Layout.fillWidth: true
FormCard.FormRadioDelegate {
text: i18n("Button navigation")
description: i18n("Use buttons on a navigation bar to navigate the system.")
onClicked: {
if (checked && !ShellSettings.Settings.navigationPanelEnabled) {
ShellSettings.Settings.navigationPanelEnabled = true;
}
checked = Qt.binding(function () { return ShellSettings.Settings.navigationPanelEnabled; });
}
Binding on checked {
value: ShellSettings.Settings.navigationPanelEnabled
}
}
}
Label {
Layout.topMargin: Kirigami.Units.gridUnit
Layout.leftMargin: Kirigami.Units.gridUnit
Layout.rightMargin: Kirigami.Units.gridUnit
Layout.fillWidth: true
wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
text: i18n("This can later be changed in the settings.")
}
Item {
Layout.fillHeight: true
}
}
}
}

View file

@ -0,0 +1,53 @@
{
"KPackageStructure": "KPackage/GenericQML",
"KPlugin": {
"Authors": [
{
"Email": "devin@kde.org",
"Name": "Devin Lin",
"Name[ar]": "ديفين لين",
"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[eo]": "Devin Lin",
"Name[es]": "Devin Lin",
"Name[eu]": "Devin Lin",
"Name[fi]": "Devin Lin",
"Name[fr]": "Devin Lin",
"Name[gl]": "Devin Lin",
"Name[he]": "דווין לין",
"Name[hu]": "Devin Lin",
"Name[ia]": "Devin Lin",
"Name[is]": "Devin Lin",
"Name[it]": "Devin Lin",
"Name[ka]": "Devin Lin",
"Name[ko]": "Devin Lin",
"Name[lv]": "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[sa]": "डेविन् लिन्",
"Name[sk]": "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",
"Name[zh_TW]": "Devin Lin"
}
],
"Description": "System navigation initialstart module for Plasma Mobile",
"Id": "org.kde.plasma.mobileinitialstart.systemnavigation",
"License": "GPL-2.0+",
"Name": "System Navigation",
"Website": "https://kde.org"
}
}

View file

@ -15,6 +15,7 @@ const QList<QString> WIZARD_MODULE_ORDER = {QStringLiteral("org.kde.plasma.mobil
QStringLiteral("org.kde.plasma.mobileinitialstart.time"), QStringLiteral("org.kde.plasma.mobileinitialstart.time"),
QStringLiteral("org.kde.plasma.mobileinitialstart.wifi"), QStringLiteral("org.kde.plasma.mobileinitialstart.wifi"),
QStringLiteral("org.kde.plasma.mobileinitialstart.cellular"), QStringLiteral("org.kde.plasma.mobileinitialstart.cellular"),
QStringLiteral("org.kde.plasma.mobileinitialstart.systemnavigation"),
QStringLiteral("org.kde.plasma.mobileinitialstart.finished")}; QStringLiteral("org.kde.plasma.mobileinitialstart.finished")};
Wizard::Wizard(QObject *parent, QQmlEngine *engine) Wizard::Wizard(QObject *parent, QQmlEngine *engine)