diff --git a/src/views/books/BookletPage.qml b/src/views/books/BookletPage.qml index 2a50356..6a1a0c1 100644 --- a/src/views/books/BookletPage.qml +++ b/src/views/books/BookletPage.qml @@ -1,198 +1,198 @@ import QtQuick 2.9 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import org.kde.mauikit 1.0 as Maui import org.kde.kirigami 2.7 as Kirigami Item { id: control property var currentBooklet : null signal exit() onCurrentBookletChanged: { editor.document.load(currentBooklet.url) _sidebar.title = currentBook.title } Maui.BaseModel { id: _bookletModel list: _booksList.booklet } Maui.Page { id: _page anchors.fill: parent title: currentBooklet.title headBar.leftContent: [ ToolButton { icon.name: "go-previous" onClicked: control.exit() }, Kirigami.Separator { Layout.fillHeight: true }, ToolButton { icon.name: "view-calendar-list" text: qsTr("Chapters") onClicked: checked ? _layout.currentIndex = 0 : _layout.currentIndex = 1 checked: _layout.firstVisibleItem === _sidebar } ] Kirigami.PageRow { id: _layout anchors.fill: parent initialPage: [_sidebar, editor] interactive: true - defaultColumnWidth: Kirigami.Units.gridUnit * 12 + defaultColumnWidth: Kirigami.Units.gridUnit * (Kirigami.Settings.isMobile ? 16 : 12) Maui.Editor { id: editor enabled: !_holder.visible footBar.visible: false document.autoReload: true headBar.rightContent: [ ToolButton { enabled: editor.document.modified icon.name: "document-save" text: qsTr("Save") onClicked: { currentBooklet.content = editor.text _booksList.booklet.update(currentBooklet, _listView.currentIndex) } }, ToolButton { icon.name: "edit-delete" icon.color: Kirigami.Theme.negativeTextColor onClicked: { _booksList.booklet.remove(_listView.currentIndex) } } ] Maui.Holder { id: _holder visible: _listView.count === 0 emoji: "qrc:/document-edit.svg" emojiSize: Maui.Style.iconSizes.huge isMask: false title : qsTr("Nothing to edit!") body: qsTr("Select a chapter or create a new one") } } Maui.Page { id: _sidebar headBar.visible: true headBar.rightContent: ToolButton { icon.name: "view-sort" } background: Rectangle { color: "transparent" } footBar.middleContent: Button { text: qsTr("New chapter") onClicked: _newChapter.open() Layout.preferredHeight: Maui.Style.rowHeight Layout.fillWidth: true Kirigami.Theme.backgroundColor: Kirigami.Theme.positiveTextColor Kirigami.Theme.textColor: "white" } ListView { id: _listView anchors.fill: parent model: _bookletModel clip: true onCountChanged: { _listView.currentIndex = count-1 control.currentBooklet = _booksList.booklet.get(_listView.currentIndex) } Maui.Holder { anchors.margins: Maui.Style.space.huge visible: !_listView.count emoji: "qrc:/document-edit.svg" emojiSize: Maui.Style.iconSizes.huge isMask: false title : qsTr("This book is empty!") body: qsTr("Start by creating a new chapter for your book") } delegate: Maui.LabelDelegate { id: _delegate width: parent.width label: index+1 + " - " + model.title Connections { target:_delegate onClicked: { _listView.currentIndex = index currentBooklet = _booksList.booklet.get(index) } } } } } } Maui.Dialog { id: _newChapter title: qsTr("New Chapter") message: qsTr("Create a new chapter for your current book. Give it a title") entryField: true page.padding: Maui.Style.space.huge onAccepted: { _booksList.booklet.insert({content: textEntry.text}) _newChapter.close() } } } } diff --git a/src/views/links/LinksView.qml b/src/views/links/LinksView.qml index 98aeff7..704075d 100644 --- a/src/views/links/LinksView.qml +++ b/src/views/links/LinksView.qml @@ -1,216 +1,212 @@ import QtQuick 2.10 import QtQuick.Controls 2.10 import QtQuick.Layouts 1.3 import org.kde.mauikit 1.0 as Maui import org.kde.kirigami 2.2 as Kirigami import Links 1.0 import "../../widgets" Maui.Page { id: control property alias cardsView : cardsView property alias model : linksModel property alias list : linksList property alias currentIndex : cardsView.currentIndex property var currentLink : ({}) signal linkClicked(var link) headBar.visible: linksList.count > 0 padding: Maui.Style.space.big headBar.middleContent: Maui.TextField { Layout.fillWidth: true - placeholderText: linksList.count + " " + qsTr("links") + placeholderText: qsTr("Search ") +linksList.count + " " + qsTr("links") onAccepted: linksModel.filter = text onCleared: linksModel.filter = "" } headBar.leftContent: ToolButton { icon.name: cardsView.gridView ? "view-list-icons" : "view-list-details" onClicked: cardsView.gridView = !cardsView.gridView } headBar.rightContent: [ ToolButton { icon.name: "view-sort" onClicked: sortMenu.open(); Menu { id: sortMenu MenuItem { text: qsTr("Ascedent") checkable: true checked: linksList.order === Links.ASC onTriggered: linksList.order = Links.ASC } MenuItem { text: qsTr("Descendent") checkable: true checked: linksList.order === Links.DESC onTriggered: linksList.order = Links.DESC } MenuSeparator{} MenuItem { checkable: true text: qsTr("Title") onTriggered: Links.TITLE } MenuItem { checkable: true text: qsTr("Add date") onTriggered: linksList.sortBy = Links.ADD_DATE } MenuItem { checkable: true text: qsTr("Updated") onTriggered: linksList.sortBy = Links.MODIFIED } MenuItem { checkable: true text: qsTr("Favorite") onTriggered: linksList.sortBy = Links.FAVORITE } } } ] Links { id: linksList } Maui.BaseModel { id: linksModel list: linksList } CardsView { id: cardsView anchors.fill: parent holder.emoji: "qrc:/view-links.svg" holder.title : qsTr("No Links!") holder.body: qsTr("Click here to save a new link") holder.emojiSize: Maui.Style.iconSizes.huge itemHeight: Maui.Style.unit * 250 model: linksModel delegate: LinkCardDelegate { id: delegate width: Math.min(cardsView.cellWidth, cardsView.itemWidth) - Kirigami.Units.largeSpacing * 2 height: cardsView.itemHeight anchors.left: parent.left anchors.leftMargin: cardsView.width <= cardsView.itemWidth ? 0 : (index % 2 === 0 ? Math.max(0, cardsView.cellWidth - cardsView.itemWidth) : cardsView.cellWidth) onClicked: { currentIndex = index currentLink = linksList.get(index) linkClicked(linksList.get(index)) } onRightClicked: { currentIndex = index currentLink = linksList.get(index) _linksMenu.popup() } onPressAndHold: { currentIndex = index currentLink = linksList.get(index) _linksMenu.popup() } } Connections { target: cardsView.holder onActionTriggered: newLink() } Menu { id: _linksMenu property bool isFav : currentLink.favorite == 1 ? true : false MenuItem { icon.name: "love" text: qsTr(_linksMenu.isFav? "UnFav" : "Fav") onTriggered: { linksList.update(({"favorite": _linksMenu.isFav ? 0 : 1}), cardsView.currentIndex) _linksMenu.close() } } MenuItem { icon.name: "document-export" text: qsTr("Export") onTriggered: { _linksMenu.close() } } MenuItem { icon.name : "edit-copy" text: qsTr("Copy") onTriggered: { Maui.Handy.copyToClipboard({'urls': [currentLink.url]}) _linksMenu.close() } } - MenuSeparator - { - - } - + MenuSeparator { } MenuItem { icon.name: "edit-delete" text: qsTr("Remove") Kirigami.Theme.textColor: Kirigami.Theme.negativeTextColor onTriggered: { linksList.remove(cardsView.currentIndex) _linksMenu.close() } } } } } diff --git a/src/views/notes/NotesView.qml b/src/views/notes/NotesView.qml index c234a85..f1ef6cb 100644 --- a/src/views/notes/NotesView.qml +++ b/src/views/notes/NotesView.qml @@ -1,315 +1,315 @@ import QtQuick 2.10 import QtQuick.Controls 2.10 import QtQuick.Layouts 1.3 import org.kde.mauikit 1.0 as Maui import org.kde.kirigami 2.7 as Kirigami import Notes 1.0 import Qt.labs.platform 1.0 as Labs import "../../widgets" Maui.Page { property var currentNote : ({}) property alias cardsView : cardsView property alias model : notesModel property alias list : notesList property alias currentIndex : cardsView.currentIndex signal noteClicked(var note) padding: Maui.Style.space.big headBar.visible: !cardsView.holder.visible headBar.leftContent: [ ToolButton { icon.name: cardsView.gridView ? "view-list-details" : "view-list-icons" onClicked: { cardsView.gridView = !cardsView.gridView } } ] headBar.middleContent: Maui.TextField { Layout.fillWidth: true - placeholderText: cardsView.count + " " + qsTr("notes") + placeholderText: qsTr("Search ") +cardsView.count + " " + qsTr("notes") onAccepted: notesModel.filter = text onCleared: notesModel.filter = "" } headBar.rightContent: [ ToolButton { icon.name: "view-sort" onClicked: sortMenu.open(); Menu { id: sortMenu Labs.MenuItemGroup { id: orderGroup } Labs.MenuItemGroup { id: sortGroup } Labs.MenuItem { text: qsTr("Ascedent") checkable: true checked: notesList.order === Notes.ASC onTriggered: notesList.order = Notes.ASC group: sortGroup } Labs.MenuItem { text: qsTr("Descendent") checkable: true checked: notesList.order === Notes.DESC onTriggered: notesList.order = Notes.DESC group: sortGroup } MenuSeparator{} Labs.MenuItem { text: qsTr("Title") checkable: true checked: notesList.sortBy === Notes.TITLE onTriggered: notesList.sortBy = Notes.TITLE group: orderGroup } Labs.MenuItem { text: qsTr("Color") checkable: true checked: notesList.sortBy === Notes.COLOR onTriggered: notesList.sortBy = Notes.COLOR group: orderGroup } Labs.MenuItem { text: qsTr("Add date") checkable: true checked: notesList.sortBy === Notes.ADDDATE onTriggered: notesList.sortBy = Notes.ADDDATE group: orderGroup } Labs.MenuItem { text: qsTr("Updated") checkable: true checked: notesList.sortBy === Notes.Modified onTriggered: notesList.sortBy = Notes.Modified group: orderGroup } Labs.MenuItem { text: qsTr("Favorite") checkable: true checked: notesList.sortBy === Notes.FAVORITE onTriggered: notesList.sortBy = Notes.FAVORITE group: orderGroup } } }, ToolButton { id: favButton icon.name: "love" checkable: true icon.color: checked ? Kirigami.Theme.highlightColor : Kirigami.Theme.textColor } ] Notes { id: notesList } Maui.BaseModel { id: notesModel list: notesList recursiveFilteringEnabled: true sortCaseSensitivity: Qt.CaseInsensitive filterCaseSensitivity: Qt.CaseInsensitive } ColumnLayout { anchors.fill: parent spacing: 0 Rectangle { visible: favButton.checked Layout.alignment: Qt.AlignVCenter Layout.fillWidth: true height: cardsView.itemHeight color: Kirigami.Theme.backgroundColor Maui.Holder { id: holder visible: favedList.count == 0 emoji: "qrc:/edit-pin.svg" emojiSize: Maui.Style.iconSizes.big isMask: true title : qsTr("No favorites!") body: qsTr("No matched favorites notes. You can fav your notes to access them quickly") z: 999 } CardsList { id: favedList height: parent.height *0.9 width: parent.width * 0.9 anchors.centerIn: parent - itemHeight: cardsView.itemHeight * 0.9 + itemHeight: 150 itemWidth: itemHeight * 1.5 onItemClicked: noteClicked(cardsView.model.get(index)) } } CardsView { id: cardsView Layout.fillHeight: true Layout.fillWidth: true width: parent.width holder.emoji: "qrc:/view-notes.svg" holder.emojiSize: Maui.Style.iconSizes.huge holder.title :qsTr("No notes!") holder.body: qsTr("Click here to create a new note") model: notesModel delegate: CardDelegate { id: delegate width: Math.min(cardsView.cellWidth, cardsView.itemWidth) - Kirigami.Units.largeSpacing * 2 height: cardsView.itemHeight anchors.left: parent.left anchors.leftMargin: cardsView.width <= cardsView.itemWidth ? 0 : (index % 2 === 0 ? Math.max(0, cardsView.cellWidth - cardsView.itemWidth) : cardsView.cellWidth) onClicked: { currentIndex = index currentNote = notesList.get(index) noteClicked(currentNote) } onRightClicked: { currentIndex = index currentNote = notesList.get(index) _notesMenu.popup() } onPressAndHold: { currentIndex = index currentNote = notesList.get(index) _notesMenu.popup() } } Connections { target: cardsView.holder onActionTriggered: newNote() } Menu { id: _notesMenu width: colorBar.implicitWidth + Maui.Style.space.medium property bool isFav: currentNote.favorite == 1 MenuItem { icon.name: "love" text: qsTr(_notesMenu.isFav? "UnFav" : "Fav") onTriggered: { notesList.update(({"favorite": _notesMenu.isFav ? 0 : 1}), cardsView.currentIndex) _notesMenu.close() } } MenuItem { icon.name: "document-export" text: qsTr("Export") onTriggered: { _notesMenu.close() } } MenuItem { icon.name : "edit-copy" text: qsTr("Copy") onTriggered: { Maui.Handy.copyToClipboard({'text': currentNote.content}) _notesMenu.close() } } MenuSeparator { } MenuItem { icon.name: "edit-delete" text: qsTr("Remove") Kirigami.Theme.textColor: Kirigami.Theme.negativeTextColor onTriggered: { notesList.remove(cardsView.currentIndex) _notesMenu.close() } } MenuSeparator { } MenuItem { width: parent.width height: Maui.Style.rowHeight ColorsBar { id: colorBar anchors.centerIn: parent onColorPicked: { notesList.update(({"color": color}), cardsView.currentIndex) _notesMenu.close() } } } } } } } diff --git a/src/widgets/NewNoteDialog.qml b/src/widgets/NewNoteDialog.qml index 6ef5cf4..697ef51 100644 --- a/src/widgets/NewNoteDialog.qml +++ b/src/widgets/NewNoteDialog.qml @@ -1,153 +1,153 @@ import QtQuick 2.9 import QtQuick.Controls 2.2 import QtQuick.Layouts 1.0 import org.kde.mauikit 1.0 as Maui import org.kde.kirigami 2.7 as Kirigami Maui.Dialog { id: control parent: parent property alias editor: _editor property string selectedColor property color fgColor: Qt.darker(selectedColor, 3) property bool showEditActions : false signal noteSaved(var note) Kirigami.Theme.backgroundColor: if(selectedColor) return control.selectedColor Kirigami.Theme.textColor: if(selectedColor) return fgColor heightHint: 0.95 widthHint: 0.95 maxWidth: 700 * Maui.Style.unit maxHeight: maxWidth page.padding: 0 rejectText: qsTr("Discard") rejectButton.visible: false acceptText: qsTr("Save") onAccepted: packNote() onRejected: clear() footBar.leftContent: [ ToolButton { id: favButton icon.name: "love" checkable: true icon.color: checked ? "#ff007f" : Kirigami.Theme.textColor }, ToolButton { icon.name: "document-share" onClicked: isAndroid ? Maui.Android.shareText(editor.body.text) : shareDialog.show(editor.body.text) icon.color: Kirigami.Theme.textColor }, ToolButton { icon.name: "document-export" icon.color: Kirigami.Theme.textColor }, ToolButton { icon.name: "entry-delete" icon.color: Kirigami.Theme.textColor } ] ColumnLayout { anchors.fill: parent spacing: 0 Maui.Editor { id: _editor document.autoReload: true Layout.fillHeight: true Layout.fillWidth: true Kirigami.Theme.backgroundColor: control.selectedColor Kirigami.Theme.textColor: Qt.darker(control.selectedColor, 2.5) - + body.placeholderText: qsTr("Title\nBody") footBar.visible: false headBar.leftContent: ToolButton { icon.name: "image" icon.color: control.Kirigami.Theme.textColor } headBar.rightContent: ColorsBar { onColorPicked: control.selectedColor = color } } Maui.TagsBar { id: tagBar position: ToolBar.Footer Layout.fillWidth: true allowEditMode: true onTagsEdited: { if((editor.fileUrl).toString().length > 0) tagBar.list.updateToAbstract(tags) else tagBar.list.append(tags) } list.strict: true list.abstract: true list.key: "notes" list.lot: " " // onTagRemovedClicked: list.removeFromAbstract(index) Kirigami.Theme.backgroundColor: "transparent" Kirigami.Theme.textColor: Kirigami.Theme.textColor } } onOpened: editor.body.forceActiveFocus() function clear() { control.close() editor.body.clear() fill(({})) } function fill(note) { editor.fileUrl = note.url control.selectedColor = note.color ? note.color : "" favButton.checked = note.favorite == 1 tagBar.list.lot = note.url } function packNote() { const content = editor.body.text if(content.length == 0) return; control.noteSaved({ url: editor.fileUrl, content: content, color: control.selectedColor ? control.selectedColor : "", tag: tagBar.list.tags.join(","), favorite: favButton.checked ? 1 : 0, format: ".txt" //for now only simple txt files }) control.clear() } }