Tried to handle notes over id, not index in the subpages. Not that successfully until now.

This commit is contained in:
Scharel Clemens 2018-11-30 18:40:03 +01:00
parent b782150923
commit 3c1223f9a9
5 changed files with 41 additions and 32 deletions

View file

@ -39,6 +39,7 @@ ApplicationWindow
id: nextcloudAccounts
delegate: NotesApi {
uuid: nextcloudUUIDs.value[index]
saveFile: true
}
function add() {
push(uuidv4())

View file

@ -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
}

View file

@ -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(/^<li>\[ \]\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)

View file

@ -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) {

View file

@ -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 {