This repository has been archived by the owner on Nov 9, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
MasterDetailView.qml
118 lines (93 loc) · 2.93 KB
/
MasterDetailView.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import QtQuick 2.0
import Ubuntu.Components 1.1
import Ubuntu.Components.ListItems 1.0 as ListItem
Item {
id: view
property alias model: messagesList.model
property bool itemSelected
property Component delegate
property alias masterWidth: messagesList.width
property alias content: contentView.children
property alias count: messagesList.count
property string noneMessage: "No messages"
property string noneSelected: "No message selected"
property alias header: messagesList.header
property alias footer: _footer.children
property bool forceSidebar: false
property Action action: null
Label {
opacity: 0.5
fontSize: "large"
text: noneMessage
visible: messagesList.count === 0 && !forceSidebar
anchors.centerIn: parent
}
Item {
visible: messagesList.count > 0 || forceSidebar
anchors.fill: parent
Sidebar {
id: sidebar
width: Math.max(units.gu(30), Math.min(units.gu(40), view.width * 1/3))
autoFlick: false
ListView {
id: messagesList
anchors {
left: parent.left
right: parent.right
top: parent.top
bottom: _footer.top
}
clip: true
delegate: view.delegate
}
Scrollbar {
flickableItem: messagesList
}
Column {
id: _footer
visible: view.action
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
}
Rectangle {
width: parent.width
height: addButton.height + units.gu(2)
ListItem.ThinDivider {
anchors.top: parent.top
}
color: Qt.rgba(0,0,0,0.2)
Button {
id: addButton
anchors.centerIn: parent
width: parent.width - units.gu(2)
text: view.action.text
enabled: view.action.enabled
onClicked: view.action.triggered(addButton)
}
}
}
}
Item {
id: contents
anchors {
left: sidebar.right
top: parent.top
bottom: parent.bottom
right: parent.right
}
Label {
opacity: 0.5
fontSize: "large"
text: noneSelected
visible: !itemSelected
anchors.centerIn: parent
}
Item {
id: contentView
anchors.fill: parent
}
}
}
}