forked from tbourvon/qml-material
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Icon.qml
81 lines (61 loc) · 2.03 KB
/
Icon.qml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* QML Material - An application framework implementing Material Design.
* Copyright (C) 2014 Michael Spencer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.3
Image {
id: icon
source: {
var list = name.split("/")
if (name == "" || list[0] == "awesome")
return ""
var color = icon.color
if (color == 'gray' || color == 'grey')
color = 'grey600'
var dp_size = "18"
if (size > units.dp(36))
dp_size = "48"
if (size > units.dp(24))
dp_size = "36"
else if (size > units.dp(18))
dp_size = "24"
return Qt.resolvedUrl("icons/%1/ic_%2_%3_%4dp.png".arg(list[0]).arg(list[1]).arg(color).arg(dp_size))
}
/*!
The name of the icon to display.
\qmlproperty string name
*/
property string name
property int size: units.dp(24)
width: icon.name.indexOf("awesome/") == 0
? height : sourceSize.width * height/sourceSize.height
height: size
property string color: "grey600"
mipmap: true
AwesomeIcon {
anchors.centerIn: parent
size: icon.size * 0.9
visible: icon.name.indexOf("awesome/") == 0
name: {
var list = icon.name.split("/")
if (list[0] == "awesome") {
return list[1]
}
return ''
}
color: icon.color
}
}