Warning, /plasma/milou/plasmoid/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * This file is part of the KDE Milou Project 0003 * SPDX-FileCopyrightText: 2013-2014 Vishesh Handa <me@vhanda.in> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 * 0007 */ 0008 0009 import QtQuick 2.1 0010 import QtQuick.Layouts 1.1 0011 0012 import org.kde.plasma.plasmoid 2.0 0013 0014 import org.kde.plasma.core 2.0 as PlasmaCore 0015 import org.kde.milou 0.1 as Milou 0016 0017 import "globals.js" as Globals 0018 0019 Item { 0020 id: mainWidget 0021 Plasmoid.switchWidth: Globals.SwitchWidth 0022 Plasmoid.switchHeight: Globals.SwitchWidth 0023 Layout.minimumWidth: Globals.PlasmoidWidth 0024 Layout.maximumWidth: Globals.PlasmoidWidth 0025 Layout.minimumHeight: wrapper.minimumHeight + wrapper.anchors.topMargin + wrapper.anchors.bottomMargin 0026 Layout.maximumHeight: Layout.minimumHeight 0027 0028 function isBottomEdge() { 0029 return plasmoid.location == PlasmaCore.Types.BottomEdge; 0030 } 0031 0032 Item { 0033 id: wrapper 0034 0035 property int minimumHeight: listView.count ? listView.contentHeight + searchField.height + 5 0036 : searchField.height 0037 property int maximumHeight: minimumHeight 0038 anchors.fill: parent 0039 0040 0041 SearchField { 0042 id: searchField 0043 0044 anchors { 0045 left: parent.left 0046 right: parent.right 0047 verticalCenter: parent.height / 2 0048 } 0049 onSearchTextChanged: { 0050 listView.setQueryString(text) 0051 } 0052 onClose: plasmoid.expanded = false 0053 } 0054 0055 Milou.ResultsView { 0056 id: listView 0057 //in case is expanded 0058 clip: true 0059 0060 anchors { 0061 left: parent.left 0062 right: parent.right 0063 } 0064 0065 reversed: isBottomEdge() 0066 onActivated: { 0067 searchField.text = ""; 0068 plasmoid.expanded = false; 0069 } 0070 onUpdateQueryString: function (text, cursorPosition) { 0071 searchField.text = text 0072 searchField.cursorPosition = cursorPosition 0073 } 0074 } 0075 0076 0077 Component.onCompleted: { 0078 //plasmoid.settingsChanged.connect(loadSettings) 0079 0080 if (!isBottomEdge()) { 0081 // Normal view 0082 searchField.anchors.top = wrapper.top 0083 listView.anchors.top = searchField.bottom 0084 listView.anchors.bottom = wrapper.bottom 0085 } 0086 else { 0087 // When on the bottom 0088 listView.anchors.top = wrapper.top 0089 listView.anchors.bottom = searchField.top 0090 searchField.anchors.bottom = wrapper.bottom 0091 } 0092 } 0093 } 0094 0095 Timer { 0096 id: theFocusDoesNotAlwaysWorkTimer 0097 interval: 100 0098 repeat: false 0099 0100 onTriggered: { 0101 setTextFieldFocus(plasmoid.expanded) 0102 } 0103 } 0104 0105 function setTextFieldFocus(shown) { 0106 searchField.setFocus(); 0107 searchField.selectAll(); 0108 } 0109 0110 function loadSettings() { 0111 listView.loadSettings() 0112 } 0113 0114 Plasmoid.onExpandedChanged: { 0115 setTextFieldFocus(plasmoid.expanded); 0116 // 0117 // The focus is not always set correctly. The hunch is that this 0118 // function is called before the popup is actually visible and 0119 // therfore the setFocus call does not do anything. So, we are using 0120 // a small timer and calling the setTextFieldFocus function again. 0121 // 0122 theFocusDoesNotAlwaysWorkTimer.start() 0123 } 0124 0125 }