Warning, /plasma-mobile/raven/src/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org> 0002 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org> 0003 // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0004 0005 import QtQuick 2.15 0006 import QtQuick.Layouts 1.15 0007 import QtQuick.Controls 2.15 as Controls 0008 0009 import org.kde.kirigami 2.14 as Kirigami 0010 import org.kde.kitemmodels 1.0 as KItemModels 0011 import org.kde.raven 1.0 0012 0013 import "mailboxselector" 0014 0015 Kirigami.ApplicationWindow { 0016 id: root 0017 0018 title: i18n("Raven") 0019 0020 width: 1200 0021 height: 600 0022 0023 contextDrawer: Kirigami.ContextDrawer { 0024 id: contextDrawer 0025 } 0026 0027 pageStack.globalToolBar.canContainHandles: true 0028 pageStack.globalToolBar.style: Kirigami.ApplicationHeaderStyle.ToolBar 0029 pageStack.globalToolBar.showNavigationButtons: Kirigami.ApplicationHeaderStyle.ShowBackButton; 0030 pageStack.popHiddenPages: !root.isWidescreen // pop pages when not in use in mobile mode 0031 0032 property bool isWidescreen: root.width > 500 0033 onIsWidescreenChanged: changeSidebar(isWidescreen); 0034 0035 Kirigami.PagePool { 0036 id: pagePool 0037 } 0038 0039 function getPage(name) { 0040 switch (name) { 0041 case "FolderView": return pagePool.loadPage("qrc:/FolderView.qml") 0042 case "MailBoxListPage": return pagePool.loadPage("qrc:/mailboxselector/MailBoxListPage.qml") 0043 case "SettingsPage": return pagePool.loadPage("qrc:/SettingsPage.qml") 0044 case "AboutPage": return pagePool.loadPage("qrc:/AboutPage.qml") 0045 } 0046 } 0047 0048 Component.onCompleted: { 0049 // initial page and nav type 0050 changeSidebar(isWidescreen); 0051 0052 if (isWidescreen) { 0053 root.pageStack.push(getPage("FolderView")); 0054 } 0055 } 0056 0057 // switch between page and sidebar 0058 function changeSidebar(toWidescreen) { 0059 if (toWidescreen) { 0060 // unload first page (mailboxes page) 0061 let array = []; 0062 while (root.pageStack.depth > 0) { 0063 array.push(root.pageStack.pop()); 0064 } 0065 for (let i = array.length - 2; i >= 0; i--) { 0066 root.pageStack.push(array[i]); 0067 } 0068 0069 // load sidebar 0070 sidebarLoader.active = true; 0071 root.globalDrawer = sidebarLoader.item; 0072 0073 // restore mail list if not there 0074 if (root.pageStack.depth === 0) { 0075 root.pageStack.push(getPage("FolderView")); 0076 } 0077 } else { 0078 // unload sidebar 0079 sidebarLoader.active = false; 0080 root.globalDrawer = null; 0081 0082 // load mailboxes page as first page, and then restore all pages 0083 let array = []; 0084 while (root.pageStack.depth > 0) { 0085 array.push(root.pageStack.pop()); 0086 } 0087 root.pageStack.push(getPage("MailBoxListPage")); 0088 for (let i = array.length - 1; i >= 0; i--) { 0089 root.pageStack.push(array[i]); 0090 } 0091 } 0092 } 0093 0094 Loader { 0095 id: sidebarLoader 0096 source: "qrc:/mailboxselector/MailBoxListSidebar.qml" 0097 active: false 0098 } 0099 }