on cf44c47 help sign in
unity8/Dash/Generic/GenericPreview.qml
106 lines 3.5 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
19import "../../Components"
20import "../../Components/ListItems" as ListItems
21import "../../Components/IconUtil.js" as IconUtil
22import ".."
24DashPreview {
25 id: genericPreview
27 title: previewData.title
28 previewWidthRatio: 0.6
30 property url url: IconUtil.from_gicon(previewData.image)
32 header: UbuntuShape {
33 id: urlLoader
34 anchors.left: parent.left
35 anchors.right: parent.right
36 height: width * previewImage.sourceSize.height / previewImage.sourceSize.width
37 radius: "medium"
38 image: Image {
39 id: previewImage
40 asynchronous: true
41 source: genericPreview.url
42 fillMode: Image.PreserveAspectCrop
43 }
44 }
46 buttons: GridView {
47 id: buttons
48 model: genericPreview.previewData.actions
50 property int numOfRows: (count + 1) / 2
51 property int spacing: units.gu(1)
52 height: Math.max(units.gu(4), units.gu(4)*numOfRows + spacing*(numOfRows - 1))
54 cellWidth: Math.max(units.gu(9), width / 2)
55 cellHeight: buttonHeight + spacing
56 property int buttonWidth: Math.max(0, width / 2 - spacing)
57 property int buttonHeight: units.gu(4)
59 delegate: Button {
60 width: Math.max(units.gu(4), buttons.buttonWidth)
61 height: buttons.buttonHeight
62 color: "#dd4814"
63 text: modelData.displayName
64 iconSource: modelData.iconHint
65 iconPosition: "right"
66 visible: true
67 onClicked: {
68 genericPreview.previewData.execute(modelData.id, { })
69 }
70 }
71 focus: false
72 }
73 body: Column {
74 spacing: units.gu(2)
76 Label {
77 anchors { left: parent.left; right: parent.right }
78 visible: text != ""
79 fontSize: "medium"
80 opacity: 0.6
81 color: "white"
82 text: previewData.subtitle.replace(/[\r\n]+/g, "<br />")
83 style: Text.Raised
84 styleColor: "black"
85 wrapMode: Text.WordWrap
86 textFormat: Text.RichText
87 // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
88 onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
89 }
91 Label {
92 anchors { left: parent.left; right: parent.right }
93 visible: text != ""
94 fontSize: "small"
95 opacity: 0.6
96 color: "white"
97 text: previewData.description.replace(/[\r\n]+/g, "<br />")
98 style: Text.Raised
99 styleColor: "black"
100 wrapMode: Text.WordWrap
101 textFormat: Text.RichText
102 // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
103 onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
104 }
105 }