diff --git a/qml/harbour-nextcloudnotes.qml b/qml/harbour-nextcloudnotes.qml
index 0cdef86..16bdd51 100644
--- a/qml/harbour-nextcloudnotes.qml
+++ b/qml/harbour-nextcloudnotes.qml
@@ -39,6 +39,7 @@ ApplicationWindow
id: nextcloudAccounts
delegate: NotesApi {
uuid: nextcloudUUIDs.value[index]
+ saveFile: true
}
function add() {
push(uuidv4())
diff --git a/qml/pages/EditPage.qml b/qml/pages/EditPage.qml
index ed57c34..927fa03 100644
--- a/qml/pages/EditPage.qml
+++ b/qml/pages/EditPage.qml
@@ -6,11 +6,11 @@ Dialog {
id: page
onAccepted: {
- account.updateNote(account.model.get(noteIndex).id, { 'category': categoryField.text, 'content': contentArea.text, 'favorite': favoriteButton.selected } )
+ account.updateNote(note.id, { 'category': categoryField.text, 'content': contentArea.text, 'favorite': favoriteButton.selected } )
}
property var account
- property int noteIndex
+ property var note
SilicaFlickable {
id: flickable
@@ -21,9 +21,9 @@ Dialog {
MenuItem {
text: qsTr("Reset")
onClicked: {
- categoryField.text = account.model.get(noteIndex).category
- contentArea.text = account.model.get(noteIndex).content
- favoriteButton.selected = account.model.get(noteIndex).favorite
+ categoryField.text = note.category
+ contentArea.text = note.content
+ favoriteButton.selected = note.favorite
}
}
MenuItem {
@@ -44,7 +44,7 @@ Dialog {
id: contentArea
width: parent.width
focus: true
- text: account.model.get(noteIndex).content
+ text: note.content
onTextChanged: {
// TODO Autocomplete list symbols
/*var preText = text.substring(0, cursorPosition)
@@ -59,7 +59,7 @@ Dialog {
width: parent.width - x
IconButton {
id: favoriteButton
- property bool selected: account.model.get(noteIndex).favorite
+ property bool selected: note.favorite
width: Theme.iconSizeMedium
icon.source: (selected ? "image://theme/icon-m-favorite-selected?" : "image://theme/icon-m-favorite?") +
(favoriteButton.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor)
@@ -68,7 +68,7 @@ Dialog {
TextField {
id: categoryField
width: parent.width - favoriteButton.width
- text: account.model.get(noteIndex).category
+ text: note.category
placeholderText: qsTr("Category")
label: placeholderText
}
diff --git a/qml/pages/NotePage.qml b/qml/pages/NotePage.qml
index 2274f24..db2964f 100644
--- a/qml/pages/NotePage.qml
+++ b/qml/pages/NotePage.qml
@@ -4,6 +4,10 @@ import Sailfish.Silica 1.0
Dialog {
id: noteDialog
+
+ property var account
+ property var note
+
property var showdown: ShowDown.showdown
property var converter: new showdown.Converter(
{ noHeaderId: true,
@@ -14,10 +18,14 @@ Dialog {
emoji: true } )
function reloadContent() {
- modifiedDetail.value = new Date(account.model.get(noteIndex).modified * 1000).toLocaleString(Qt.locale(), Locale.ShortFormat)
- favoriteDetail.value = account.model.get(noteIndex).favorite ? qsTr("yes") : qsTr("no")
- categoryDetail.value = account.model.get(noteIndex).category
- var convertedText = converter.makeHtml(account.model.get(noteIndex).content)
+ var tmpNote = account.getNote(note.id)
+ if (tmpNote) {
+ note = tmpNote
+ }
+ modifiedDetail.value = new Date(note.modified * 1000).toLocaleString(Qt.locale(), Locale.ShortFormat)
+ favoriteDetail.value = note.favorite ? qsTr("yes") : qsTr("no")
+ categoryDetail.value = note.category
+ var convertedText = converter.makeHtml(note.content)
var occurence = -1
convertedText = convertedText.replace(/^
\[ \]\s(.*)<\/li>$/gm,
function(match, p1, offset) {
@@ -35,11 +43,11 @@ Dialog {
}
acceptDestination: Qt.resolvedUrl("EditPage.qml")
- acceptDestinationProperties: { account: account; noteIndex: noteIndex }
- Component.onCompleted: acceptDestinationProperties = { account: account, noteIndex: noteIndex }
+ acceptDestinationProperties: { account: account; note: note }
+ Component.onCompleted: acceptDestinationProperties = { account: account, note: note }
onStatusChanged: {
if (status === PageStatus.Active) {
- account.getNote(account.model.get(noteIndex).id)
+ //account.getNote(note.id)
reloadContent()
}
}
@@ -52,9 +60,6 @@ Dialog {
}
}
- property var account
- property int noteIndex
-
SilicaFlickable {
anchors.fill: parent
contentHeight: mainColumn.height
@@ -74,13 +79,13 @@ Dialog {
text: qsTr("Delete")
enabled: account ? true : false
//visible: appSettings.currentAccount >= 0
- onClicked: remorse.execute("Deleting", function() { account.deleteNote(account.model.get(noteIndex).id) } )
+ onClicked: remorse.execute("Deleting", function() { account.deleteNote(notey.id) } )
}
MenuItem {
text: enabled ? qsTr("Reload") : qsTr("Updating...")
enabled: account ? !account.busy : false
//visible: appSettings.currentAccount >= 0
- onClicked: account.getNote(account.model.get(noteIndex).id)
+ onClicked: account.getNote(note.id)
}
MenuLabel {
visible: appSettings.currentAccount >= 0
@@ -111,7 +116,7 @@ Dialog {
defaultLinkActions: false
onLinkActivated: {
var occurence = -1
- var newContent = account.model.get(noteIndex).content
+ var newContent = note.content
if (/^tasklist:checkbox_(\d+)$/m.test(link)) {
newContent = newContent.replace(/^- \[ \]\s(.*)$/gm,
function(match, p1, offset, string) {
@@ -123,7 +128,7 @@ Dialog {
return match
}
} )
- account.updateNote(account.model.get(noteIndex).id, { 'content': newContent } )
+ account.updateNote(note.id, { 'content': newContent } )
}
else if (/^tasklist:uncheckbox_(\d+)$/m.test(link)) {
newContent = newContent.replace(/^- \[x\]\s(.*)$/gm,
@@ -136,7 +141,7 @@ Dialog {
return match
}
} )
- account.updateNote(account.model.get(noteIndex).id, { 'content': newContent } )
+ account.updateNote(note.id, { 'content': newContent } )
}
else {
Qt.openUrlExternally(link)
diff --git a/qml/pages/NotesApi.qml b/qml/pages/NotesApi.qml
index 0b178c8..3b3306c 100644
--- a/qml/pages/NotesApi.qml
+++ b/qml/pages/NotesApi.qml
@@ -14,10 +14,10 @@ Item {
property bool unsecureConnection
property bool unencryptedConnection
- property var modelData: [ ] // TODO use note id as key { note1.id: note1, note2.id, note2, ... }
+ property var modelData: [ ] // TODO use note id as key { note1.id: note1, note2.id: note2, ... }
property var model: ListModel { }
- //property string file: StandardPaths.data + "/" + uuid + ".json"
- //property bool saveFile: false
+ property string file: StandardPaths.data + "/" + uuid + ".json"
+ property bool saveFile: false
property bool busy: false
property int status: 204
property string statusText: "No Content"
@@ -86,10 +86,6 @@ Item {
case "GET":
if (Array.isArray(json)) {
console.log("Received all notes via API: " + endpoint)
- /*modelData = []
- json.forEach(function(currentValue, index, array) {
- modelData[currentValue.id] = currentValue
- } )*/
modelData = json
mapDataToModel()
update = new Date()
@@ -152,6 +148,10 @@ Item {
function getNote(id) {
if (id)
callApi("GET", { 'id': id } )
+ modelData.forEach(function(currentValue) {
+ if (currentValue.id === id)
+ return currentValue
+ } )
}
function createNote(data) {
@@ -200,15 +200,16 @@ Item {
modelData.sort(function(a, b) { return b.modified-a.modified } )
break
case "category":
+ modelData.sort(function(a, b) { return b.modified-a.modified } )
modelData.sort(function(a, b) { return ((a.category > b.category) ? 1 : ((b.category > a.category) ? -1 : 0)) } )
break
case "title":
+ modelData.sort(function(a, b) { return b.modified-a.modified } )
modelData.sort(function(a, b) { return ((a.title > b.title) ? 1 : ((b.title > a.title) ? -1 : 0)) } )
break
}
for (var element in modelData) {
model.set(element, modelData[element])
- //model.setProperty(element, "date", getPrettyDate(modelData[element].modified))
}
element++
while (model.count > element) {
diff --git a/qml/pages/NotesPage.qml b/qml/pages/NotesPage.qml
index 4bc3e65..4e01c8b 100644
--- a/qml/pages/NotesPage.qml
+++ b/qml/pages/NotesPage.qml
@@ -61,6 +61,7 @@ Page {
header: PageHeader {
title: nextcloudAccounts.itemAt(appSettings.currentAccount).name //qsTr("Nextclound Notes")
description: nextcloudAccounts.itemAt(appSettings.currentAccount).username + "@" + nextcloudAccounts.itemAt(appSettings.currentAccount).server
+
BusyIndicator {
x: Theme.horizontalPageMargin
anchors.verticalCenter: parent.verticalCenter
@@ -176,7 +177,8 @@ Page {
}
onClicked: pageStack.push(Qt.resolvedUrl("NotePage.qml"),
- { account: nextcloudAccounts.itemAt(appSettings.currentAccount), noteIndex: index } )
+ { account: nextcloudAccounts.itemAt(appSettings.currentAccount),
+ note: nextcloudAccounts.itemAt(appSettings.currentAccount).modelData[index]} )
onPressAndHold: menu.open(note)
ContextMenu {