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 as PlasmaCore
0015 import org.kde.milou 0.1 as Milou
0016
0017 import "globals.js" as Globals
0018
0019 PlasmoidItem {
0020 id: mainWidget
0021 switchWidth: Globals.SwitchWidth
0022 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 fullRepresentation: Item {
0033 id: wrapper
0034
0035 property alias searchField: searchField
0036 property alias listView: listView
0037 property int minimumHeight: listView.count ? listView.contentHeight + searchField.height + 5
0038 : searchField.height
0039 property int maximumHeight: minimumHeight
0040 anchors.fill: parent
0041
0042
0043 SearchField {
0044 id: searchField
0045
0046 anchors {
0047 left: parent.left
0048 right: parent.right
0049 verticalCenter: parent.height / 2
0050 }
0051 onSearchTextChanged: {
0052 listView.setQueryString(text)
0053 }
0054 onClose: mainWidget.expanded = false
0055 }
0056
0057 Milou.ResultsView {
0058 id: listView
0059 //in case is expanded
0060 clip: true
0061
0062 anchors {
0063 left: parent.left
0064 right: parent.right
0065 }
0066
0067 reversed: isBottomEdge()
0068 onActivated: {
0069 searchField.text = "";
0070 mainWidget.expanded = false;
0071 }
0072 onUpdateQueryString: function (text, cursorPosition) {
0073 searchField.text = text
0074 searchField.cursorPosition = cursorPosition
0075 }
0076 }
0077
0078
0079 Component.onCompleted: {
0080 //plasmoid.settingsChanged.connect(loadSettings)
0081
0082 if (!isBottomEdge()) {
0083 // Normal view
0084 searchField.anchors.top = wrapper.top
0085 listView.anchors.top = searchField.bottom
0086 listView.anchors.bottom = wrapper.bottom
0087 }
0088 else {
0089 // When on the bottom
0090 listView.anchors.top = wrapper.top
0091 listView.anchors.bottom = searchField.top
0092 searchField.anchors.bottom = wrapper.bottom
0093 }
0094 }
0095 }
0096
0097 Timer {
0098 id: theFocusDoesNotAlwaysWorkTimer
0099 interval: 100
0100 repeat: false
0101
0102 onTriggered: {
0103 setTextFieldFocus(mainWidget.expanded)
0104 }
0105 }
0106
0107 function setTextFieldFocus(shown) {
0108 mainWidget.fullRepresentationItem.searchField.setFocus();
0109 mainWidget.fullRepresentationItem.searchField.selectAll();
0110 }
0111
0112 function loadSettings() {
0113 mainWidget.fullRepresentationItem.listView.loadSettings()
0114 }
0115
0116 onExpandedChanged: {
0117 setTextFieldFocus(mainWidget.expanded);
0118 //
0119 // The focus is not always set correctly. The hunch is that this
0120 // function is called before the popup is actually visible and
0121 // therfore the setFocus call does not do anything. So, we are using
0122 // a small timer and calling the setTextFieldFocus function again.
0123 //
0124 theFocusDoesNotAlwaysWorkTimer.start()
0125 }
0126
0127 }