Warning, /plasma-mobile/mycroft-plasmoid-mobile/plasmoid/contents/ui/AutocompleteBox.qml is written in an unsupported language. File is not indexed.
0001 /* Copyright 2016 Aditya Mehra <aix.m@outlook.com> 0002 0003 This library is free software; you can redistribute it and/or 0004 modify it under the terms of the GNU Lesser General Public 0005 License as published by the Free Software Foundation; either 0006 version 2.1 of the License, or (at your option) version 3, or any 0007 later version accepted by the membership of KDE e.V. (or its 0008 successor approved by the membership of KDE e.V.), which shall 0009 act as a proxy defined in Section 6 of version 3 of the license. 0010 0011 This library is distributed in the hope that it will be useful, 0012 but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0014 Lesser General Public License for more details. 0015 0016 You should have received a copy of the GNU Lesser General Public 0017 License along with this library. If not, see <http://www.gnu.org/licenses/>. 0018 */ 0019 0020 import QtQuick 2.7 0021 import QtQuick.Controls 2.2 0022 import org.kde.plasma.core 2.0 as PlasmaCore 0023 import org.kde.plasma.components 2.0 as PlasmaComponents 0024 0025 Rectangle { 0026 id: container 0027 implicitHeight: autoCompListView.implicitHeight 0028 implicitWidth: cbwidth 0029 color: theme.backgroundColor 0030 border.width: 1 0031 border.color: Qt.lighter(theme.backgroundColor, 1.2); 0032 property QtObject model: undefined 0033 property int count: filterItem.model.count 0034 property alias suggestionsModel: filterItem.model 0035 property alias filter: filterItem.filter 0036 property alias property: filterItem.property 0037 property alias navView: autoCompListView 0038 signal itemSelected(variant item) 0039 0040 function filterMatchesLastSuggestion() { 0041 return suggestionsModel.count == 1 && suggestionsModel.get(0).name === filter 0042 } 0043 0044 visible: filter.length > 0 && suggestionsModel.count > 0 && !filterMatchesLastSuggestion() 0045 0046 Logic { 0047 id: filterItem 0048 sourceModel: container.model 0049 } 0050 0051 ListView{ 0052 id: autoCompListView 0053 anchors.fill: parent 0054 model: container.suggestionsModel 0055 implicitHeight: contentItem.childrenRect.height 0056 verticalLayoutDirection: ListView.TopToBottom 0057 keyNavigationEnabled: true 0058 keyNavigationWraps: true 0059 clip: true 0060 delegate: Item { 0061 id: delegateItem 0062 property bool keyboardSelected: autoCompListView.selectedIndex === suggestion.index 0063 property bool selected: itemMouseArea.containsMouse 0064 property variant suggestion: model 0065 0066 height: textComponent.height + units.gridUnit * 2 0067 width: container.width 0068 0069 FocusScope{ 0070 anchors.fill:parent 0071 focus: true 0072 0073 Rectangle{ 0074 id: autdelRect 0075 color: delegateItem.selected ? Qt.darker(theme.textColor, 1.2) : Qt.darker(theme.backgroundColor, 1.2) 0076 width: parent.width 0077 height: textComponent.height + units.gridUnit * 2 0078 0079 PlasmaCore.IconItem { 0080 id : smallIconV 0081 source: "text-speak" 0082 width: units.gridUnit * 2 0083 height: units.gridUnit * 2 0084 anchors.verticalCenter: parent.verticalCenter 0085 anchors.left: parent.left 0086 anchors.leftMargin: units.gridUnit * 0.35 0087 } 0088 0089 PlasmaCore.SvgItem { 0090 id: innerDelegateRectDividerLine 0091 anchors { 0092 left: smallIconV.right 0093 leftMargin: units.gridUnit * 0.35 0094 top: parent.top 0095 topMargin: 0 0096 bottom: parent.bottom 0097 bottomMargin: 0 0098 } 0099 width: lineitemdividerSvg.elementSize("vertical-line").width 0100 z: 110 0101 elementId: "vertical-line" 0102 0103 svg: PlasmaCore.Svg { 0104 id: lineitemdividerSvg; 0105 imagePath: "widgets/line" 0106 } 0107 } 0108 0109 Text { 0110 id: textComponent 0111 anchors.left: innerDelegateRectDividerLine.right 0112 anchors.leftMargin: units.gridUnit * 0.35 0113 color: delegateItem.selected ? Qt.darker(theme.backgroundColor, 1.2) : Qt.darker(theme.textColor, 1.2) 0114 text: model.name; 0115 width: parent.width - 4 0116 anchors.horizontalCenter: parent.horizontalCenter 0117 anchors.verticalCenter: parent.verticalCenter 0118 } 0119 0120 MouseArea { 0121 id: itemMouseArea 0122 anchors.fill: parent 0123 hoverEnabled: true 0124 onClicked: container.itemSelected(delegateItem.suggestion) 0125 } 0126 0127 PlasmaCore.SvgItem { 0128 anchors { 0129 left: parent.left 0130 right: parent.right 0131 bottom: parent.bottom 0132 } 0133 width: 1 0134 height: horlineAutoCSvg.elementSize("horizontal-line").height 0135 0136 elementId: "horizontal-line" 0137 z: 110 0138 svg: PlasmaCore.Svg { 0139 id: horlineAutoCSvg; 0140 imagePath: "widgets/line" 0141 } 0142 } 0143 } 0144 } 0145 } 0146 ScrollBar.vertical: ScrollBar { } 0147 } 0148 }