66 lines
1.6 KiB
GDScript
66 lines
1.6 KiB
GDScript
class_name Main
|
|
extends Control
|
|
|
|
var notes: Array[Note] = []
|
|
var previous_notes: Array[Note] = []
|
|
var current_note: Note
|
|
|
|
@onready var back_button: Button = %BackButton
|
|
@onready var page_title: Label = %PageTitle
|
|
@onready var notes_container: VBoxContainer = %NotesContainer
|
|
const NOTE_ITEM = preload("res://components/note_item/note_item.tscn")
|
|
|
|
|
|
func display_note() -> void:
|
|
back_button.disabled = previous_notes.size() == 0
|
|
|
|
page_title.text = current_note.title if current_note else "Главная"
|
|
|
|
for child in notes_container.get_children():
|
|
notes_container.remove_child(child)
|
|
|
|
var display_notes = notes.filter(func (note): return note.parent_id == (current_note.id if current_note else ""))
|
|
|
|
for note in display_notes:
|
|
var note_item = NOTE_ITEM.instantiate()
|
|
note_item.note = note
|
|
notes_container.add_child(note_item)
|
|
note_item.pressed.connect(_on_note_item_pressed)
|
|
|
|
|
|
func _ready():
|
|
var note_1 = Note.new("Тест 1")
|
|
var note_2 = Note.new("Тест 2")
|
|
var note_3 = Note.new("Тест 3")
|
|
var note_1_1 = Note.new("Тест 1 1", note_1.id)
|
|
var note_1_2 = Note.new("Тест 1 2", note_1.id)
|
|
var note_1_2_1 = Note.new("Тест 1 2 1", note_1_2.id)
|
|
var note_2_1 = Note.new("Тест 2 1", note_2.id)
|
|
|
|
notes = [
|
|
note_1,
|
|
note_2,
|
|
note_3,
|
|
note_1_1,
|
|
note_1_2,
|
|
note_1_2_1,
|
|
note_2_1,
|
|
]
|
|
|
|
display_note()
|
|
|
|
|
|
func _on_back_button_pressed():
|
|
current_note = previous_notes.pop_back()
|
|
display_note()
|
|
|
|
|
|
func _on_note_item_pressed(note: Note) -> void:
|
|
previous_notes.append(current_note)
|
|
current_note = note
|
|
display_note()
|
|
|
|
|
|
func _on_save_manager_load_notes(loaded_notes):
|
|
notes = loaded_notes
|