diff --git a/applets/notes/package/contents/config/config.qml b/applets/notes/package/contents/config/config.qml index 121431e7c39d6573435c5b30e496556caec010e6..85905c54676552f57282fbe000fa943d0f70f587 100644 --- a/applets/notes/package/contents/config/config.qml +++ b/applets/notes/package/contents/config/config.qml @@ -4,7 +4,7 @@ * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ -import QtQuick 2.0 +import QtQuick 2.15 import org.kde.plasma.configuration 2.0 diff --git a/applets/notes/package/contents/config/main.xml b/applets/notes/package/contents/config/main.xml index e7387cd1281eb8e78125d98fb3bc1bd5bbb7f381..521cd14769b2c1e370fdf9595417160662c93eb4 100644 --- a/applets/notes/package/contents/config/main.xml +++ b/applets/notes/package/contents/config/main.xml @@ -17,5 +17,18 @@ + + + 0 + + + + 0 + + + + 0 + + diff --git a/applets/notes/package/contents/ui/ShortcutMenuItem.qml b/applets/notes/package/contents/ui/ShortcutMenuItem.qml index d56109dfb97eb3bc25c72339d48655c7f6a913c1..48c4813e4d5220efee2448e55a03dae40b283c80 100644 --- a/applets/notes/package/contents/ui/ShortcutMenuItem.qml +++ b/applets/notes/package/contents/ui/ShortcutMenuItem.qml @@ -4,9 +4,9 @@ * SPDX-License-Identifier: LGPL-2.0-or-later */ -import QtQuick 2.6 -import QtQuick.Window 2.2 -import QtQuick.Controls 2.12 +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Window 2.15 MenuItem { property alias _sequence: shortcutElement.sequence diff --git a/applets/notes/package/contents/ui/configAppearance.qml b/applets/notes/package/contents/ui/configAppearance.qml index 3a1469d590f166d74994a34f454ff1ad1aff580e..fdedd0ab34b0981333d737935eed3680ee5434b6 100644 --- a/applets/notes/package/contents/ui/configAppearance.qml +++ b/applets/notes/package/contents/ui/configAppearance.qml @@ -4,10 +4,9 @@ * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ -import QtQuick 2.5 - -import QtQuick.Layouts 1.2 -import QtQuick.Controls 2.5 as QQC2 +import QtQuick 2.15 +import QtQuick.Controls 2.15 as QQC2 +import QtQuick.Layouts 1.15 import org.kde.kcm 1.1 as KCM import org.kde.plasma.core 2.0 as PlasmaCore diff --git a/applets/notes/package/contents/ui/main.qml b/applets/notes/package/contents/ui/main.qml index 9e421c9e206356945697c06160b10b05f953abb1..05be15ed7cd6e01f73b4d1cd5c25e4417ee749e9 100644 --- a/applets/notes/package/contents/ui/main.qml +++ b/applets/notes/package/contents/ui/main.qml @@ -6,9 +6,10 @@ */ import QtQuick 2.15 -import QtQuick.Controls 2.5 as QQC2 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.12 +import QtQuick.Controls 2.15 as QQC2 +import QtQuick.Layouts 1.15 +import QtQuick.Window 2.15 +// Dialogs are stuck at 1.3 for some reason. Don't bump. import QtQuick.Dialogs 1.3 // Deliberately imported after QtQuick to avoid missing restoreMode property in Binding. Fix in Qt 6. import QtQml 2.15 @@ -31,7 +32,7 @@ PlasmaCore.SvgItem { svg: PlasmaCore.Svg { imagePath: "widgets/notes" } - elementId: plasmoid.configuration.color + "-notes" + elementId: Plasmoid.configuration.color + "-notes" width: PlasmaCore.Units.gridUnit * 15 height: PlasmaCore.Units.gridUnit * 15 @@ -47,13 +48,13 @@ PlasmaCore.SvgItem { readonly property real verticalMargins: height * 0.07 // note is of type Note - property QtObject note: noteManager.loadNote(plasmoid.configuration.noteId); + property QtObject note: noteManager.loadNote(Plasmoid.configuration.noteId); // define colors used for icons in ToolButtons and for text in TextArea. // this is deliberately _NOT_ the theme color as we are over a known bright background! // an unknown colour over a known colour is a bad move as you end up with white on yellow. readonly property color textIconColor: { - if (plasmoid.configuration.color === "black" || plasmoid.configuration.color === "translucent-light") { + if (Plasmoid.configuration.color === "black" || Plasmoid.configuration.color === "translucent-light") { return "#dfdfdf"; } return "#202020"; @@ -66,10 +67,10 @@ PlasmaCore.SvgItem { } Connections { - target: plasmoid + target: Plasmoid.self function onExpandedChanged(expanded) { // don't autofocus when we're on the desktop - if (expanded && (plasmoid.formFactor === PlasmaCore.Types.Vertical || plasmoid.formFactor === PlasmaCore.Types.Horizontal)) { + if (expanded && (Plasmoid.formFactor === PlasmaCore.Types.Vertical || Plasmoid.formFactor === PlasmaCore.Types.Horizontal)) { mainTextArea.forceActiveFocus() } } @@ -101,13 +102,13 @@ PlasmaCore.SvgItem { Timer { id: activationTimer interval: 250 // matches taskmanager delay - onTriggered: plasmoid.expanded = true + onTriggered: Plasmoid.expanded = true } MouseArea { anchors.fill: parent hoverEnabled: true - onClicked: plasmoid.expanded = !plasmoid.expanded + onClicked: Plasmoid.expanded = !Plasmoid.expanded PlasmaCore.IconItem { anchors.fill: parent @@ -151,7 +152,7 @@ PlasmaCore.SvgItem { PlasmaComponents3.TextArea { id: mainTextArea - property real cfgFontPointSize: plasmoid.configuration.fontSize + property real cfgFontPointSize: Plasmoid.configuration.fontSize textFormat: TextEdit.RichText onLinkActivated: Qt.openUrlExternally(link) @@ -164,7 +165,7 @@ PlasmaCore.SvgItem { Keys.onPressed: { if (event.key === Qt.Key_Escape) { - plasmoid.expanded = false; + Plasmoid.expanded = false; event.accepted = true; } else if (event.modifiers === Qt.ControlModifier) { if (event.key === Qt.Key_B) { @@ -213,9 +214,9 @@ PlasmaCore.SvgItem { onActiveFocusChanged: { if (activeFocus && root.Window && (root.Window.window.flags & Qt.WindowDoesNotAcceptFocus)) { - plasmoid.status = PlasmaCore.Types.AcceptingInputStatus + Plasmoid.status = PlasmaCore.Types.AcceptingInputStatus } else { - plasmoid.status = PlasmaCore.Types.ActiveStatus + Plasmoid.status = PlasmaCore.Types.ActiveStatus note.save(mainTextArea.text); } } @@ -229,9 +230,9 @@ PlasmaCore.SvgItem { } Component.onCompleted: { - if (!plasmoid.configuration.fontSize) { + if (!Plasmoid.configuration.fontSize) { // Set fontSize to default if it is not set - plasmoid.configuration.fontSize = mainTextArea.font.pointSize + Plasmoid.configuration.fontSize = mainTextArea.font.pointSize } } @@ -319,6 +320,51 @@ PlasmaCore.SvgItem { } } } + + // Save scrolling position when it changes, but throttle to avoid + // killing a storage disk. + Connections { + target: scrollview.contentItem + function onContentXChanged() { + throttedScrollSaver.restart(); + } + function onContentYChanged() { + throttedScrollSaver.restart(); + } + } + Connections { + target: mainTextArea + function onCursorPositionChanged() { + throttedScrollSaver.restart(); + } + } + + Timer { + id: throttedScrollSaver + interval: PlasmaCore.Units.humanMoment + repeat: false + running: false + onTriggered: scrollview.saveScroll() + } + + function saveScroll() { + const flickable = scrollview.contentItem; + Plasmoid.configuration.scrollX = flickable.contentX; + Plasmoid.configuration.scrollY = flickable.contentY; + Plasmoid.configuration.cursorPosition = mainTextArea.cursorPosition; + } + + function restoreScroll() { + const flickable = scrollview.contentItem; + flickable.contentX = Plasmoid.configuration.scrollX; + flickable.contentY = Plasmoid.configuration.scrollY; + mainTextArea.cursorPosition = Plasmoid.configuration.cursorPosition; + } + + // Give it some time to lay out the text, because at this + // point in time content size is not reliable yet. + Component.onCompleted: Qt.callLater(restoreScroll) + Component.onDestruction: saveScroll() } DragDrop.DropArea { @@ -442,11 +488,11 @@ PlasmaCore.SvgItem { focusPolicy: Qt.TabFocus icon.name: "configure" icon.color: textIconColor - onClicked: plasmoid.action("configure").trigger() + onClicked: Plasmoid.action("configure").trigger() Accessible.name: settingsTooltip.text QQC2.ToolTip { id: settingsTooltip - text: plasmoid.action("configure").text + text: Plasmoid.action("configure").text } } @@ -471,7 +517,7 @@ PlasmaCore.SvgItem { // is done in the same way every time. documentHandler.stripAndSimplify(mainTextArea.text) == documentHandler.strippedClipboardText() ) { - plasmoid.action("remove").trigger(); + Plasmoid.action("remove").trigger(); } else { discardConfirmationDialogLoader.open(); } @@ -479,7 +525,7 @@ PlasmaCore.SvgItem { Accessible.name: removeTooltip.text QQC2.ToolTip { id: removeTooltip - text: plasmoid.action("remove").text + text: Plasmoid.action("remove").text } } } @@ -508,29 +554,29 @@ PlasmaCore.SvgItem { standardButtons: StandardButton.Discard | StandardButton.Cancel onDiscard: { - plasmoid.action("remove").trigger() + Plasmoid.action("remove").trigger() visible = false; } } } Component.onCompleted: { - plasmoid.setAction("change_note_color_white", i18nc("@item:inmenu", "White")); - plasmoid.setAction("change_note_color_black", i18nc("@item:inmenu", "Black")); - plasmoid.setAction("change_note_color_red", i18nc("@item:inmenu", "Red")); - plasmoid.setAction("change_note_color_orange", i18nc("@item:inmenu", "Orange")); - plasmoid.setAction("change_note_color_yellow", i18nc("@item:inmenu", "Yellow")); - plasmoid.setAction("change_note_color_green", i18nc("@item:inmenu", "Green")); - plasmoid.setAction("change_note_color_blue", i18nc("@item:inmenu", "Blue")); - plasmoid.setAction("change_note_color_pink", i18nc("@item:inmenu", "Pink")); - plasmoid.setAction("change_note_color_translucent", i18nc("@item:inmenu", "Translucent")); - plasmoid.setAction("change_note_color_translucent-light", i18nc("@item:inmenu", "Translucent Light")); - plasmoid.setActionSeparator("separator0"); - - // plasmoid configuration doesn't check before emitting change signal + Plasmoid.setAction("change_note_color_white", i18nc("@item:inmenu", "White")); + Plasmoid.setAction("change_note_color_black", i18nc("@item:inmenu", "Black")); + Plasmoid.setAction("change_note_color_red", i18nc("@item:inmenu", "Red")); + Plasmoid.setAction("change_note_color_orange", i18nc("@item:inmenu", "Orange")); + Plasmoid.setAction("change_note_color_yellow", i18nc("@item:inmenu", "Yellow")); + Plasmoid.setAction("change_note_color_green", i18nc("@item:inmenu", "Green")); + Plasmoid.setAction("change_note_color_blue", i18nc("@item:inmenu", "Blue")); + Plasmoid.setAction("change_note_color_pink", i18nc("@item:inmenu", "Pink")); + Plasmoid.setAction("change_note_color_translucent", i18nc("@item:inmenu", "Translucent")); + Plasmoid.setAction("change_note_color_translucent-light", i18nc("@item:inmenu", "Translucent Light")); + Plasmoid.setActionSeparator("separator0"); + + // Plasmoid configuration doesn't check before emitting change signal // explicit check is needed (at time of writing) - if (note.id != plasmoid.configuration.noteId) { - plasmoid.configuration.noteId = note.id; + if (note.id != Plasmoid.configuration.noteId) { + Plasmoid.configuration.noteId = note.id; } } @@ -540,7 +586,7 @@ PlasmaCore.SvgItem { function actionTriggered(actionName) { if (actionName.indexOf("change_note_color_") == 0){ - plasmoid.configuration.color = actionName.replace("change_note_color_", ""); + Plasmoid.configuration.color = actionName.replace("change_note_color_", ""); } } }