Progress bars.

This commit is contained in:
Paul Chote
2011-01-20 13:01:07 +13:00
parent 421058866d
commit 775ccc112b
4 changed files with 49 additions and 2 deletions

View File

@@ -181,6 +181,7 @@
<Compile Include="Widgets\ScrollPanelWidget.cs" />
<Compile Include="Graphics\ShroudRenderer.cs" />
<Compile Include="Network\Handshake.cs" />
<Compile Include="Widgets\ProgressBarWidget.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -0,0 +1,40 @@
#region Copyright & License Information
/*
* Copyright 2007-2010 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see LICENSE.
*/
#endregion
using System;
using System.Drawing;
using OpenRA.Graphics;
using System.Collections.Generic;
namespace OpenRA.Widgets
{
public class ProgressBarWidget : Widget
{
public int Percentage = 0;
public ProgressBarWidget() : base() {}
protected ProgressBarWidget(ProgressBarWidget widget)
: base(widget)
{
Percentage = widget.Percentage;
}
public override void DrawInner()
{
WidgetUtils.DrawPanel("dialog3", RenderBounds);
var barRect = new Rectangle(RenderBounds.X + 2, RenderBounds.Y + 2, Percentage * (RenderBounds.Width - 4) / 100, RenderBounds.Height - 4);
if (barRect.Width > 0)
WidgetUtils.DrawPanel("dialog2", barRect);
}
public override Widget Clone() { return new ProgressBarWidget(this); }
}
}

View File

@@ -81,8 +81,13 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
var status = window.GetWidget<LabelWidget>("STATUS");
status.GetText = () => "Initializing...";
var progress = window.GetWidget<ProgressBarWidget>("PROGRESS");
var dl = DownloadUrl(Info.PackageURL, Info.PackagePath,
(_,i) => status.GetText = () => "{0}% {1}/{2} bytes".F(i.ProgressPercentage, i.BytesReceived, i.TotalBytesToReceive),
(_,i) => {
status.GetText = () => "Downloading {1}/{2} kB ({0}%)".F(i.ProgressPercentage, i.BytesReceived/1024, i.TotalBytesToReceive/1024);
progress.Percentage = i.ProgressPercentage;
},
(_,i) => status.GetText = () => "Download Complete");
window.GetWidget("CANCEL").OnMouseUp = mi => { CancelDownload(dl); ShowInstallMethodDialog(); return true; };

View File

@@ -75,7 +75,8 @@ Background@INIT_DOWNLOAD:
Text:Downloading C&C Content
Align:Center
Bold:True
TextField@PROGRESS:
ProgressBar@PROGRESS:
Id:PROGRESS
X:50
Y:65
Width:PARENT_RIGHT - 100