Warning, /frameworks/kirigami/examples/multiplatformnotesapp/NotesGeneral.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 pragma ComponentBehavior: Bound
0008 
0009 import QtQuick
0010 import QtQuick.Layouts
0011 import QtQuick.Controls as QQC2
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kirigami.delegates as KD
0014 
0015 Kirigami.ApplicationWindow {
0016     id: root
0017 
0018     property string currentFile
0019 
0020     pageStack.initialPage: iconView
0021 
0022     Kirigami.ScrollablePage {
0023         id: iconView
0024         title: "Notes"
0025         actions: Kirigami.Action {
0026             id: sortAction
0027             icon.name: "view-sort-ascending-symbolic"
0028             tooltip: "Sort Ascending"
0029         }
0030 
0031         background: Rectangle {
0032             color: Kirigami.Theme.backgroundColor
0033         }
0034 
0035         GridView {
0036             id: view
0037             model: 100
0038             cellWidth: Kirigami.Units.gridUnit * 9
0039             cellHeight: cellWidth
0040             currentIndex: -1
0041             highlightMoveDuration: 0
0042             highlight: Rectangle {
0043                 color: Kirigami.Theme.highlightColor
0044             }
0045             delegate: MouseArea {
0046                 id: delegate
0047 
0048                 required property int index
0049                 required property int modelData
0050 
0051                 width: view.cellWidth
0052                 height: view.cellHeight
0053                 Kirigami.Icon {
0054                     source: "text-plain"
0055                     anchors {
0056                         fill: parent
0057                         margins: Kirigami.Units.gridUnit
0058                     }
0059                     QQC2.Label {
0060                         anchors {
0061                             top: parent.bottom
0062                             horizontalCenter: parent.horizontalCenter
0063                         }
0064                         text: "File " + delegate.modelData
0065                     }
0066                 }
0067                 onClicked: {
0068                     view.currentIndex = index;
0069                     root.currentFile = "File " + delegate.modelData;
0070                     if (root.pageStack.depth < 2) {
0071                         root.pageStack.push(editorComponent);
0072                     }
0073                     root.pageStack.currentIndex = 1
0074                 }
0075             }
0076         }
0077     }
0078 
0079     Component {
0080         id: editorComponent
0081         Kirigami.ScrollablePage {
0082             id: editor
0083             title: root.currentFile
0084             actions: [
0085                 Kirigami.Action {
0086                     id: shareAction
0087                     icon.name: "document-share"
0088                     text: "Share…"
0089                     tooltip: "Share this document with your device"
0090                     checked: sheet.visible
0091                     checkable: true
0092                     onCheckedChanged: checked => {
0093                         sheet.visible = checked;
0094                     }
0095                 },
0096                 Kirigami.Action {
0097                     icon.name: "format-text-bold-symbolic"
0098                     tooltip: "Bold"
0099                 },
0100                 Kirigami.Action {
0101                     icon.name: "format-text-underline-symbolic"
0102                     tooltip: "Underline"
0103                 },
0104                 Kirigami.Action {
0105                     icon.name: "format-text-italic-symbolic"
0106                     tooltip: "Italic"
0107                 }
0108             ]
0109             background: Rectangle {
0110                 color: Kirigami.ColorUtils.brightnessForColor(Kirigami.Theme.backgroundColor) === Kirigami.ColorUtils.Light
0111                     ? "#F8EBC3" : "#1F2226"
0112             }
0113 
0114             Kirigami.OverlaySheet {
0115                 id: sheet
0116 
0117                 parent: root.QQC2.Overlay.overlay
0118 
0119                 onOpened: forceActiveFocus(Qt.PopupFocusReason)
0120 
0121                 ListView {
0122                     implicitWidth: Kirigami.Units.gridUnit * 30
0123                     reuseItems: true
0124                     model: ListModel {
0125                         ListElement {
0126                             title: "Share with phone \"Nokia 3310\""
0127                             description: "You selected this phone 12 times before. It's currently connected via bluetooth"
0128                             buttonText: "Push Sync"
0129                         }
0130                         ListElement {
0131                             title: "Share with phone \"My other Nexus5\""
0132                             description: "You selected this phone 0 times before. It's currently connected to your laptop via Wifi"
0133                             buttonText: "Push Sync"
0134                         }
0135                         ListElement {
0136                             title: "Share with NextCloud"
0137                             description: "You currently do not have a server set up for sharing and storing notes from Katie. If you want to set one up click here"
0138                             buttonText: "Setup…"
0139                         }
0140                         ListElement {
0141                             title: "Send document via email"
0142                             description: "This will send the document as an attached file to your own email for later sync"
0143                             buttonText: "Send As Email"
0144                         }
0145                     }
0146                     header: KD.SubtitleDelegate {
0147                         hoverEnabled: false
0148                         down: false
0149 
0150                         width: ListView.view?.width
0151 
0152                         text: "This document has already automatically synced with your phone \"Dancepartymeister 12\". If you want to sync with another device or do further actions you can do that here"
0153 
0154                         icon.name: "documentinfo"
0155                         icon.width: Kirigami.Units.iconSizes.large
0156                         icon.height: Kirigami.Units.iconSizes.large
0157                     }
0158                     delegate: QQC2.ItemDelegate {
0159                         id: delegate
0160 
0161                         required property string title
0162                         required property string description
0163                         required property string buttonText
0164 
0165                         hoverEnabled: false
0166                         highlighted: false
0167                         down: false
0168 
0169                         width: ListView.view?.width
0170 
0171                         contentItem: RowLayout {
0172                             spacing: Kirigami.Units.smallSpacing
0173                             KD.TitleSubtitle {
0174                                 Layout.fillWidth: true
0175                                 title: delegate.title
0176                                 subtitle: delegate.description
0177                             }
0178                             QQC2.Button {
0179                                 text: delegate.buttonText
0180                                 onClicked: sheet.close()
0181                             }
0182                         }
0183                     }
0184                 }
0185             }
0186 
0187             QQC2.TextArea {
0188                 background: null
0189                 wrapMode: TextEdit.Wrap
0190                 selectByMouse: true
0191                 text: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sollicitudin, lorem at semper pretium, tortor nisl pellentesque risus, eget eleifend odio ipsum ac mi. Donec justo ex, elementum vitae gravida vel, pretium ac lacus. Duis non metus ac enim viverra auctor in non nunc. Sed sit amet luctus nisi. Proin justo nulla, vehicula eget porta sit amet, aliquet vitae dolor. Mauris sed odio auctor, tempus ipsum ac, placerat enim. Ut in dolor vel ante dictum auctor.
0192 
0193     Praesent blandit rhoncus augue. Phasellus consequat luctus pulvinar. Pellentesque rutrum laoreet dolor, sit amet pellentesque tellus mattis sed. Sed accumsan cursus tortor. Morbi et risus dolor. Nullam facilisis ipsum justo, nec sollicitudin mi pulvinar ac. Nulla facilisi. Donec maximus turpis eget mollis laoreet. Phasellus vel mauris et est mattis auctor eget sit amet turpis. Aliquam dignissim euismod purus, eu efficitur neque fermentum eu. Suspendisse potenti. Praesent mattis ex vitae neque rutrum tincidunt. Etiam placerat leo viverra pulvinar tincidunt.
0194 
0195     Proin vel rutrum massa. Proin volutpat aliquet dapibus. Maecenas aliquet elit eu venenatis venenatis. Ut elementum, lacus vel auctor auctor, velit massa elementum ligula, quis elementum ex nisi aliquam mauris. Nulla facilisi. Pellentesque aliquet egestas venenatis. Donec iaculis ultrices laoreet. Vestibulum cursus rhoncus sollicitudin.
0196 
0197     Proin quam libero, bibendum eget sodales id, gravida quis enim. Duis fermentum libero vitae sapien hendrerit, in tincidunt tortor semper. Nullam quam nisi, feugiat sed rutrum vitae, dignissim quis risus. Ut ultricies pellentesque est, ut gravida massa convallis sed. Ut placerat dui non felis interdum, id malesuada nulla ornare. Phasellus volutpat purus placerat velit porta tristique. Donec molestie leo in turpis bibendum pharetra. Fusce fermentum diam vitae neque laoreet, sed aliquam leo sollicitudin.
0198 
0199     Ut facilisis massa arcu, eu suscipit ante varius sed. Morbi augue leo, mattis eu tempor vitae, condimentum sed urna. Curabitur ac blandit orci. Vestibulum quis consequat nunc. Proin imperdiet commodo imperdiet. Aenean mattis augue et imperdiet ultricies. Ut id feugiat nulla, et sollicitudin dui. Etiam scelerisque ligula ac euismod hendrerit. Integer in quam nibh. Pellentesque risus massa, porttitor quis fermentum eu, dictum varius magna. Morbi euismod bibendum lacus efficitur pretium. Phasellus elementum porttitor enim nec dictum. Morbi et augue laoreet, convallis quam quis, egestas quam.`
0200             }
0201         }
0202     }
0203 }