Unity 8
 All Classes Functions
SearchBar.qml
1 /*
2  * Copyright (C) 2012, 2013 Canonical, Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.0
18 import Ubuntu.Components 0.1
19 
20 Item {
21  id: root
22  property alias activityIndicatorVisible: activityIndicator.visible
23  property alias text: searchBar.text
24  property alias placeholderText: searchBar.placeholderText
25  property alias searchEnabled: searchBar.enabled
26  signal microphoneClicked
27  signal textFocused
28 
29  readonly property real imageSize: units.gu(3)
30 
31  function unfocus()
32  {
33  searchBar.focus = false
34  }
35 
36  ActivityIndicator {
37  id: activityIndicator
38  height: imageSize
39  width: height
40  x: magnifierImage.x
41  y: magnifierImage.y
42  running: visible
43  }
44 
45  TextField {
46  id: searchBar
47  anchors.fill: parent
48 
49  hasClearButton: false
50  font.pixelSize: FontUtils.sizeToPixels("large")
51 
52  onActiveFocusChanged: {
53  if (activeFocus) {
54  root.textFocused()
55  }
56  }
57 
58  Item {
59  id: primary
60  height: searchBar.height
61  width: height
62 
63  Image {
64  id: magnifierImage
65  height: imageSize
66  width: height
67  anchors.centerIn: parent
68  source: "graphics/icon_search.png"
69  visible: !activityIndicator.visible && !clearImage.visible
70  }
71 
72  Image {
73  id: clearImage
74  height: imageSize
75  width: height
76  anchors.centerIn: parent
77  source: "graphics/icon_clear.png"
78  visible: !activityIndicator.visible && searchBar.text != ""
79  MouseArea {
80  anchors.fill: parent
81  onClicked: searchBar.text = ""
82  }
83  }
84  }
85 
86  primaryItem: primary
87  secondaryItem: MouseArea {
88  height: searchBar.height
89  width: height
90  onClicked: microphoneClicked()
91 
92  Image {
93  height: imageSize
94  width: height
95  anchors.centerIn: parent
96  source: "graphics/microphone.png"
97  }
98  }
99  }
100 }