Warning, /plasma-mobile/calindori/src/contents/ui/Main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net>
0003  * SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
0004  *
0005  * SPDX-License-Identifier: GPL-3.0-or-later
0006  */
0007 
0008 import QtQuick 2.7
0009 import org.kde.kirigami 2.12 as Kirigami
0010 import org.kde.calindori 0.1 as Calindori
0011 
0012 Kirigami.ApplicationWindow {
0013     id: root
0014 
0015     signal switchToMonthPage(var sDate, var cActionIndex)
0016 
0017     /**
0018      * Starting from the last layer in the stack, remove every layer keeping only the first one
0019      */
0020     function popExtraLayers() {
0021         while (pageStack.layers.depth > 1) {
0022             pageStack.layers.pop();
0023         }
0024     }
0025 
0026     globalDrawer: CalindoriGlobalDrawer {
0027         id: globalDrawer
0028 
0029         wideScreen: root.wideScreen
0030         monthView: calendarMonthPage
0031         calendar: Calindori.CalendarController.activeCalendar
0032         applicationFooter: messageFooter
0033     }
0034 
0035     contextDrawer: Kirigami.ContextDrawer {
0036         id: contextDrawer
0037 
0038         property var contextIconName: (pageStack && pageStack.currentItem && pageStack.currentItem.hasOwnProperty('contextIconName')) ?  pageStack.currentItem.contextIconName : null
0039         handleOpenIcon.source: contextIconName
0040         handleClosedIcon.source: contextIconName
0041 
0042         title: (pageStack.currentItem && pageStack.currentItem.hasOwnProperty("selectedDate") && !isNaN(pageStack.currentItem.selectedDate)) ? pageStack.currentItem.selectedDate.toLocaleDateString(_appLocale, Locale.ShortFormat) : ""
0043     }
0044 
0045     pageStack {
0046         initialPage: [calendarMonthPage]
0047         defaultColumnWidth: Kirigami.Units.gridUnit * 35
0048             
0049         globalToolBar.canContainHandles: true
0050         globalToolBar.style: Kirigami.ApplicationHeaderStyle.ToolBar
0051         globalToolBar.showNavigationButtons: Kirigami.ApplicationHeaderStyle.ShowBackButton
0052         popHiddenPages: true
0053     }
0054 
0055     Component {
0056         id: calendarMonthPage
0057 
0058         CalendarMonthPage {
0059             appContextDrawer: contextDrawer
0060             calendar: Calindori.CalendarController.activeCalendar
0061             dayRectangleWidth: Kirigami.Settings.isMobile ? Kirigami.Units.gridUnit * 2.5 : Kirigami.Units.gridUnit * 3.5
0062             loadWithAction: !Kirigami.Settings.isMobile && root.wideScreen ? 1 : -1
0063 
0064             onPageEnd: switchToMonthPage(lastDate, lastActionIndex)
0065         }
0066     }
0067 
0068     footer: MessageBoard {
0069         id: messageFooter
0070 
0071         leftPadding: (globalDrawer.drawerOpen ? globalDrawer.width : 0) + Kirigami.Units.smallSpacing
0072         activeCalendar: Calindori.CalendarController.activeCalendar
0073 
0074         Connections {
0075             target: Calindori.CalendarController
0076             function onStatusMessageChanged (statusMessage, messageType) {
0077                 messageFooter.text = statusMessage;
0078                 messageFooter.footerMode = (messageType === 0) ? MessageBoard.FooterMode.StartImport : (messageType === 1 ? MessageBoard.FooterMode.EndImportSuccess : MessageBoard.FooterMode.EndImportFailure);
0079             }
0080         }
0081     }
0082 
0083     onSwitchToMonthPage: {
0084         pageStack.clear();
0085         pageStack.push(calendarMonthPage, {selectedDate: sDate, loadWithAction: (!Kirigami.Settings.isMobile && root.wideScreen) ? cActionIndex : -1});
0086     }
0087 
0088 }