2018-10-16 18:50:58 +03:00
|
|
|
import QtQuick 2.0
|
|
|
|
import Sailfish.Silica 1.0
|
|
|
|
|
|
|
|
Page {
|
|
|
|
id: page
|
|
|
|
|
|
|
|
SilicaListView {
|
|
|
|
id: notesList
|
|
|
|
anchors.fill: parent
|
2018-10-21 02:44:23 +03:00
|
|
|
spacing: Theme.paddingLarge
|
2018-10-16 18:50:58 +03:00
|
|
|
|
|
|
|
PullDownMenu {
|
2018-10-17 00:52:28 +03:00
|
|
|
busy: notes.busy
|
2018-10-22 23:53:14 +03:00
|
|
|
|
2018-10-16 18:50:58 +03:00
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Settings")
|
2018-10-22 23:53:14 +03:00
|
|
|
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Add note")
|
2018-11-15 00:13:47 +03:00
|
|
|
enabled: !notes.busy
|
|
|
|
visible: account.server.length > 0
|
2018-10-16 18:50:58 +03:00
|
|
|
onClicked: console.log("Add note")
|
|
|
|
}
|
2018-11-15 00:13:47 +03:00
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Reload")
|
|
|
|
enabled: !notes.busy
|
|
|
|
visible: account.server.length > 0
|
|
|
|
onClicked: notes.getNotes()
|
|
|
|
}
|
|
|
|
MenuLabel {
|
|
|
|
visible: account.server.length > 0
|
|
|
|
text: qsTr("Last update") + ": " +
|
|
|
|
account.update.value !== 0 ?
|
|
|
|
new Date(account.update).toLocaleString(Qt.locale(), Locale.ShortFormat) :
|
|
|
|
qsTr("never")
|
|
|
|
//(new Date(appSettings.value("accountUpdates", [appSettings.currentAccount])).value === 0 ?
|
|
|
|
//new Date(appSettings.value("accountUpdates", [appSettings.currentAccount])).toLocaleString(Qt.locale(), Locale.ShortFormat) :
|
|
|
|
//qsTr("never"))
|
|
|
|
}
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
header: SearchField {
|
|
|
|
width: parent.width
|
|
|
|
placeholderText: qsTr("Nextcloud Notes")
|
2018-10-17 00:52:28 +03:00
|
|
|
onTextChanged: notes.search(text.toLowerCase())
|
2018-10-16 18:50:58 +03:00
|
|
|
|
|
|
|
EnterKey.iconSource: "image://theme/icon-m-enter-close"
|
|
|
|
EnterKey.onClicked: focus = false
|
2018-11-15 00:13:47 +03:00
|
|
|
enabled: notesList.count > 0
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
currentIndex: -1
|
2018-10-21 02:44:23 +03:00
|
|
|
Component.onCompleted: {
|
2018-11-15 00:13:47 +03:00
|
|
|
if (account.valid) {
|
2018-10-21 02:44:23 +03:00
|
|
|
notes.getNotes()
|
2018-10-22 23:53:14 +03:00
|
|
|
}
|
2018-10-21 02:44:23 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
//Component.onCompleted: notes.getNotes()
|
2018-10-17 00:52:28 +03:00
|
|
|
//Component.onCompleted: notes.getNote("1212725")
|
|
|
|
//Component.onCompleted: notes.createNote("Hello World!", "Test")
|
|
|
|
//Component.onCompleted: notes.updateNote(1212725, "# Hello World!\nIs this working?", "Test")
|
|
|
|
//Component.onCompleted: notes.deleteNote(1212725)
|
2018-10-16 18:50:58 +03:00
|
|
|
|
2018-10-17 00:52:28 +03:00
|
|
|
model: notes.model
|
2018-10-16 18:50:58 +03:00
|
|
|
|
|
|
|
delegate: ListItem {
|
|
|
|
id: note
|
2018-10-17 13:58:55 +03:00
|
|
|
contentHeight: titleLabel.height + previewLabel.height + 2*Theme.paddingSmall
|
2018-10-16 18:50:58 +03:00
|
|
|
|
|
|
|
IconButton {
|
|
|
|
id: isFavoriteIcon
|
2018-10-17 13:58:55 +03:00
|
|
|
anchors.left: parent.left
|
2018-10-21 02:44:23 +03:00
|
|
|
anchors.leftMargin: Theme.paddingSmall
|
|
|
|
anchors.top: parent.top
|
2018-10-16 18:50:58 +03:00
|
|
|
width: Theme.iconSizeMedium
|
|
|
|
icon.source: (favorite ? "image://theme/icon-m-favorite-selected?" : "image://theme/icon-m-favorite?") +
|
|
|
|
(note.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
|
|
|
|
onClicked: {
|
|
|
|
console.log("Toggle favorite")
|
|
|
|
favorite = !favorite
|
2018-10-17 00:52:28 +03:00
|
|
|
notes.updateNote(id, {'favorite': favorite} )
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Label {
|
|
|
|
id: titleLabel
|
|
|
|
anchors.left: isFavoriteIcon.right
|
|
|
|
anchors.leftMargin: Theme.paddingSmall
|
|
|
|
anchors.right: parent.right
|
2018-10-17 13:58:55 +03:00
|
|
|
anchors.rightMargin: Theme.horizontalPageMargin
|
|
|
|
anchors.top: parent.top
|
2018-10-16 18:50:58 +03:00
|
|
|
text: title
|
|
|
|
truncationMode: TruncationMode.Fade
|
|
|
|
color: note.highlighted ? Theme.highlightColor : Theme.primaryColor
|
|
|
|
}
|
|
|
|
|
|
|
|
Label {
|
2018-10-17 13:58:55 +03:00
|
|
|
id: previewLabel
|
2018-10-16 18:50:58 +03:00
|
|
|
anchors.left: isFavoriteIcon.right
|
|
|
|
anchors.leftMargin: Theme.paddingSmall
|
|
|
|
anchors.right: parent.right
|
2018-10-17 13:58:55 +03:00
|
|
|
anchors.rightMargin: Theme.horizontalPageMargin
|
|
|
|
anchors.top: titleLabel.bottom
|
2018-10-21 02:44:23 +03:00
|
|
|
anchors.topMargin: Theme.paddingMedium
|
|
|
|
height: Theme.itemSizeExtraLarge
|
2018-10-17 13:58:55 +03:00
|
|
|
text: content
|
2018-10-16 18:50:58 +03:00
|
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
2018-10-21 02:44:23 +03:00
|
|
|
textFormat: Text.PlainText
|
2018-10-17 13:58:55 +03:00
|
|
|
wrapMode: Text.Wrap
|
|
|
|
elide: Text.ElideRight
|
|
|
|
color: note.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
|
2018-10-17 00:52:28 +03:00
|
|
|
onClicked: pageStack.push(Qt.resolvedUrl("NotePage.qml"), { note: notesList.model.get(index) } )
|
|
|
|
|
2018-10-16 18:50:58 +03:00
|
|
|
menu: ContextMenu {
|
2018-10-17 13:58:55 +03:00
|
|
|
Label {
|
|
|
|
id: modifiedLabel
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
text: qsTr("Modified") + ": " + new Date(modified * 1000).toLocaleString(Qt.locale(), Locale.ShortFormat)
|
2018-10-16 18:50:58 +03:00
|
|
|
font.pixelSize: Theme.fontSizeSmall
|
2018-10-17 13:58:55 +03:00
|
|
|
color: Theme.highlightColor
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Delete")
|
|
|
|
onClicked: console.log("Delete note")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
section.property: "category"
|
|
|
|
section.criteria: ViewSection.FullString
|
|
|
|
section.labelPositioning: ViewSection.InlineLabels
|
|
|
|
section.delegate: SectionHeader {
|
2018-10-17 00:52:28 +03:00
|
|
|
text: section
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
BusyIndicator {
|
|
|
|
id: busyIndicator
|
|
|
|
anchors.centerIn: parent
|
|
|
|
size: BusyIndicatorSize.Large
|
2018-10-17 00:52:28 +03:00
|
|
|
visible: notesList.count === 0 && notes.busy
|
2018-10-16 18:50:58 +03:00
|
|
|
running: visible
|
|
|
|
}
|
|
|
|
|
2018-10-21 02:44:23 +03:00
|
|
|
ViewPlaceholder {
|
2018-10-22 23:53:14 +03:00
|
|
|
enabled: notesList.count === 0 && !notes.busy && !noLoginPlaceholder.enabled
|
|
|
|
text: qsTr("No notes yet")
|
|
|
|
hintText: qsTr("Pull down to add a note")
|
2018-10-21 02:44:23 +03:00
|
|
|
}
|
|
|
|
|
2018-11-15 00:13:47 +03:00
|
|
|
ViewPlaceholder {
|
|
|
|
id: noLoginPlaceholder
|
|
|
|
enabled: appSettings.accountIDs.length <= 0
|
|
|
|
text: qsTr("No account yet")
|
|
|
|
hintText: qsTr("Got to the settings to add an account")
|
|
|
|
}
|
2018-10-22 23:53:14 +03:00
|
|
|
|
2018-11-15 00:13:47 +03:00
|
|
|
TouchInteractionHint {
|
|
|
|
id: addAccountHint
|
|
|
|
Component.onCompleted: if(!account.valid) restart()
|
|
|
|
interactionMode: TouchInteraction.Pull
|
|
|
|
direction: TouchInteraction.Down
|
|
|
|
}
|
|
|
|
InteractionHintLabel {
|
|
|
|
anchors.fill: parent
|
|
|
|
text: qsTr("Open the settings to configure your Nextcloud accounts")
|
|
|
|
opacity: addAccountHint.running ? 1.0 : 0.0
|
|
|
|
Behavior on opacity { FadeAnimation {} }
|
|
|
|
width: parent.width
|
|
|
|
}
|
2018-10-22 23:53:14 +03:00
|
|
|
|
2018-11-15 00:13:47 +03:00
|
|
|
VerticalScrollDecorator { flickable: notesList }
|
|
|
|
}
|
2018-10-16 18:50:58 +03:00
|
|
|
}
|