Files
w3dhub_linux_launcher/lib/pages/download_manager.rb

87 lines
3.0 KiB
Ruby

class W3DHub
class Pages
class DownloadManager < Page
attr_reader :operation_info
def setup
@operation_info ||= {}
task = Store.application_manager.current_task
unless task
body.clear do
stack(width: 1.0, height: 1.0) do
background 0xaa_252525
tagline "No operations pending.", width: 1.0, text_align: :center, margin: 128
end
end
return
end
regenerate(task)
end
def regenerate(task)
@operation_info[:___step] = task.status.step
body.clear do
stack(width: 1.0, height: 1.0) do
background 0xaa_252525
# TODO: Show correct application details here
flow(width: 1.0, height: 0.1, padding: 8) do
app_color = Gosu::Color.new(task.application.color)
app_color.alpha = 0x88
background app_color
flow(width: 0.70, height: 1.0) do
image_path = File.exist?("#{CACHE_PATH}/#{task.app_id}.png") ? "#{CACHE_PATH}/#{task.app_id}.png" : "#{GAME_ROOT_PATH}/media/icons/default_icon.png"
@application_image = image image_path, height: 1.0
stack(margin_left: 8, width: 0.75) do
@application_name_label = tagline "#{task.application.name}"
@application_version_label = para "Version: #{task.target_version} (#{task.channel.id})"
end
end
flow(width: 0.30, height: 1.0) do
stack(width: 0.499, height: 1.0) do
para "Download Speed", width: 1.0, text_align: :center
@download_speed_label = para "- b/s", width: 1.0, text_align: :center
end
stack(width: 0.5, height: 1.0) do
para "Downloaded", width: 1.0, text_align: :center
para "---- b / ---- b", width: 1.0, text_align: :center
end
end
end
# Operations
@operations_container = stack(width: 1.0, height: 0.9, padding: 8, scroll: true) do
# TODO: Show actual list of downloads
i = -1
task.status.operations.each do |key, operation|
i += 1
stack(width: 1.0, height: 26, padding: 8) do
background 0xaa_333333 if i.odd?
flow(width: 1.0, height: 22) do
@operation_info["#{key}_name"] = para operation.label, width: 0.7, text_wrap: :none, tag: "#{key}_name"
@operation_info["#{key}_status"] = para operation.value, width: 0.3, text_align: :right, text_wrap: :none, tag: "#{key}_status"
end
@operation_info["#{key}_progress"] = progress fraction: operation.progress, height: 2, width: 1.0, margin_top: 2, tag: "#{key}_progress"
end
end
end
end
end
end
end
end
end