on fbede75 help sign in
unity8/Components/Tile.qml
94 lines 2.8 kB history raw
1/*
2 * Copyright (C) 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 */
17import QtQuick 2.0
18import Ubuntu.Components 0.1
20AbstractButton {
21 id: root
22 property alias source: image.source
23 property alias fillMode: image.fillMode
24 property alias horizontalAlignment: image.horizontalAlignment
25 property alias verticalAlignment: image.verticalAlignment
26 property alias text: label.text
27 property int imageWidth
28 property int imageHeight
29 opacity: GridView.view.highlightIndex === -1 ? 1 :
30 GridView.view.highlightIndex === index ? 0.6 : 0.2
31 readonly property int center: (index % GridView.view.columns * width) + (width / 2)
33 Behavior on opacity {
34 UbuntuNumberAnimation {}
35 }
37 UbuntuShape {
38 id: icon
39 anchors {
40 top: parent.top
41 horizontalCenter: parent.horizontalCenter
42 }
43 radius: "medium"
44 width: imageWidth
45 height: imageHeight
46 image: Image {
47 id: image
48 objectName: "image"
49 sourceSize { width: icon.width; height: icon.height }
50 asynchronous: true
51 cache: false
52 }
53 }
55 UbuntuShape {
56 id: borderPressed
57 objectName: "borderPressed"
59 anchors.fill: icon
60 radius: "medium"
61 borderSource: "radius_pressed.sci"
62 opacity: root.pressed ? 1.0 : 0.0
63 Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
64 }
66 Item {
67 anchors {
68 left: parent.left
69 right: parent.right
70 top: icon.bottom
71 }
72 height: units.gu(2)
74 Label {
75 id: label
76 objectName: "label"
77 anchors {
78 baseline: parent.bottom
79 left: parent.left
80 right: parent.right
81 leftMargin: units.gu(1)
82 rightMargin: units.gu(1)
83 }
85 color: Theme.palette.selected.backgroundText
86 opacity: 0.9
87 style: Text.Raised
88 styleColor: "black"
89 fontSize: "small"
90 elide: Text.ElideMiddle
91 horizontalAlignment: Text.AlignHCenter
92 }
93 }