71 lines
2.1 KiB
GDScript3
71 lines
2.1 KiB
GDScript3
|
|
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)
|