private ListViewItem DownloadListItem(Model.Download info, ListViewItem item)
{
if (item == null)
{
item = new ListViewItem();
item.Name = info.Epid.ToString(CultureInfo.InvariantCulture);
if (item.SubItems.Count < this.downloadColOrder.Count)
{
for (int addCols = item.SubItems.Count; addCols <= this.downloadColOrder.Count - 1; addCols++)
{
item.SubItems.Add(string.Empty);
}
}
}
for (int column = 0; column <= this.downloadColOrder.Count - 1; column++)
{
switch (this.downloadColOrder[column])
{
case Model.Download.DownloadCols.EpisodeName:
item.SubItems[column].Text = TextUtils.StripDateFromName(info.Name, info.Date);
break;
case Model.Download.DownloadCols.EpisodeDate:
item.SubItems[column].Text = info.Date.ToShortDateString();
break;
case Model.Download.DownloadCols.Status:
switch (info.Status)
{
case Model.Download.DownloadStatus.Waiting:
item.SubItems[column].Text = "Waiting";
break;
case Model.Download.DownloadStatus.Downloaded:
if (info.PlayCount == 0)
{
item.SubItems[column].Text = "Newly Downloaded";
}
else
{
item.SubItems[column].Text = "Downloaded";
}
break;
case Model.Download.DownloadStatus.Errored:
item.SubItems[column].Text = "Error";
break;
default:
throw new InvalidDataException("Unknown status of " + info.Status.ToString());
}
break;
case Model.Download.DownloadCols.Progress:
item.SubItems[column].Text = string.Empty;
break;
case Model.Download.DownloadCols.Duration:
string durationText = string.Empty;
if (info.Duration != 0)
{
int mins = (int)Math.Round(info.Duration / (decimal)60, 0);
int hours = mins / 60;
mins = mins % 60;
durationText = string.Format(CultureInfo.CurrentCulture, "{0}:{1:00}", hours, mins);
}
item.SubItems[column].Text = durationText;
break;
default:
throw new InvalidDataException("Unknown column type of " + this.downloadColOrder[column].ToString());
}
}
switch (info.Status)
{
case Model.Download.DownloadStatus.Waiting:
item.ImageKey = "waiting";
break;
case Model.Download.DownloadStatus.Downloaded:
if (info.PlayCount == 0)
{
item.ImageKey = "downloaded_new";
}
else
{
item.ImageKey = "downloaded";
}
break;
case Model.Download.DownloadStatus.Errored:
item.ImageKey = "error";
break;
default:
throw new InvalidDataException("Unknown status of " + info.Status.ToString());
}
return item;
}