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()