Files
leonwww/flumi/Scripts/Browser/SettingsManager.gd
Leonmmcoset a508e3cefd
Some checks failed
Build Gurty / Build Gurty (, ubuntu-latest, linux, x86_64-unknown-linux-gnu) (push) Failing after 1m33s
Build GurtCA / Build GurtCA (, ubuntu-latest, linux, x86_64-unknown-linux-gnu) (push) Failing after 11m20s
Build GDExtension / Build GDExtension (libgurt_godot.so, ubuntu-latest, linux, x86_64-unknown-linux-gnu) (push) Failing after 16m9s
Build Flumi / Build Flumi (Linux, 4.4.1, ubuntu-latest, linux) (push) Failing after 2h10m11s
Build Flumi / Build Flumi (Windows Desktop, 4.4.1, windows-latest, windows) (push) Has been cancelled
Build GDExtension / Build GDExtension (gurt_godot.dll, windows-latest, windows, x86_64-pc-windows-msvc) (push) Has been cancelled
Build GurtCA / Build GurtCA (.exe, windows-latest, windows, x86_64-pc-windows-msvc) (push) Has been cancelled
Build Gurty / Build Gurty (.exe, windows-latest, windows, x86_64-pc-windows-msvc) (push) Has been cancelled
update
2025-11-06 20:02:53 +08:00

115 lines
2.6 KiB
GDScript

extends Node
const SETTINGS_FILE = "user://browser_settings.json"
var settings_data = {
"startup_new_tab": true,
"startup_specific_page": false,
"startup_url": "",
"search_engine_url": "lw://search.web?q=",
"download_confirmation": true,
"dns_url": "135.125.163.131:4878"
}
var _loaded = false
func _ready():
load_settings()
func load_settings():
if _loaded:
return
if not FileAccess.file_exists(SETTINGS_FILE):
save_settings()
_loaded = true
return
var file = FileAccess.open(SETTINGS_FILE, FileAccess.READ)
if not file:
print("Failed to open settings file")
_loaded = true
return
var json_text = file.get_as_text()
file.close()
var json = JSON.new()
var parse_result = json.parse(json_text)
if parse_result != OK:
print("Failed to parse settings JSON")
_loaded = true
return
var loaded_data = json.data
if loaded_data is Dictionary:
# Merge loaded settings with defaults
for key in loaded_data:
if key in settings_data:
settings_data[key] = loaded_data[key]
_loaded = true
print("Settings loaded: ", settings_data)
func save_settings():
var file = FileAccess.open(SETTINGS_FILE, FileAccess.WRITE)
if not file:
print("Failed to open settings file for writing")
return
var json_text = JSON.stringify(settings_data)
file.store_string(json_text)
file.close()
print("Settings saved: ", settings_data)
func get_download_confirmation() -> bool:
return settings_data.download_confirmation
func get_search_engine_url() -> String:
return settings_data.search_engine_url
func get_dns_url() -> String:
return settings_data.dns_url
func get_startup_behavior() -> Dictionary:
return {
"new_tab": settings_data.startup_new_tab,
"specific_page": settings_data.startup_specific_page,
"url": settings_data.startup_url
}
func set_download_confirmation(value: bool):
settings_data.download_confirmation = value
save_settings()
func set_search_engine_url(value: String):
settings_data.search_engine_url = value
save_settings()
func set_dns_url(value: String):
settings_data.dns_url = value
save_settings()
# Update GurtProtocol immediately
GurtProtocol.set_dns_server(value)
func set_startup_new_tab(value: bool):
settings_data.startup_new_tab = value
if value:
settings_data.startup_specific_page = false
save_settings()
func set_startup_specific_page(value: bool):
settings_data.startup_specific_page = value
if value:
settings_data.startup_new_tab = false
save_settings()
func set_startup_url(value: String):
settings_data.startup_url = value
save_settings()
func get_setting(key: String, default_value = null):
if key in settings_data:
return settings_data[key]
return default_value