59 lines
1.4 KiB
GDScript
59 lines
1.4 KiB
GDScript
class_name EditNotePage
|
|
extends PanelContainer
|
|
|
|
signal canceled()
|
|
signal saved(changed_notes: Array[ChangeNote])
|
|
|
|
@onready var page_title: Label = %PageTitle
|
|
@onready var notes_container: VBoxContainer = %NotesContainer
|
|
|
|
const EDIT_NOTE_ITEM = preload("res://components/edit_note_item/edit_note_item.tscn")
|
|
|
|
var _current_note_id: String
|
|
var _changes: Array[ChangeNote] = []
|
|
|
|
|
|
func display_notes():
|
|
for child in notes_container.get_children():
|
|
notes_container.remove_child(child)
|
|
|
|
for change_note in _changes:
|
|
if change_note.kind == ChangeNote.Kind.DELETED:
|
|
continue
|
|
var note_item = EDIT_NOTE_ITEM.instantiate()
|
|
note_item.note = change_note.note
|
|
notes_container.add_child(note_item)
|
|
note_item.deleted.connect(_on_edit_node_item_deleted)
|
|
|
|
|
|
func display(current_note_id: String, title: String, notes: Array[Note]):
|
|
_current_note_id = current_note_id
|
|
page_title.text = title
|
|
|
|
_changes = []
|
|
for note in notes:
|
|
_changes.append(ChangeNote.new(ChangeNote.Kind.CHANGED, note))
|
|
|
|
display_notes()
|
|
|
|
|
|
func _on_edit_node_item_deleted(note: Note):
|
|
for changed_note in _changes:
|
|
if changed_note.note == note:
|
|
changed_note.kind = ChangeNote.Kind.DELETED
|
|
display_notes()
|
|
break
|
|
|
|
|
|
func _on_cancel_button_pressed():
|
|
canceled.emit()
|
|
|
|
|
|
func _on_save_button_pressed():
|
|
saved.emit(_changes)
|
|
|
|
|
|
func _on_add_note_button_pressed():
|
|
_changes.append(ChangeNote.new(ChangeNote.Kind.ADDED, Note.create("", _current_note_id)))
|
|
display_notes()
|