Files
leonwww/flumi/Scripts/Browser/DownloadEntry.gd

71 lines
2.1 KiB
GDScript3
Raw Normal View History

2025-09-07 13:37:47 +03:00
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)