Warning, /plasma/plasma-desktop/applets/kickoff/package/contents/ui/PlacesPage.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2021 Mikel Johnson <mikel5764@gmail.com>
0003  * SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com>
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Layouts 1.15
0009 import QtQuick.Templates 2.15 as T
0010 import QtQml 2.15
0011 
0012 BasePage {
0013     id: root
0014     sideBarComponent: KickoffListView {
0015         id: sideBar
0016         focus: true // needed for Loaders
0017         model: placesCategoryModel
0018         delegate: KickoffListDelegate {
0019             url: ""
0020             description: ""
0021             width: view.availableWidth
0022             isCategoryListItem: true
0023         }
0024     }
0025     contentAreaComponent: KickoffListView {
0026         id: contentArea
0027         mainContentView: true
0028         focus: true
0029         objectName: "frequentlyUsedView"
0030         model: switch (root.sideBarItem.currentIndex) {
0031             case 0: return kickoff.computerModel
0032             case 1: return kickoff.recentUsageModel
0033             case 2: return kickoff.frequentUsageModel
0034         }
0035         onActiveFocusChanged: if (activeFocus && count < 1) {
0036             root.sideBarItem.forceActiveFocus()
0037         }
0038     }
0039 
0040     // we make our model ourselves
0041     ListModel {
0042         id: placesCategoryModel
0043         ListElement { display: "Computer"; decoration: "computer" }
0044         ListElement { display: "History"; decoration: "view-history" }
0045         ListElement { display: "Frequently Used"; decoration: "clock" }
0046         Component.onCompleted: {
0047             // Can't use a function in a QML ListElement declaration
0048             placesCategoryModel.setProperty(0, "display", i18nc("category in Places sidebar", "Computer"))
0049             placesCategoryModel.setProperty(1, "display", i18nc("category in Places sidebar", "History"))
0050             placesCategoryModel.setProperty(2, "display", i18nc("category in Places sidebar", "Frequently Used"))
0051             if (KickoffSingleton.powerManagement.data["PowerDevil"]
0052                 && KickoffSingleton.powerManagement.data["PowerDevil"]["Is Lid Present"]) {
0053                 placesCategoryModel.setProperty(0, "decoration", "computer-laptop")
0054             }
0055         }
0056     }
0057     // NormalPage doesn't get destroyed when deactivated, so the binding uses
0058     // StackView.status and visible. This way the bindings are reset when
0059     // NormalPage is Activated again.
0060     Binding {
0061         target: kickoff
0062         property: "sideBar"
0063         value: root.sideBarItem
0064         when: root.T.StackView.status === T.StackView.Active && root.visible
0065         restoreMode: Binding.RestoreBinding
0066     }
0067     Binding {
0068         target: kickoff
0069         property: "contentArea"
0070         value: root.contentAreaItem // NOT root.contentAreaItem.currentItem
0071         when: root.T.StackView.status === T.StackView.Active && root.visible
0072         restoreMode: Binding.RestoreBinding
0073     }
0074 }