Warning, /office/klevernotes/src/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: GPL-2.0-or-later 0002 // SPDX-FileCopyrightText: 2022 Louis Schul <schul9louis@gmail.com> 0003 0004 import QtQuick 2.15 0005 0006 import org.kde.kirigami 2.19 as Kirigami 0007 0008 import org.kde.Klever 1.0 0009 0010 import "qrc:/contents/ui/sideBar" 0011 0012 Kirigami.ApplicationWindow { 0013 id: root 0014 0015 readonly property NoteMapper noteMapper: noteMapper 0016 property string currentPageName: "Main" 0017 0018 title: i18nc("@title:ApplicationWindow", "KleverNotes") 0019 0020 minimumWidth: Kirigami.Settings.isMobile ? Kirigami.Units.gridUnit * 25 : Kirigami.Units.gridUnit * 35 0021 minimumHeight: Kirigami.Units.gridUnit * 30 0022 0023 globalDrawer: sideBar 0024 pageStack.columnView.columnResizeMode: Kirigami.ColumnView.SingleColumn 0025 0026 onCurrentPageNameChanged: { 0027 if (!isMainPage()) { 0028 sideBar.close() 0029 } else if (pageStack.depth > 1){ 0030 if (!sideBar.modal) sideBar.open() 0031 pageStack.pop() 0032 } 0033 } 0034 onClosing: { 0035 saveState() 0036 } 0037 onXChanged: { 0038 saveWindowGeometryTimer.restart() 0039 } 0040 onYChanged: { 0041 saveWindowGeometryTimer.restart() 0042 } 0043 onWidthChanged: { 0044 saveWindowGeometryTimer.restart() 0045 } 0046 onHeightChanged: { 0047 saveWindowGeometryTimer.restart() 0048 } 0049 Component.onCompleted: { 0050 App.restoreWindowGeometry(root) 0051 switchToPage('Main') 0052 } 0053 0054 // This timer allows to batch update the window size change to reduce 0055 // the io load and also work around the fact that x/y/width/height are 0056 // changed when loading the page and overwrite the saved geometry from 0057 // the previous session. 0058 Timer { 0059 id: saveWindowGeometryTimer 0060 0061 interval: 1000 0062 onTriggered: App.saveWindowGeometry(root) 0063 } 0064 0065 Kirigami.PagePool { 0066 id: pagePool 0067 } 0068 0069 Sidebar { 0070 id: sideBar 0071 } 0072 0073 NoteMapper { 0074 id: noteMapper 0075 } 0076 0077 function saveState() { 0078 App.saveWindowGeometry(root) 0079 const mainPage = pageStack.get(0) 0080 const editor = mainPage.editorView.editor 0081 editor.saveNote(editor.text, editor.path) 0082 if (Config.noteMapEnabled) noteMapper.saveMap() 0083 } 0084 0085 function getPage(name) { 0086 switch (name) { 0087 case "Main": return pagePool.loadPage("qrc:contents/ui/pages/MainPage.qml"); 0088 case "Settings": return pagePool.loadPage("qrc:contents/ui/pages/SettingsPage.qml"); 0089 case "Painting": return pagePool.loadPage("qrc:contents/ui/pages/PaintingPage.qml"); 0090 case "Printing": return pagePool.loadPage("qrc:contents/ui/pages/PrintingPage.qml"); 0091 case "About": return pagePool.loadPage("qrc:contents/ui/pages/AboutPage.qml"); 0092 } 0093 } 0094 0095 function switchToPage(pageName) { 0096 const page = getPage(pageName) 0097 0098 pageStack.push(page) 0099 0100 currentPageName = pageName 0101 } 0102 0103 function isMainPage() { 0104 return currentPageName === "Main" 0105 } 0106 0107 function showCheatSheet() { 0108 if (!isMainPage()) return 0109 0110 const mainPage = pageStack.get(0) 0111 const editorView = mainPage.editorView 0112 editorView.cheatSheet.open() 0113 } 0114 }