1/*
2 *   Copyright 2015 Marco Martin <mart@kde.org>
3 *
4 *   This program is free software; you can redistribute it and/or modify
5 *   it under the terms of the GNU Library General Public License as
6 *   published by the Free Software Foundation; either version 2 or
7 *   (at your option) any later version.
8 *
9 *   This program is distributed in the hope that it will be useful,
10 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
11 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 *   GNU Library General Public License for more details
13 *
14 *   You should have received a copy of the GNU Library General Public
15 *   License along with this program; if not, write to the
16 *   Free Software Foundation, Inc.,
17 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 */
19
20import QtQuick 2.0
21import QtQuick.Controls 2.2 as Controls
22import QtQuick.Layouts 1.2
23import org.kde.kirigami 2.5
24
25ScrollablePage {
26    id: page
27    Layout.fillWidth: true
28    //implicitWidth: Units.gridUnit * (Math.floor(Math.random() * 35) + 10)
29
30    title: "Buttons"
31
32    actions {
33        main: Action {
34            iconName: sheet.sheetOpen ? "dialog-cancel" : "document-edit"
35            text: "Main Action Text"
36            checkable: true
37            onCheckedChanged: sheet.sheetOpen = checked;
38            shortcut: "Alt+S"
39        }
40        left: Action {
41            iconName: "go-previous"
42            text: "Left Action Text"
43            onTriggered: {
44                showPassiveNotification("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id risus id augue euismod accumsan. Nunc vestibulum placerat bibendum. Morbi commodo auctor varius. Donec molestie euismod ultrices. Sed facilisis augue nec eros auctor, vitae mattis quam rhoncus. Nam ut erat diam. Curabitur iaculis accumsan magna, eget fermentum massa scelerisque eu. Cras elementum erat non erat euismod accumsan. Vestibulum ac mi sed dui finibus pulvinar. Vivamus dictum, leo sed lobortis porttitor, nisl magna faucibus orci, sit amet euismod arcu elit eget est. Duis et vehicula nibh. In arcu sapien, laoreet sit amet porttitor non, rhoncus vel magna. Suspendisse imperdiet consectetur est nec ornare. Pellentesque bibendum sapien at erat efficitur vehicula. Morbi sed porta nibh. Vestibulum ut urna ut dolor sagittis mattis.")
45            }
46        }
47        right: Action {
48            iconName: "go-next"
49            text: "Right Action Text"
50            onTriggered: {
51                showPassiveNotification("Right action triggered")
52            }
53        }
54        contextualActions: [
55            Action {
56                text:"Action Parent Expandible"
57                iconName: "bookmarks"
58                expandible: true
59                Action {
60                    text: "Sub action 1"
61                }
62                Action {
63                    text: "Sub action 1"
64                }
65            },
66            Action {
67                text:"Action Parent"
68                iconName: "bookmarks"
69                Action {
70                    text: "Sub action 1"
71                }
72                Action {
73                    text: "Sub action 1"
74                }
75            },
76            Action {
77                text:"Disabled Action"
78                iconName: "folder"
79                enabled: false
80            },
81            Action {
82                text: "Action for Sheet"
83                visible: sheet.sheetOpen
84            }
85        ]
86    }
87
88
89    //Close the drawer with the back button
90    onBackRequested: {
91        if (bottomDrawer.drawerOpen) {
92            event.accepted = true;
93            bottomDrawer.close();
94        }
95        if (sheet.sheetOpen) {
96            event.accepted = true;
97            sheet.close();
98        }
99    }
100
101    OverlayDrawer {
102        id: bottomDrawer
103        edge: Qt.BottomEdge
104        contentItem: Item {
105            implicitHeight: childrenRect.height + Units.gridUnit
106            ColumnLayout {
107                anchors.centerIn: parent
108                Controls.Button {
109                    text: "Button1"
110                    onClicked: showPassiveNotification("Button 1 clicked")
111                }
112                Controls.Button {
113                    text: "Button2"
114                    onClicked: showPassiveNotification("Button 2 clicked")
115                }
116                Item {
117                    Layout.minimumHeight: Units.gridUnit * 4
118                }
119            }
120        }
121    }
122
123
124    OverlaySheet {
125        id: sheet
126        onSheetOpenChanged: page.actions.main.checked = sheetOpen
127        header: Heading {
128            text: "Title"
129        }
130        footer: RowLayout {
131            Controls.Label {
132                text: "Footer:"
133            }
134            Controls.TextField {
135                Layout.fillWidth: true
136                Layout.alignment: Qt.AlignCenter
137            }
138        }
139        ColumnLayout {
140            Controls.Label {
141                Layout.fillWidth: true
142                wrapMode: Text.WordWrap
143                text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id risus id augue euismod accumsan. Nunc vestibulum placerat bibendum. Morbi commodo auctor varius. Donec molestie euismod ultrices. Sed facilisis augue nec eros auctor, vitae mattis quam rhoncus. Nam ut erat diam. Curabitur iaculis accumsan magna, eget fermentum massa scelerisque eu. Cras elementum erat non erat euismod accumsan. Vestibulum ac mi sed dui finibus pulvinar. Vivamus dictum, leo sed lobortis porttitor, nisl magna faucibus orci, sit amet euismod arcu elit eget est. Duis et vehicula nibh. In arcu sapien, laoreet sit amet porttitor non, rhoncus vel magna. Suspendisse imperdiet consectetur est nec ornare. Pellentesque bibendum sapien at erat efficitur vehicula. Morbi sed porta nibh. Vestibulum ut urna ut dolor sagittis mattis."
144            }
145
146            Controls.TextField {
147                Layout.alignment: Qt.AlignHCenter
148            }
149
150            Controls.Label {
151                Layout.fillWidth: true
152                wrapMode: Text.WordWrap
153                text: "
154    Morbi dictum, sapien at maximus pulvinar, sapien metus condimentum magna, quis lobortis nisi dui mollis turpis. Aliquam sit amet scelerisque dui. In sit amet tellus placerat, condimentum enim sed, hendrerit quam. Integer dapibus lobortis finibus. Suspendisse faucibus eros vitae ante posuere blandit. Nullam volutpat quam id diam hendrerit aliquam. Donec non sem at diam posuere convallis. Vivamus ut congue quam. Ut dictum fermentum sapien, eu ultricies est ornare ut.
155
156    Nullam fringilla a libero vehicula faucibus. Donec euismod sodales nulla, in vehicula lectus posuere a. Donec nisi nulla, pulvinar eu porttitor vitae, varius eget ante. Nam rutrum eleifend elit, quis facilisis leo sodales vitae. Aenean accumsan a nulla at sagittis. Integer placerat tristique magna, vitae iaculis ante cursus sit amet. Sed facilisis mollis turpis nec tristique. Etiam quis feugiat odio. Vivamus sagittis at purus nec aliquam.
157
158    Morbi neque dolor, elementum ac fermentum ac, auctor ut erat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus non nibh sit amet quam luctus congue. Donec in eros varius, porta metus sed, sagittis lacus. Mauris dapibus lorem nisi, non eleifend massa tristique egestas. Curabitur nec blandit urna. Mauris rhoncus libero felis, commodo viverra ante consectetur vel. Donec dictum tincidunt orci, quis tristique urna. Quisque egestas, dui ac mollis dictum, purus velit elementum est, at pellentesque erat est fermentum purus. Nulla a quam tellus. Vestibulum a congue ligula. Quisque feugiat nulla et tortor sodales viverra. Maecenas dolor leo, elementum sed urna vel, posuere hendrerit metus. Mauris pellentesque, mi non luctus aliquam, leo nulla varius arcu, vel pulvinar enim enim nec nisl.
159
160    Etiam sapien leo, venenatis eget justo at, pellentesque mollis tellus. Fusce consequat ullamcorper vulputate. Duis tellus nisi, dictum ut augue non, elementum congue ligula. Fusce in vehicula arcu. Nulla facilisi. Quisque a convallis sapien. Aenean pellentesque convallis egestas. Phasellus rhoncus, nulla in tempor maximus, arcu ex venenatis diam, sit amet egestas mi dolor non ante. "
161            }
162            Controls.Button {
163                text: "Close"
164                Layout.alignment: Qt.AlignHCenter
165                onClicked: sheet.close()
166            }
167        }
168    }
169    ColumnLayout {
170        width: page.width
171        spacing: Units.smallSpacing
172
173        Controls.ComboBox {
174            Layout.alignment: Qt.AlignHCenter
175            textRole: "text"
176            model: [{"text": "Default", "value": -1},
177                    {"text": "Toolbar", "value": ApplicationHeaderStyle.ToolBar},
178                    {"text": "Titles", "value": ApplicationHeaderStyle.Titles},
179                    {"text": "None", "value": ApplicationHeaderStyle.None}]
180            onActivated: {
181                if (index == 0) {
182                    page.globalToolBarStyle = applicationWindow().pageStack.globalToolBar.actualStyle
183                } else {
184                    page.globalToolBarStyle = model[index].value;
185                }
186            }
187        }
188        Controls.Button {
189            text: "Open &Bottom drawer"
190            Layout.alignment: Qt.AlignHCenter
191            onClicked: bottomDrawer.open()
192        }
193        Controls.Button {
194            text: "Open Sheet"
195            Layout.alignment: Qt.AlignHCenter
196            onClicked: sheet.open()
197        }
198        Controls.Button {
199            text: "Toggle Action Button"
200            Layout.alignment: Qt.AlignHCenter
201            onClicked: mainAction.visible = !mainAction.visible;
202        }
203        Controls.Button {
204            text: "Show Passive Notification"
205            Layout.alignment: Qt.AlignHCenter
206            onClicked: showPassiveNotification("This is a passive message", 3000);
207        }
208        Controls.Button {
209            text: "Passive Notification Action"
210            Layout.alignment: Qt.AlignHCenter
211            onClicked: showPassiveNotification("This is a passive message", "long", "Action", function() {showPassiveNotification("Passive notification action clicked")});
212        }
213        Controls.ToolButton {
214            text: "Toggle controls"
215            checkable: true
216            checked: true
217            Layout.alignment: Qt.AlignHCenter
218            onCheckedChanged: applicationWindow().controlsVisible = checked
219        }
220        Controls.Button {
221            text: "Disabled Button"
222            enabled: false
223            Layout.alignment: Qt.AlignHCenter
224            onClicked: showPassiveNotification("clicked")
225        }
226        Controls.ToolButton {
227            text: "Tool Button"
228            icon.name: "go-next"
229            Layout.alignment: Qt.AlignHCenter
230            onClicked: showPassiveNotification(text + " clicked")
231        }
232        Controls.ToolButton {
233            text: "Tool Button non flat"
234            flat: false
235            Layout.alignment: Qt.AlignHCenter
236            onClicked: showPassiveNotification(text + " clicked")
237        }
238    }
239}
240