diff --git a/imports/NeoChat/Menu/GlobalMenu.qml b/imports/NeoChat/Menu/GlobalMenu.qml index 8884eeede..cb63bf1d9 100644 --- a/imports/NeoChat/Menu/GlobalMenu.qml +++ b/imports/NeoChat/Menu/GlobalMenu.qml @@ -28,7 +28,7 @@ Labs.MenuBar { text: i18nc("menu", "Preferences…") shortcut: StandardKey.Preferences - onTriggered: pushReplaceLayer("qrc:/imports/NeoChat/Page/SettingsPage.qml") + onTriggered: pageStack.pushDialogLayer("qrc:/imports/NeoChat/Settings/SettingsPage.qml") } Labs.MenuItem { text: i18nc("menu", "Quit NeoChat") diff --git a/imports/NeoChat/Page/SettingsPage.qml b/imports/NeoChat/Page/SettingsPage.qml deleted file mode 100644 index be097e101..000000000 --- a/imports/NeoChat/Page/SettingsPage.qml +++ /dev/null @@ -1,88 +0,0 @@ -// SPDX-FileCopyrightText: 2020 Tobias Fella -// SPDX-FileCopyrightText: 2021 Carl Schwan -// SPDX-License-Identifier: LGPL-2.0-or-later - -import QtQuick 2.15 -import QtQuick.Controls 2.15 as QQC2 -import QtQuick.Layouts 1.15 - -import org.kde.kirigami 2.15 as Kirigami - -import org.kde.neochat 1.0 -import NeoChat.Settings 1.0 - -Kirigami.ScrollablePage { - title: i18n("Settings") - bottomPadding: 0 - leftPadding: 0 - rightPadding: 0 - topPadding: 0 - - onBackRequested: { - if (pageSettingStack.depth > 1 && !pageSettingStack.wideMode && pageSettingStack.currentIndex !== 0) { - event.accepted = true; - pageSettingStack.pop(); - } - } - - Kirigami.PageRow { - id: pageSettingStack - anchors.fill: parent - columnView.columnWidth: Kirigami.Units.gridUnit * 12 - initialPage: Kirigami.ScrollablePage { - bottomPadding: 0 - leftPadding: 0 - rightPadding: 0 - topPadding: 0 - Kirigami.Theme.colorSet: Kirigami.Theme.View - ListView { - Component.onCompleted: if (pageSettingStack.wideMode) { - actions[0].trigger(); - } - property list actions: [ - Kirigami.Action { - text: i18n("General") - icon.name: "org.kde.neochat" - onTriggered: pageSettingStack.push("qrc:/imports/NeoChat/Settings/GeneralSettingsPage.qml") - }, - Kirigami.Action { - text: i18n("Appearance") - icon.name: "preferences-desktop-theme-global" - onTriggered: pageSettingStack.push("qrc:/imports/NeoChat/Settings/AppearanceSettingsPage.qml") - }, - Kirigami.Action { - text: i18n("Accounts") - icon.name: "preferences-system-users" - onTriggered: pageSettingStack.push("qrc:/imports/NeoChat/Page/AccountsPage.qml") - }, - Kirigami.Action { - text: i18n("Custom Emoji") - icon.name: "preferences-desktop-emoticons" - onTriggered: pageSettingStack.push("qrc:/imports/NeoChat/Settings/Emoticons.qml") - }, - Kirigami.Action { - text: i18n("Devices") - iconName: "network-connect" - onTriggered: pageSettingStack.push("qrc:/imports/NeoChat/Page/DevicesPage.qml") - }, - Kirigami.Action { - text: i18n("About NeoChat") - icon.name: "help-about" - onTriggered: pageSettingStack.push(aboutPage) - } - ] - model: actions - delegate: Kirigami.BasicListItem { - action: modelData - } - } - } - } - - Component { - id: aboutPage - Kirigami.AboutPage { - aboutData: Controller.aboutData - } - } -} diff --git a/imports/NeoChat/Page/qmldir b/imports/NeoChat/Page/qmldir index c2ce20767..888331262 100644 --- a/imports/NeoChat/Page/qmldir +++ b/imports/NeoChat/Page/qmldir @@ -5,6 +5,5 @@ RoomPage 1.0 RoomPage.qml RoomWindow 1.0 RoomWindow.qml JoinRoomPage 1.0 JoinRoomPage.qml InviteUserPage 1.0 InviteUserPage.qml -SettingsPage 1.0 SettingsPage.qml ImageEditorPage 1.0 ImageEditorPage.qml diff --git a/imports/NeoChat/Settings/About.qml b/imports/NeoChat/Settings/About.qml new file mode 100644 index 000000000..2082b6bd7 --- /dev/null +++ b/imports/NeoChat/Settings/About.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2020 Tobias Fella +// SPDX-FileCopyrightText: 2021 Carl Schwan +// SPDX-License-Identifier: LGPL-2.0-or-later + +import org.kde.kirigami 2.15 as Kirigami + +import org.kde.neochat 1.0 + +Kirigami.AboutPage { + title: i18nc('@title:window', 'About NeoChat') + aboutData: Controller.aboutData +} diff --git a/imports/NeoChat/Page/AccountsPage.qml b/imports/NeoChat/Settings/AccountsPage.qml similarity index 100% rename from imports/NeoChat/Page/AccountsPage.qml rename to imports/NeoChat/Settings/AccountsPage.qml diff --git a/imports/NeoChat/Settings/AppearanceSettingsPage.qml b/imports/NeoChat/Settings/AppearanceSettingsPage.qml index 21e6d0794..7c317f001 100644 --- a/imports/NeoChat/Settings/AppearanceSettingsPage.qml +++ b/imports/NeoChat/Settings/AppearanceSettingsPage.qml @@ -12,6 +12,7 @@ import org.kde.neochat 1.0 import NeoChat.Settings 1.0 Kirigami.ScrollablePage { + title: i18nc('@title:window', 'Appearance') ColumnLayout { RowLayout { Layout.alignment: Qt.AlignCenter diff --git a/imports/NeoChat/Page/DevicesPage.qml b/imports/NeoChat/Settings/DevicesPage.qml similarity index 100% rename from imports/NeoChat/Page/DevicesPage.qml rename to imports/NeoChat/Settings/DevicesPage.qml diff --git a/imports/NeoChat/Settings/Emoticons.qml b/imports/NeoChat/Settings/Emoticons.qml index 9fe3a5058..d1fe3cfab 100644 --- a/imports/NeoChat/Settings/Emoticons.qml +++ b/imports/NeoChat/Settings/Emoticons.qml @@ -14,6 +14,7 @@ import NeoChat.Component 1.0 as Components import NeoChat.Dialog 1.0 Kirigami.Page { + title: i18nc('@title:window', 'Custom Emojis') leftPadding: pageSettingStack.wideMode ? Kirigami.Units.smallSpacing : 0 topPadding: pageSettingStack.wideMode ? Kirigami.Units.smallSpacing : 0 diff --git a/imports/NeoChat/Settings/GeneralSettingsPage.qml b/imports/NeoChat/Settings/GeneralSettingsPage.qml index 7a1366b92..a1758fcfd 100644 --- a/imports/NeoChat/Settings/GeneralSettingsPage.qml +++ b/imports/NeoChat/Settings/GeneralSettingsPage.qml @@ -11,6 +11,7 @@ import org.kde.kirigami 2.15 as Kirigami import org.kde.neochat 1.0 Kirigami.ScrollablePage { + title: i18nc('@title:window', 'General') ColumnLayout { Kirigami.FormLayout { QQC2.CheckBox { diff --git a/imports/NeoChat/Settings/SettingsPage.qml b/imports/NeoChat/Settings/SettingsPage.qml new file mode 100644 index 000000000..f7e575576 --- /dev/null +++ b/imports/NeoChat/Settings/SettingsPage.qml @@ -0,0 +1,43 @@ +// SPDX-FileCopyrightText: 2021 Carl Schwan +// SPDX-License-Identifier: LGPL-2.0-or-later + +import QtQuick 2.15 +import org.kde.kirigami 2.18 as Kirigami +import QtQuick.Controls 2.15 as Controls +import QtQuick.Layouts 1.15 + +Kirigami.CategorizedSettings { + objectName: "settingsPage" + actions: [ + Kirigami.SettingAction { + text: i18n("General") + icon.name: "org.kde.neochat" + page: Qt.resolvedUrl("GeneralSettingsPage.qml") + }, + Kirigami.SettingAction { + text: i18n("Appearance") + icon.name: "preferences-desktop-theme-global" + page: Qt.resolvedUrl("AppearanceSettingsPage.qml") + }, + Kirigami.SettingAction { + text: i18n("Accounts") + icon.name: "preferences-system-users" + page: Qt.resolvedUrl("AccountsPage.qml") + }, + Kirigami.SettingAction { + text: i18n("Custom Emoji") + icon.name: "preferences-desktop-emoticons" + page: Qt.resolvedUrl("Emoticons.qml") + }, + Kirigami.SettingAction { + text: i18n("Devices") + iconName: "network-connect" + page: Qt.resolvedUrl("DevicesPage.qml") + }, + Kirigami.SettingAction { + text: i18n("About NeoChat") + icon.name: "help-about" + page: Qt.resolvedUrl("About.qml") + } + ] +} diff --git a/imports/NeoChat/Settings/qmldir b/imports/NeoChat/Settings/qmldir index 0c35abcfc..3baec9c71 100644 --- a/imports/NeoChat/Settings/qmldir +++ b/imports/NeoChat/Settings/qmldir @@ -1,2 +1,3 @@ module NeoChat.Settings ThemeRadioButton 1.0 ThemeRadioButton.qml +SettingsPage 1.0 SettingsPage.qml diff --git a/qml/main.qml b/qml/main.qml index c85cf3dfb..c4c8e3cdb 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -255,7 +255,7 @@ Kirigami.ApplicationWindow { Kirigami.Action { text: i18n("Settings") icon.name: "settings-configure" - onTriggered: pushReplaceLayer("qrc:/imports/NeoChat/Page/SettingsPage.qml") + onTriggered: pageStack.pushDialogLayer("qrc:/imports/NeoChat/Settings/SettingsPage.qml") enabled: pageStack.layers.currentItem.title !== i18n("Settings") shortcut: StandardKey.Preferences }, diff --git a/res.qrc b/res.qrc index 4d4c16c2a..e5dd4f83d 100644 --- a/res.qrc +++ b/res.qrc @@ -6,13 +6,10 @@ imports/NeoChat/Page/RoomListPage.qml imports/NeoChat/Page/RoomPage.qml imports/NeoChat/Page/RoomWindow.qml - imports/NeoChat/Page/AccountsPage.qml imports/NeoChat/Page/JoinRoomPage.qml imports/NeoChat/Page/InviteUserPage.qml - imports/NeoChat/Page/SettingsPage.qml imports/NeoChat/Page/StartChatPage.qml imports/NeoChat/Page/ImageEditorPage.qml - imports/NeoChat/Page/DevicesPage.qml imports/NeoChat/Page/WelcomePage.qml imports/NeoChat/Component/qmldir imports/NeoChat/Component/FullScreenImage.qml @@ -73,11 +70,15 @@ qtquickcontrols2.conf imports/NeoChat/Component/glowdot.png imports/NeoChat/Component/confetti.png + imports/NeoChat/Settings/SettingsPage.qml imports/NeoChat/Settings/ThemeRadioButton.qml imports/NeoChat/Settings/ColorScheme.qml imports/NeoChat/Settings/GeneralSettingsPage.qml imports/NeoChat/Settings/Emoticons.qml imports/NeoChat/Settings/AppearanceSettingsPage.qml + imports/NeoChat/Settings/AccountsPage.qml + imports/NeoChat/Settings/DevicesPage.qml + imports/NeoChat/Settings/About.qml imports/NeoChat/Settings/qmldir