Warning, /maui/buho/src/widgets/NewNoteDialog.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.14
0002 import QtQuick.Controls 2.14
0003 import QtQuick.Layouts 1.0
0004 
0005 import org.mauikit.controls 1.3 as Maui
0006 import org.mauikit.filebrowsing 1.3 as FB
0007 import org.mauikit.texteditor 1.0 as TE
0008 
0009 
0010 Maui.Page
0011 {
0012 
0013     id: control
0014 
0015     property alias editor: _editor
0016     property alias document: _editor.document
0017 
0018     property string tagColor: note.color ? note.color : "transparent"
0019     property bool showEditActions : false
0020     property var note : ({})
0021     property int noteIndex : -1
0022 
0023     property alias text: _editor.text
0024 
0025     signal noteSaved(var note, int noteIndex)
0026 
0027     headBar.farLeftContent: ToolButton
0028     {
0029         icon.name: "go-previous"
0030         onClicked:
0031         {
0032             console.log(control.document.fileUrl, "File Url")
0033 
0034 
0035             if(FB.FM.fileExists(control.document.fileUrl) && control.document.modified)
0036             {
0037                 control.document.saveAs(control.document.fileUrl)
0038             }
0039 
0040             control.noteSaved(packNote(), control.noteIndex)
0041             control.clear()
0042             control.parent.pop()
0043         }
0044     }
0045 
0046     headBar.visible: !editor.body.readOnly
0047     headBar.leftContent: [
0048 
0049         Maui.ToolActions
0050         {
0051             expanded: true
0052             autoExclusive: false
0053             checkable: false
0054 
0055             Action
0056             {
0057                 icon.name: "edit-undo"
0058                 enabled: editor.body.canUndo
0059                 onTriggered: editor.body.undo()
0060             }
0061 
0062             Action
0063             {
0064                 icon.name: "edit-redo"
0065                 enabled: editor.body.canRedo
0066                 onTriggered: editor.body.redo()
0067             }
0068         },
0069 
0070         Maui.ToolActions
0071         {
0072             visible: (document.isRich || editor.body.textFormat === Text.RichText) && !editor.body.readOnly
0073             expanded: true
0074             autoExclusive: false
0075             checkable: false
0076 
0077             Action
0078             {
0079                 icon.name: "format-text-bold"
0080                 checked: document.bold
0081                 onTriggered: document.bold = !document.bold
0082             }
0083 
0084             Action
0085             {
0086                 icon.name: "format-text-italic"
0087                 checked: document.italic
0088                 onTriggered: document.italic = !document.italic
0089             }
0090 
0091             Action
0092             {
0093                 icon.name: "format-text-underline"
0094                 checked: document.underline
0095                 onTriggered: document.underline = !document.underline
0096             }
0097 
0098             Action
0099             {
0100                 icon.name: "format-text-uppercase"
0101                 checked: document.uppercase
0102                 onTriggered: document.uppercase = !document.uppercase
0103             }
0104         }
0105     ]
0106 
0107     headBar.rightContent: [
0108 
0109         ToolButton
0110         {
0111             id: favButton
0112             icon.name: "love"
0113             checkable: true
0114             checked: note.favorite == 1
0115             icon.color: checked ? "#ff007f" : Maui.Theme.textColor
0116 
0117         },
0118 
0119         ToolButton
0120         {
0121             icon.name: "document-share"
0122 
0123             onClicked: Maui.Handy.isAndroid ? Maui.Android.shareText(editor.body.text) :
0124                                               Maui.Platform.shareFiles(editor.fileUrl)
0125         },
0126 
0127         Maui.ToolButtonMenu
0128         {
0129             icon.name: "overflow-menu"
0130 
0131             MenuItem
0132             {
0133                 icon.name: "edit-find"
0134                 text: i18n("Find and Replace")
0135                 checked: editor.showFindBar
0136                 checkable: true
0137                 onTriggered: editor.showFindBar = !editor.showFindBar
0138             }
0139 
0140             MenuSeparator {}
0141 
0142             MenuItem
0143             {
0144                 text: i18n("Delete")
0145                 icon.name: "entry-delete"
0146                 Maui.Theme.textColor: Maui.Theme.negativeTextColor
0147                 onTriggered: {}
0148             }
0149 
0150             MenuSeparator {}
0151 
0152             Item
0153             {
0154                 height: Maui.Style.rowHeight
0155                 width: parent.width
0156 
0157                 ColorsBar
0158                 {
0159                     anchors.centerIn: parent
0160                     onColorPicked:
0161                     {
0162                         control.tagColor = color
0163                     }
0164 
0165                     currentColor: control.tagColor
0166                 }
0167             }
0168         }
0169     ]
0170 
0171     TE.TextEditor
0172     {
0173       id: _editor
0174       anchors.fill: parent
0175 
0176         fileUrl: control.note.url
0177         showLineNumbers: false
0178         document.autoReload: settings.autoReload
0179         document.autoSave: settings.autoSave
0180         spellcheckEnabled: settings.spellcheckEnabled
0181 
0182         body.font: settings.font
0183 
0184         document.enableSyntaxHighlighting: false
0185         body.placeholderText: i18n("Title\nBody")
0186 
0187         Rectangle
0188         {
0189             anchors.bottom: parent.bottom
0190             anchors.left: parent.left
0191             anchors.right: parent.right
0192             color: control.tagColor
0193             height : 12
0194         }
0195 
0196         Timer
0197         {
0198             id: _notifyTimer
0199             running: false
0200             interval: 2500
0201         }
0202 
0203         Maui.Chip
0204         {
0205             anchors.top: parent.top
0206             anchors.right: parent.right
0207             anchors.margins: Maui.Style.space.big
0208             visible: _notifyTimer.running
0209             label.text: i18n("Note saved")
0210             iconSource: "document-save"
0211             Maui.Theme.backgroundColor: "yellow"
0212         }
0213 
0214         Connections
0215         {
0216             target: control.document
0217             function onFileSaved()
0218             {
0219                 console.log("NOTE SAVED")
0220                 _notifyTimer.start()
0221                 //                control.noteSaved(packNote())
0222             }
0223         }
0224     }
0225 
0226     function clear()
0227     {
0228         editor.body.clear()
0229         control.note = ({})
0230     }
0231 
0232     function packNote()
0233     {
0234         var note = ({})
0235         const content = editor.body.text
0236         if(content.length > 0)
0237         {
0238             note  = {
0239                 url: editor.fileUrl,
0240                 content: content,
0241                 favorite: favButton.checked ? 1 : 0,
0242                 format: ".txt" //for now only simple txt files
0243             }
0244 
0245             if(control.tagColor  !== "transparent")
0246             {
0247                 note["color"] = control.tagColor
0248             }
0249         }
0250 
0251         return note
0252     }
0253 }