RadioDld.Main.DownloadListItem C# (CSharp) Method

DownloadListItem() private method

private DownloadListItem ( Model info, System.Windows.Forms.ListViewItem item ) : System.Windows.Forms.ListViewItem
info Model
item System.Windows.Forms.ListViewItem
return System.Windows.Forms.ListViewItem
        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;
        }
Main