extends Control ## The main window: the top bar, the popups opened from it and the quiz below it. ## ## Everything that is not part of a quiz lives here, so other views can be added next ## to the quiz later. @onready var top_bar: TopBar = $TopBar @onready var quiz: Quiz = $Quiz @onready var search_view: Control = $Search @onready var sync_window: Control = %SyncWindow @onready var shortcuts_window: Control = %ShortcutsWindow @onready var qr_window: Control = %QRWindow @onready var about_window: Control = %AboutWindow @onready var statistic_popup: PopupPanel = $StatisticsPopupPanel @onready var statistic_label: Label = $StatisticsPopupPanel/StatisticsLabel ## Dims the window behind an open popup and keeps clicks from reaching the buttons under it. var popup_backdrop: PopupBackdrop func _ready() -> void: popup_backdrop = PopupBackdrop.add_to(self, _popups()) if OS.has_feature("macos"): print("is_mac") top_bar.search_pressed.connect(show_search) top_bar.sync_pressed.connect(sync_soundtracks) top_bar.statistics_pressed.connect(get_statistics) top_bar.shortcuts_pressed.connect(show_shortcuts) top_bar.about_pressed.connect(show_about) top_bar.qr_pressed.connect(show_qr) sync_window.connect("sync_started", _on_sync_started) sync_window.connect("sync_finished", _on_sync_finished) quiz.server_changed.connect(search_view.get_list_of_soundtracks) search_view.get_list_of_soundtracks() func _input(event: InputEvent) -> void: if event is InputEventKey and event.pressed: if event.alt_pressed && event.keycode == KEY_ENTER: print("Alt + Enter pressed") Settings.fullscreen = !Settings.fullscreen if Settings.fullscreen == true: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) if Settings.fullscreen == false: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) if event.alt_pressed && event.keycode == KEY_K: shortcuts_window.toggle() func _popups() -> Array[PopupWindow]: return [search_view, sync_window, qr_window, shortcuts_window, about_window] func show_search() -> void: print("show_search") search_view.toggle() func show_about() -> void: print("show_about") about_window.open() func show_shortcuts() -> void: print("show_shortcuts") shortcuts_window.open() func show_qr() -> void: print("show_qr") qr_window.open() func get_statistics() -> void: print("get_statistics") statistic_popup.visible = true statistic_label.text = "Total amount of soundtracks in the playlist: " \ + str(search_view.soundtracks.size()) func sync_soundtracks() -> void: print("sync_soundtracks") sync_window.start_sync() func _on_sync_started() -> void: print("_on_sync_started") top_bar.sync_button.disabled = false quiz.lock_for_sync() func _on_sync_finished() -> void: print("_on_sync_finished") search_view.get_list_of_soundtracks() quiz.on_sync_finished()