Warning, /plasma/plasma-desktop/applets/kickoff/package/contents/ui/BasePage.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2011 Martin Gräßlin <mgraesslin@kde.org> 0003 SPDX-FileCopyrightText: 2012 Marco Martin <mart@kde.org> 0004 SPDX-FileCopyrightText: 2015-2018 Eike Hein <hein@kde.org> 0005 SPDX-FileCopyrightText: 2021 Mikel Johnson <mikel5764@gmail.com> 0006 SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 import QtQuick 2.15 0011 import QtQuick.Layouts 1.15 0012 import QtQuick.Templates 2.15 as T 0013 import QtQml 2.15 0014 import org.kde.ksvg 1.0 as KSvg 0015 import org.kde.plasma.workspace.trianglemousefilter 1.0 0016 0017 FocusScope { 0018 id: root 0019 property real preferredSideBarWidth: implicitSideBarWidth 0020 property real preferredSideBarHeight: implicitSideBarHeight 0021 0022 property alias sideBarComponent: sideBarLoader.sourceComponent 0023 property alias sideBarItem: sideBarLoader.item 0024 property alias contentAreaComponent: contentAreaLoader.sourceComponent 0025 property alias contentAreaItem: contentAreaLoader.item 0026 0027 property alias implicitSideBarWidth: sideBarLoader.implicitWidth 0028 property alias implicitSideBarHeight: sideBarLoader.implicitHeight 0029 0030 implicitWidth: root.preferredSideBarWidth + separator.implicitWidth + contentAreaLoader.implicitWidth 0031 implicitHeight: Math.max(root.preferredSideBarHeight, contentAreaLoader.implicitHeight) 0032 0033 TriangleMouseFilter { 0034 id: sideBarFilter 0035 anchors { 0036 left: parent.left 0037 top: parent.top 0038 bottom: parent.bottom 0039 } 0040 LayoutMirroring.enabled: kickoff.sideBarOnRight 0041 implicitWidth: root.preferredSideBarWidth 0042 implicitHeight: root.preferredSideBarHeight 0043 edge: kickoff.sideBarOnRight ? Qt.LeftEdge : Qt.RightEdge 0044 blockFirstEnter: true 0045 Loader { 0046 id: sideBarLoader 0047 anchors.fill: parent 0048 // When positioned after the content area, Tab should go to the start of the footer focus chain 0049 Keys.onTabPressed: event => { 0050 (kickoff.paneSwap ? kickoff.footer.nextItemInFocusChain() : contentAreaLoader) 0051 .forceActiveFocus(Qt.TabFocusReason); 0052 } 0053 Keys.onBacktabPressed: event => { 0054 (kickoff.paneSwap ? contentAreaLoader : kickoff.header.pinButton) 0055 .forceActiveFocus(Qt.BacktabFocusReason); 0056 } 0057 Keys.onLeftPressed: event => { 0058 if (kickoff.sideBarOnRight) { 0059 contentAreaLoader.forceActiveFocus(); 0060 } 0061 } 0062 Keys.onRightPressed: event => { 0063 if (!kickoff.sideBarOnRight) { 0064 contentAreaLoader.forceActiveFocus(); 0065 } 0066 } 0067 Keys.onUpPressed: event => { 0068 kickoff.header.nextItemInFocusChain() 0069 .forceActiveFocus(Qt.BacktabFocusReason); 0070 } 0071 Keys.onDownPressed: event => { 0072 (kickoff.paneSwap ? kickoff.footer.leaveButtons.nextItemInFocusChain() : kickoff.footer.tabBar) 0073 .forceActiveFocus(Qt.TabFocusReason); 0074 } 0075 } 0076 } 0077 KSvg.SvgItem { 0078 id: separator 0079 anchors { 0080 left: sideBarFilter.right 0081 top: parent.top 0082 bottom: parent.bottom 0083 } 0084 LayoutMirroring.enabled: kickoff.sideBarOnRight 0085 implicitWidth: naturalSize.width 0086 implicitHeight: implicitWidth 0087 elementId: "vertical-line" 0088 svg: KickoffSingleton.lineSvg 0089 } 0090 Loader { 0091 id: contentAreaLoader 0092 focus: true 0093 anchors { 0094 left: separator.right 0095 right: parent.right 0096 top: parent.top 0097 bottom: parent.bottom 0098 } 0099 LayoutMirroring.enabled: kickoff.sideBarOnRight 0100 // When positioned after the sidebar, Tab should go to the start of the footer focus chain 0101 Keys.onTabPressed: event => { 0102 (kickoff.paneSwap ? sideBarLoader : kickoff.footer.nextItemInFocusChain()) 0103 .forceActiveFocus(Qt.TabFocusReason) 0104 } 0105 Keys.onBacktabPressed: event => { 0106 (kickoff.paneSwap ? kickoff.header.avatar : sideBarLoader) 0107 .forceActiveFocus(Qt.BacktabFocusReason) 0108 } 0109 Keys.onLeftPressed: event => { 0110 if (!kickoff.sideBarOnRight) { 0111 sideBarLoader.forceActiveFocus(); 0112 } 0113 } 0114 Keys.onRightPressed: event => { 0115 if (kickoff.sideBarOnRight) { 0116 sideBarLoader.forceActiveFocus(); 0117 } 0118 } 0119 Keys.onUpPressed: event => { 0120 kickoff.searchField.forceActiveFocus(Qt.BacktabFocusReason); 0121 } 0122 Keys.onDownPressed: event => { 0123 (kickoff.paneSwap ? kickoff.footer.tabBar : kickoff.footer.leaveButtons.nextItemInFocusChain()) 0124 .forceActiveFocus(Qt.TabFocusReason) 0125 } 0126 } 0127 }