boronotes/main.gd

97 lines
2.0 KiB
GDScript

class_name Main
extends Control
@onready var note_page: NotePage = %NotePage
@onready var edit_note_page: EditNotePage = %EditNotePage
@onready var save_manager = $Utils/SaveManager
var editing: bool = false :
set(value):
editing = value
note_page.visible = not editing
edit_note_page.visible = editing
var notes: Array[Note] = []
var previous_notes: Array[Note] = []
var current_note: Note
func display_page() -> void:
var note_title = current_note.title if current_note else "Главная"
var display_notes = notes.filter(func (note): return note.parent_id == (current_note.id if current_note else ""))
if editing:
edit_note_page.display(
current_note.id if current_note else "",
note_title,
display_notes
)
else:
note_page.display(note_title, display_notes)
func _ready():
save_manager.load_data()
display_page()
func _on_note_page_back_pressed():
current_note = previous_notes.pop_back()
note_page.back_button.disabled = previous_notes.size() == 0
display_page()
func _on_note_page_edit_pressed():
editing = true
display_page()
func _on_note_page_note_pressed(note: Note) -> void:
previous_notes.append(current_note)
current_note = note
note_page.back_button.disabled = false
display_page()
func _on_save_manager_load_notes(loaded_notes):
editing = false
notes = loaded_notes
print(loaded_notes)
display_page()
func _on_edit_button_pressed():
editing = true
display_page()
func _on_edit_note_page_canceled():
editing = false
func _on_edit_note_page_saved(changed_notes: Array[ChangeNote]):
editing = false
for changed_note in changed_notes:
match changed_note.kind:
ChangeNote.Kind.ADDED:
if changed_note.note.title.strip_edges():
notes.append(changed_note.note)
ChangeNote.Kind.DELETED:
notes.erase(changed_note.note)
display_page()
save_manager.save_data(notes)
func _notification(what: int) -> void:
match what:
NOTIFICATION_WM_GO_BACK_REQUEST:
if editing:
editing = false
elif previous_notes.size():
_on_note_page_back_pressed()
else:
get_tree().quit()