2 * Copyright (C) 2014,2015 Canonical, Ltd.
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.
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.
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/>.
18 import Ubuntu.Components 1.3
23 implicitHeight: childrenRect.height
24 implicitWidth: Math.max(moreButton.implicitWidth, column.maxButtonImplicitWidth)
26 signal triggeredAction(var actionData)
28 property alias model: actionRepeater.model
29 property alias strokeColor: moreButton.strokeColor
33 property bool expanded: false
35 objectName: "moreLessButton"
36 text: !expanded ? i18n.tr("More...") : i18n.tr("Less...")
37 strokeColor: theme.palette.normal.baseText
38 onClicked: expanded = !expanded
45 top: moreButton.bottom
46 topMargin: height > 0 ? spacing : 0
48 objectName: "buttonColumn"
50 height: moreButton.expanded ? implicitHeight : 0
52 property real maxButtonImplicitWidth: 0
53 function calculateImplicitWidth() {
54 maxButtonImplicitWidth = 0;
55 for (var i in children) {
56 maxButtonImplicitWidth = Math.max(maxButtonImplicitWidth, children[i].implicitWidth);
62 UbuntuNumberAnimation {
63 duration: UbuntuAnimation.SnapDuration
70 delegate: PreviewActionButton {
73 onImplicitWidthChanged: column.calculateImplicitWidth();
74 onClicked: root.triggeredAction(modelData)
75 strokeColor: moreButton.strokeColor