using System;
using System.Windows.Forms;
namespace foo_bar
{
public enum DownloadType { Server, Client };
public enum SubItemTypes { Progress, State };
public enum DownloadState { ConnectingToHttp, ConnectingToServer, Running, Paused, TimeOut, Error, Okay, Server };
class DownloadItem : ListViewItem
{
private string[] DownloadStateMessages = new string[7] {"Connecting to the HTTP server", "Connecting to the MetroLeech server", "Running",
"Paused", "The download has timed out", "Error downloading the file",
"The download has finished succesfully"};
// generic properties
public DownloadType Type;
public string FileName;
public bool IsSelected;
private int progress;
private DownloadState state;
private string url;
private long size;
// server properties
public int ClientCount;
public int FinishedSegments;
public int DownloadSegments;
// client properties
public int Speed;
public int DownloadedSegments;
public DownloadItem(DownloadType type, string name)
{
// generic properties
Type = type;
IsSelected = false;
// server properties
ClientCount = 0;
FinishedSegments = 0;
DownloadSegments = 0;
// client properties
Speed = 0;
DownloadedSegments = 0;
// add the subitems
ListViewItem.ListViewSubItem state = new ListViewItem.ListViewSubItem();
state.Tag = SubItemTypes.State;
SubItems.Add(state);
FileName = name;
SubItems.Add(FileName);
ListViewItem.ListViewSubItem progress = new ListViewItem.ListViewSubItem();
progress.Tag = SubItemTypes.Progress;
progress.Text = "0";
SubItems.Add(progress);
}
public void SetProgress(int value)
{
progress = value;
SubItems[3].Text = value.ToString();
ListView.Invalidate();
}
public void SetState(DownloadState value)
{
state = value;
SubItems[1].Text = ((int)value).ToString();
ToolTipText = DownloadStateMessages[(int)value];
ListView.Invalidate();
}
public void SetInfo(string url, long size)
{
this.url = url;
this.size = size;
}
}
}