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