extends Node
-const SCENE_SWITCHER = "res://scene_switcher/SceneSwitcher.tscn"
+const SCENE_SWITCHER := "res://scene_switcher/SceneSwitcher.tscn"
-@onready var fade_curtain = $FadeCurtain
-@onready var animation_player = $AnimationPlayer
-@onready var load_percentage = $LoadPercentage
+@onready var animation_player := $AnimationPlayer
+@onready var load_percentage := $LoadPercentage
-var settings_thread: Thread
-var database_thread: Thread
-
-func _ready():
- ResourceLoader.load_threaded_request(SCENE_SWITCHER)
-
- settings_thread = Thread.new()
- database_thread = Thread.new()
- settings_thread.start(load_settings)
- database_thread.start(preload_database)
-
-func _exit_tree():
- settings_thread.wait_to_finish()
- database_thread.wait_to_finish()
+var bg: Thread
func _process(_delta):
- var percentageArr = []
+ var percentageArr := []
ResourceLoader.load_threaded_get_status(SCENE_SWITCHER, percentageArr)
load_percentage.text = str(int(percentageArr[0] * 100)) + "%"
+func _on_ready():
+ bg = Thread.new()
+ bg.start(do_in_background)
+ ResourceLoader.load_threaded_request(SCENE_SWITCHER)
+
func _on_splash_time_timeout():
+ bg.wait_to_finish()
animation_player.play("fade_out")
func _on_animation_player_animation_finished(anim_name):
get_tree().change_scene_to_packed(scene)
queue_free()
+func do_in_background():
+ load_settings()
+ DB.instanciate()
+
func load_settings():
- var dao = SettingsDAO.new()
- print(dao.get_setting("theme", "clasic"))
+ print(Settings.get_setting("theme", "clasic"))
# TODO: set settings to do whatever they may do
-
-func preload_database():
- var db = DatabaseDAO.new()
-
-class_name DatabaseDAO extends Node
+extends Node
-const DB_NAME = "user://the-cutest-database"
+const DB_NAME := "user://the-cutest-database"
const DB_VERSION: int = 1
-const VERBOSITY_LELVEL = SQLite.NORMAL
+const VERBOSITY_LELVEL := SQLite.NORMAL
-var db
+var _db: SQLite
-func _init():
- db = SQLite.new()
- db.path = DB_NAME
- db.verbosity_level = VERBOSITY_LELVEL
- var success = db.open_db()
- if not success:
- printerr("Failed to open database: ", DB_NAME)
+func _get_instance() -> SQLite:
+ if not _is_instanced():
+ _db = SQLite.new()
+ _db.path = DB_NAME
+ _db.verbosity_level = VERBOSITY_LELVEL
+
+ var success := _db.open_db()
+ if not success:
+ printerr("Failed to open database: ", DB_NAME)
+
+ _migrate()
- _migrate()
+ return _db
+
+func _is_instanced() -> bool:
+ if _db is SQLite:
+ return true
+ else:
+ return false
+
+
+## PUBLIC METHODS
+
+## instanciate and checks for database upgrade migrations
+func instanciate():
+ _get_instance()
+
+## get todo list
+## if done is null will return all tasks, else it will return the done ones or not done ones
+func get_todo_tasks(done = null) -> Array[Dictionary]:
+ var query := "SELECT task, done, position, priority FROM todo"
+ if done:
+ query += " WHERE done = 1;"
+ elif done == false:
+ query += " WHERE done = 0;"
+ else:
+ query += ";"
+
+ var success := _get_instance().query(query)
+ if success:
+ return _get_instance().query_result
+ else:
+ printerr("Query didnt work (DB.get_todo_tasks()): ", query)
+ return [Dictionary()]
+
## MIGRATIONS
func _migrate():
# get database version from metadata table
- var current_version = 0
- var success = db.query("SELECT value FROM metadata WHERE key = 'version';")
+ var current_version := 0
+ var success := _db.query("SELECT value FROM metadata WHERE key = 'version';")
if success:
- current_version = int(db.query_result[0]["value"])
+ current_version = int(_db.query_result[0]["value"])
if current_version < DB_VERSION:
while current_version < DB_VERSION:
current_version = current_version + 1
# save to database the new version
- db.update_rows("metadata", "key='version'", {"value": current_version})
+ _db.update_rows("metadata", "key='version'", {"value": current_version})
## generates the new database, as 0 means there was no database present
func _migrate_database_from_0_to_1():
# metadata table
- var table_name = "metadata"
- var columns = {
+ var table_name := "metadata"
+ var columns := {
"key": {
"data_type": "text",
"primary_key": true
},
"value": {"data_type": "text"}
}
- var data = [
+ var data := [
{"key": "version", "value": "1"},
{"key": "install_time", "value": Time.get_unix_time_from_system()}
]
- db.create_table(table_name, columns)
+ _db.create_table(table_name, columns)
for row in data:
- db.insert_row(table_name, row)
+ _db.insert_row(table_name, row)
# todo table
table_name = "todo"
"updated_at": {"data_type": "text"}
}
- db.create_table(table_name, columns)
+ _db.create_table(table_name, columns)
# calendar table
table_name = "calendar"
"updated_at": {"data_type": "text"}
}
- db.create_table(table_name, columns)
+ _db.create_table(table_name, columns)
extends Node
const FILE_PATH := "user://settings.cfg"
-const SECTION := "settings"
+const _SECTION := "settings"
var _config: ConfigFile
-func get_instance() -> ConfigFile:
- if not is_instanced():
+func _get_instance() -> ConfigFile:
+ if not _is_instanced():
_config = ConfigFile.new()
if FileAccess.file_exists(FILE_PATH):
return _config
-func is_instanced() -> bool:
+func _is_instanced() -> bool:
if _config is ConfigFile:
return true
else:
return false
func save():
- get_instance().save(FILE_PATH)
+ _get_instance().save(FILE_PATH)
func set_setting(propertie: String, value):
- get_instance().set_value(SECTION, propertie, value)
+ _get_instance().set_value(_SECTION, propertie, value)
func get_setting(propertie: String, default = null):
- return get_instance().get_value(SECTION, propertie, default)
+ return _get_instance().get_value(_SECTION, propertie, default)