download system
This commit is contained in:
70
flumi/Scripts/Browser/DownloadEntry.gd
Normal file
70
flumi/Scripts/Browser/DownloadEntry.gd
Normal file
@@ -0,0 +1,70 @@
|
||||
class_name DownloadEntry
|
||||
extends PanelContainer
|
||||
|
||||
@onready var time_label: RichTextLabel = $DownloadEntry/TimeLabel
|
||||
@onready var filename_label: RichTextLabel = $DownloadEntry/FileNameLabel
|
||||
@onready var domain_label: RichTextLabel = $DownloadEntry/DomainLabel
|
||||
@onready var size_label: RichTextLabel = $DownloadEntry/SizeLabel
|
||||
@onready var link_button: Button = $DownloadEntry/LinkButton
|
||||
@onready var file_button: Button = $DownloadEntry/FileButton
|
||||
|
||||
var download_data: Dictionary = {}
|
||||
|
||||
func setup_download_entry(data: Dictionary):
|
||||
download_data = data
|
||||
|
||||
var filename = data.get("filename", "Unknown file")
|
||||
var url = data.get("url", "")
|
||||
var current_site = data.get("current_site", "")
|
||||
var file_size = data.get("size", 0)
|
||||
var timestamp = data.get("timestamp", Time.get_unix_time_from_system())
|
||||
|
||||
filename_label.text = filename
|
||||
|
||||
current_site = URLUtils.extract_domain(url) if url != "" else "Unknown source"
|
||||
domain_label.text = current_site
|
||||
|
||||
var size_text = NetworkRequest.format_bytes(file_size)
|
||||
size_label.text = size_text
|
||||
|
||||
var time_text = _format_time(timestamp)
|
||||
time_label.text = time_text
|
||||
|
||||
func _format_time(unix_timestamp: float) -> String:
|
||||
var datetime = Time.get_datetime_dict_from_unix_time(int(unix_timestamp))
|
||||
|
||||
# Format as "3:45PM"
|
||||
var hour = datetime.hour
|
||||
var minute = datetime.minute
|
||||
var am_pm = "AM"
|
||||
|
||||
if hour == 0:
|
||||
hour = 12
|
||||
elif hour > 12:
|
||||
hour -= 12
|
||||
am_pm = "PM"
|
||||
elif hour == 12:
|
||||
am_pm = "PM"
|
||||
|
||||
return "%d:%02d%s" % [hour, minute, am_pm]
|
||||
|
||||
func get_filename() -> String:
|
||||
return download_data.get("filename", "")
|
||||
|
||||
func get_domain() -> String:
|
||||
var url = download_data.get("url", "")
|
||||
return URLUtils.extract_domain(url) if url != "" else ""
|
||||
|
||||
func get_download_data() -> Dictionary:
|
||||
return download_data
|
||||
|
||||
func _on_link_button_pressed() -> void:
|
||||
DisplayServer.clipboard_set(download_data.get("url", ""))
|
||||
|
||||
func _on_file_button_pressed() -> void:
|
||||
var file_path = download_data.get("file_path", "")
|
||||
if file_path != "" and FileAccess.file_exists(file_path):
|
||||
var file_dir = file_path.get_base_dir()
|
||||
OS.shell_show_in_file_manager(file_dir)
|
||||
else:
|
||||
print("File not found: ", file_path)
|
||||
Reference in New Issue
Block a user