on xenial help sign in
Move Base.qml to DashCategoryBase

It's the only place we use it and we can simplify stuff quite a bit

commitade5d2020ab51236820feb2f923970e331b7a203 authorAlbert Astals <albert.astals@canonical.com> dateThu 2 Oct 2014, 11:12 (12 years ago) parent881b329
4 files changed+63−174
qml/Components/ListItems/Base.qml−125 qml/Components/ListItems/Highlight.qml−46 qml/Dash/DashCategoryBase.qml+62 qml/Dash/GenericScopeView.qml+1−3
qml/Components/ListItems/Base.qmldeleted−125
@@ -1,125 +0,0 @@
1−/*
2− * Copyright (C) 2012 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−AbstractButton {
21− id: emptyListItem
22− width: parent ? parent.width : units.gu(31)
23− height: body.height + bottomDividerLine.height
24−
25− /*!
26− \preliminary
27− Specifies whether the list item is selected.
28− */
29− property bool selected: false
30−
31− /*!
32− \preliminary
33− Highlight the list item when it is pressed.
34− This is used to disable the highlighting of the full list item
35− when custom highlighting needs to be implemented (for example in
36− ListItem.Standard which can have a split).
37− */
38− property bool highlightWhenPressed: true
39−
40− /*!
41− \preliminary
42− Set to show or hide the thin bottom divider line (drawn by the \l ThinDivider component).
43− This line is shown by default except in cases where this item is the delegate of a ListView.
44− */
45− property bool showDivider: __showDivider()
46−
47− /*!
48− \internal
49− Method to automatically determine if the bottom divider line should be drawn.
50− This always returns true, unless item is a delegate in a ListView. If in a ListView
51− it will return false only when:
52− + if this is the final item in the list, and ListView.footer is set (again as thin
53− divider line won't look well with footer below it)
54− */
55− function __showDivider() {
56− // if we're not in ListView, always show a thin dividing line at the bottom
57− var model = null;
58− if (typeof ListViewWithPageHeader !== 'undefined') {
59− if (typeof ListViewWithPageHeader.model !== 'undefined') {
60− model = ListViewWithPageHeader.model;
61− }
62− } else if (ListView.view !== null) {
63− model = ListView.view.model;
64− }
65− // if we're last item in ListView don't show divider
66− if (model && index === model.count - 1) return false;
67−
68− return true;
69− }
70−
71− /* Relevant really only for ListViewWithPageHeader case: specify how many pixels we can overlap with the section header */
72− readonly property int allowedOverlap: units.dp(1)
73−
74− property real __heightToClip: {
75− // Check this is in position where clipping is needed
76− if (typeof ListViewWithPageHeader !== 'undefined') {
77− if (typeof heightToClip !== 'undefined') {
78− if (heightToClip >= allowedOverlap) {
79− return heightToClip - allowedOverlap;
80− }
81− }
82− }
83− return 0;
84− }
85−
86− /*!
87− \internal
88− Reparent so that the visuals of the children does not
89− occlude the bottom divider line.
90− */
91− default property alias children: body.children
92−
93− Item {
94− id: clippingContainer
95− height: parent.height - __heightToClip
96− anchors { left: parent.left; right: parent.right; bottom: parent.bottom }
97− clip: __heightToClip > 0
98−
99− Item {
100− id: body
101− anchors {
102− left: parent.left
103− right: parent.right
104− bottom: bottomDividerLine.top
105− }
106− height: childrenRect.height
107− }
108−
109− ThinDivider {
110− id: bottomDividerLine
111− anchors.bottom: parent.bottom
112− visible: showDivider
113− }
114−
115− Highlight {
116− anchors {
117− top: parent.top
118− left: parent.left
119− right: parent.right
120− bottom: bottomDividerLine.top
121− }
122− pressed: (emptyListItem.selected || (emptyListItem.highlightWhenPressed && emptyListItem.pressed)) ? "pressed" : ""
123− }
124− }
125−}
qml/Components/ListItems/Highlight.qmldeleted−46
@@ -1,46 +0,0 @@
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− */
16−
17−import QtQuick 2.0
18−
19−Rectangle {
20− id: highlight
21−
22− property bool pressed: false
23− property real pressedOpacity: 0.3
24−
25− color: "black"
26− opacity: 0
27− state: pressed ? "pressed" : ""
28− states: [
29− State {
30− name: "pressed"
31− PropertyChanges { target: highlight; opacity: pressedOpacity}
32− }
33− ]
34− transitions: [
35− Transition {
36− from: ""
37− to: "pressed"
38− NumberAnimation { target: highlight; property: "opacity"; duration: 50}
39− },
40− Transition {
41− from: "pressed"
42− to: ""
43− NumberAnimation { target: highlight; property: "opacity"; duration: 100}
44− }
45− ]
46−}
qml/Dash/DashCategoryBase.qmlnew file+62
@@ -0,0 +1,62 @@
1+/*
2+ * Copyright (C) 2012-2014 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+ width: parent.width
22+ height: body.height
23+
24+ /* Relevant really only for ListViewWithPageHeader case: specify how many pixels we can overlap with the section header */
25+ readonly property int allowedOverlap: units.dp(1)
26+
27+ property real __heightToClip: {
28+ // Check this is in position where clipping is needed
29+ if (typeof ListViewWithPageHeader !== 'undefined') {
30+ if (typeof heightToClip !== 'undefined') {
31+ if (heightToClip >= allowedOverlap) {
32+ return heightToClip - allowedOverlap;
33+ }
34+ }
35+ }
36+ return 0;
37+ }
38+
39+ /*!
40+ \internal
41+ Reparent so that the visuals of the children does not
42+ occlude the bottom divider line.
43+ */
44+ default property alias children: body.children
45+
46+ Item {
47+ id: clippingContainer
48+ height: parent.height - __heightToClip
49+ anchors { left: parent.left; right: parent.right; bottom: parent.bottom }
50+ clip: __heightToClip > 0
51+
52+ Item {
53+ id: body
54+ anchors {
55+ left: parent.left
56+ right: parent.right
57+ bottom: parent.bottom
58+ }
59+ height: childrenRect.height
60+ }
61+ }
62+}
qml/Dash/GenericScopeView.qml+1−3
@@ -209,11 +209,9 @@ FocusScope {
209209 }
210210 }
211211
212− delegate: ListItems.Base {
212+ delegate: DashCategoryBase {
213213 id: baseItem
214214 objectName: "dashCategory" + category
215− highlightWhenPressed: false
216− showDivider: false
217215
218216 property Item seeAllButton: seeAll
219217