boronotes/main.gd

97 lines
2.0 KiB
GDScript3
Raw Normal View History

2024-02-12 19:52:47 +03:00
class_name Main
extends Control
2024-02-13 19:45:43 +03:00
@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
2024-02-12 19:52:47 +03:00
var notes: Array[Note] = []
var previous_notes: Array[Note] = []
var current_note: Note
2024-02-13 19:45:43 +03:00
func display_page() -> void:
var note_title = current_note.title if current_note else "Главная"
2024-02-12 19:52:47 +03:00
var display_notes = notes.filter(func (note): return note.parent_id == (current_note.id if current_note else ""))
2024-02-13 19:45:43 +03:00
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)
2024-02-12 19:52:47 +03:00
func _ready():
2024-02-13 19:45:43 +03:00
save_manager.load_data()
2024-02-12 19:52:47 +03:00
2024-02-13 19:45:43 +03:00
display_page()
2024-02-12 19:52:47 +03:00
2024-02-13 19:45:43 +03:00
func _on_note_page_back_pressed():
2024-02-12 19:52:47 +03:00
current_note = previous_notes.pop_back()
2024-02-13 19:45:43 +03:00
note_page.back_button.disabled = previous_notes.size() == 0
display_page()
2024-02-12 19:52:47 +03:00
2024-02-13 19:45:43 +03:00
func _on_note_page_edit_pressed():
editing = true
display_page()
2024-02-12 19:52:47 +03:00
2024-02-13 19:45:43 +03:00
func _on_note_page_note_pressed(note: Note) -> void:
2024-02-12 19:52:47 +03:00
previous_notes.append(current_note)
current_note = note
2024-02-13 19:45:43 +03:00
note_page.back_button.disabled = false
display_page()
2024-02-12 19:52:47 +03:00
func _on_save_manager_load_notes(loaded_notes):
2024-02-13 19:45:43 +03:00
editing = false
2024-02-12 19:52:47 +03:00
notes = loaded_notes
2024-02-13 19:45:43 +03:00
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()