From 9882a0a289948ebefd4b09080e66a9aa4106871f Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 11 Mar 2022 11:22:11 -0600 Subject: [PATCH] Trying to get a settings module working --- src/qml/main.qml | 101 ++++++++++++++++++++++--------- src/qml/presenter/MainWindow.qml | 10 ++- src/qml/presenter/Settings.qml | 38 ++++++++++++ src/resources.qrc | 1 + 4 files changed, 121 insertions(+), 29 deletions(-) create mode 100644 src/qml/presenter/Settings.qml diff --git a/src/qml/main.qml b/src/qml/main.qml index b71536f..ddba728 100644 --- a/src/qml/main.qml +++ b/src/qml/main.qml @@ -14,6 +14,9 @@ Kirigami.ApplicationWindow { property bool libraryOpen: true property bool presenting: false + + property var presentationScreen + property var screens property bool editMode: false @@ -22,29 +25,53 @@ Kirigami.ApplicationWindow { pageStack.initialPage: mainPage header: Presenter.Header {} - /* Loader { */ - /* Labs.MenuBar { */ - /* Labs.Menu { */ - /* title: qsTr("File") */ - /* Labs.MenuItem { text: qsTr("New...") } */ - /* Labs.MenuItem { text: qsTr("Open...") } */ - /* Labs.MenuItem { text: qsTr("Save") } */ - /* Labs.MenuItem { text: qsTr("Save As...") } */ - /* Labs.MenuSeparator { } */ - /* Labs.MenuItem { text: qsTr("Quit") } */ - /* } */ - /* Labs.Menu { */ - /* title: qsTr("Edit") */ - /* Labs.MenuItem { text: qsTr("Cut") } */ - /* Labs.MenuItem { text: qsTr("Copy") } */ - /* Labs.MenuItem { text: qsTr("Paste") } */ - /* } */ - /* Labs.Menu { */ - /* title: qsTr("Help") */ - /* Labs.MenuItem { text: qsTr("About") } */ - /* } */ - /* } */ - /* } */ + + menuBar: Controls.MenuBar { + Controls.Menu { + title: qsTr("File") + Controls.MenuItem { text: qsTr("New...") } + Controls.MenuItem { text: qsTr("Open...") } + Controls.MenuItem { text: qsTr("Save") } + Controls.MenuItem { text: qsTr("Save As...") } + Controls.MenuSeparator { } + Controls.MenuItem { text: qsTr("Quit") } + } + Controls.Menu { + title: qsTr("Settings") + Controls.MenuItem { + text: qsTr("Configure") + onTriggered: openSettings() + } + } + Controls.Menu { + title: qsTr("Help") + Controls.MenuItem { text: qsTr("About") } + } + } + + Labs.MenuBar { + Labs.Menu { + title: qsTr("File") + Labs.MenuItem { text: qsTr("New...") } + Labs.MenuItem { text: qsTr("Open...") } + Labs.MenuItem { text: qsTr("Save") } + Labs.MenuItem { text: qsTr("Save As...") } + Labs.MenuSeparator { } + Labs.MenuItem { text: qsTr("Quit") } + } + Labs.Menu { + title: qsTr("Settings") + Labs.MenuItem { + text: qsTr("Configure") + onTriggered: openSettings() + } + } + Labs.Menu { + title: qsTr("Help") + Labs.MenuItem { text: qsTr("About") } + } + } + width: 1800 height: 900 @@ -61,15 +88,27 @@ Kirigami.ApplicationWindow { libraryOpen = !libraryOpen } + function openSettings() { + settingsSheet.open() + } + Component.onCompleted: { - showPassiveNotification(Kirigami.Settings.style); - Kirigami.Settings.style = "Plasma"; - showPassiveNotification(Kirigami.Settings.style); + /* showPassiveNotification(Kirigami.Settings.style); */ + /* Kirigami.Settings.style = "Plasma"; */ + /* showPassiveNotification(Kirigami.Settings.style); */ + print(Qt.platform.os); print("checking screens"); - print("Present Mode is " + presentMode); + print("Present Mode is " + presenting); screens = Qt.application.screens; for (let i = 0; i < screens.length; i++) { print(screens[i].name); + screenModel.append({ + "name": screens[i].name, + "width": (screens[i].width * screens[i].devicePixelRatio), + "height": (screens[i].height * screens[i].devicePixelRatio), + "pixeldensity": screens[i].pixelDensity, + "pixelratio": screens[i].devicePixelRatio + }) print("width of screen: " + (screens[i].width * screens[i].devicePixelRatio)); print("height of screen: " + (screens[i].height * screens[i].devicePixelRatio)); print("pixeldensity of screen: " + screens[i].pixelDensity); @@ -77,4 +116,12 @@ Kirigami.ApplicationWindow { } } + Presenter.Settings { + id: settingsSheet + model: screenModel + } + + ListModel { + id: screenModel + } } diff --git a/src/qml/presenter/MainWindow.qml b/src/qml/presenter/MainWindow.qml index c64159e..d9b4260 100644 --- a/src/qml/presenter/MainWindow.qml +++ b/src/qml/presenter/MainWindow.qml @@ -87,12 +87,17 @@ Controls.Page { Loader { id: presentLoader active: presenting - sourceComponent: Window { + sourceComponent: presentationComponent + } + + Component { + id: presentationComponent + Window { id: presentationWindow title: "presentation-window" height: maximumHeight width: maximumWidth - screen: screens[1].name + screen: screens[0] onClosing: presenting = false Component.onCompleted: { @@ -110,6 +115,7 @@ Controls.Page { Component.onCompleted: slideItem = presentationSlide } } + } FileDialog { diff --git a/src/qml/presenter/Settings.qml b/src/qml/presenter/Settings.qml new file mode 100644 index 0000000..c39c16c --- /dev/null +++ b/src/qml/presenter/Settings.qml @@ -0,0 +1,38 @@ +import QtQuick 2.13 +import QtQuick.Dialogs 1.0 +import QtQuick.Controls 2.15 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.13 as Kirigami +import "./" as Presenter +import org.presenter 1.0 + +Kirigami.OverlaySheet { + + property ListModel model + + id: root + header: Kirigami.Heading { + text: "Settings" + } + Kirigami.FormLayout { + Controls.ComboBox { + id: screenSelectionField + Kirigami.FormData.label: i18nc("@label:textbox", "Screen:") + model: model + textRole: name + onAccepted: descriptionField.forceActiveFocus() + } + Controls.TextField { + id: descriptionField + Kirigami.FormData.label: i18nc("@label:textbox", "Description:") + placeholderText: i18n("Optional") + onAccepted: dateField.forceActiveFocus() + } + Controls.TextField { + id: dateField + Kirigami.FormData.label: i18nc("@label:textbox", "Date:") + placeholderText: i18n("YYYY-MM-DD") + inputMask: "0000-00-00" + } + } +} diff --git a/src/resources.qrc b/src/resources.qrc index c980732..b1f420b 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -13,6 +13,7 @@ qml/presenter/SlideEditor.qml qml/presenter/DragHandle.qml qml/presenter/Presentation.qml + qml/presenter/Settings.qml assets/parallel.jpg