public void PopulateAndSortWithNewEpisodes(QListView <PodcastEpisode> lvwEpisodes) { Refresh(); List <PodcastEpisode> ppe; lock (episodeLock) { ppe = episodes.FindAll(e => !e.IsDeleted).ToList(); } lvwEpisodes.Items = ppe; lvwEpisodes.Sort(); if (ppe.Count > 0) { lvwEpisodes.SelectedItem = lvwEpisodes.Items[0]; } }
public PodcastManager() { this.BackColor = Color.Black; instance = this; List <string> subHeadings = new List <string>() { "Podcast Name", "Genre", "Last Download", "Count", "Status", "Reload", "Get All", "Edit", "Remove" }; List <QListView <PodcastSubscription> .ClickDelegate> subActions = new List <QListView <PodcastSubscription> .ClickDelegate>() { checkForNewEpisodes, downloadSubscription, showSubscriptionEditPanel, removeSubscription }; lvwSubscriptions = new QListView <PodcastSubscription>(subHeadings, subActions, new string[] { String.Empty, "GenreXXXXXX", "Last DownloadXX", "XXXX / XXXX", "XXXX Available", "Reload", "Get All", "Edit", "Remove" }, PodcastSubscription.Compare); lvwSubscriptions.ContextMenuHook += new QListView <PodcastSubscription> .ContextMenuHookDelegate(lvwSubscriptions_ContextMenuHook); lvwSubscriptions.Sort((int)(PodcastSubscription.Columns.Name), true); this.Controls.Add(lvwSubscriptions); List <string> epHeadings = new List <string>() { "Title", "Description", "Episode Date", "Status", "Duration", "Download", "Play", "Remove" }; lvwEpisodes = new QListView <PodcastEpisode>(epHeadings, new List <QListView <PodcastEpisode> .ClickDelegate>() { downloadEpisode, playEpisode, removeEpisode }, new string[] { string.Empty, String.Empty, "Episode DateXX", "Downloading XXX%", "DurationXX", "Download", "Play", "Remove" }, PodcastEpisode.Compare); lvwEpisodes.ContextMenuHook += new QListView <PodcastEpisode> .ContextMenuHookDelegate(lvwEpisodes_ContextMenuHook); lvwEpisodes.Sort((int)(PodcastEpisode.Columns.Date), false); this.Controls.Add(lvwEpisodes); btnDone = new QButton("Done", false, false); btnDone.BackColor = this.BackColor; this.Controls.Add(btnDone); btnDone.ButtonPressed += (s) => { controller.RequestAction(QActionType.AdvanceScreen); }; btnStopDownloads = new QButton("Stop Downloads", false, false); btnStopDownloads.BackColor = this.BackColor; this.Controls.Add(btnStopDownloads); btnStopDownloads.Enabled = false; btnStopDownloads.ButtonPressed += (s) => { if (!Locked) { stopDownloads(); } }; btnSetDownloadFolder = new QButton("Set Download Folder...", false, false); btnSetDownloadFolder.BackColor = this.BackColor; this.Controls.Add(btnSetDownloadFolder); btnSetDownloadFolder.ButtonPressed += (s) => { if (!Locked) { setDownloadFolder(); } }; btnRefreshAll = new QButton("Refresh All Subscriptions", false, false); btnRefreshAll.BackColor = this.BackColor; this.Controls.Add(btnRefreshAll); btnRefreshAll.ButtonPressed += (s) => { if (!Locked) { Clock.DoOnNewThread(autoRefreshSubscriptions); } }; btnAutoManage = new QButton("Auto Manage Options...", false, false); btnAutoManage.BackColor = this.BackColor; this.Controls.Add(btnAutoManage); btnAutoManage.ButtonPressed += (s) => { if (!Locked) { showAutoManageOptions(); } }; txtURL = new QTextBoxFocusOnClick(); this.Controls.Add(txtURL); txtURL.MaxLength = 2048; txtURL.Enter += (s, e) => { keyPreviewChange(); }; txtURL.Leave += (s, e) => { keyPreviewChange(); }; txtURL.KeyPress += (s, e) => { if (!Locked) { switch (e.KeyChar) { case '\r': if (txtURL.Text.Length > 0) { btnGetInfo_ButtonPressed(btnGo); } e.Handled = true; break; } } }; txtURL.EnableWatermark(this, "[Type or drag a podcast feed here.]", String.Empty); btnGo = new QButton("Add Podcast", false, true); btnGo.ButtonPressed += new QButton.ButtonDelegate(btnGetInfo_ButtonPressed); btnGo.BackColor = this.BackColor; this.Controls.Add(btnGo); lblSubscriptions = new QLabel("Subscriptions", Styles.FontBold); this.Controls.Add(lblSubscriptions); lblEpisodes = new QLabel("Episodes", Styles.FontBold); this.Controls.Add(lblEpisodes); txtURL.DragEnter += (s, e) => { onDragEnter(e); }; txtURL.DragDrop += (s, e) => { onDragDrop(e); }; txtURL.AllowDrop = true; txtURL.Watermark.DragEnter += (s, e) => { onDragEnter(e); }; txtURL.Watermark.DragDrop += (s, e) => { onDragDrop(e); }; txtURL.Watermark.AllowDrop = true; lvwSubscriptions.ClickCallback += new QListView <PodcastSubscription> .ClickDelegate(populateEpisodes); lvwSubscriptions.DoubleClickCallback += new QListView <PodcastSubscription> .ClickDelegate(lvwSubscriptions_DoubleClickCallback); lvwSubscriptions.DragEnter += (s, e) => { onDragEnter(e); }; lvwSubscriptions.DragDrop += (s, e) => { onDragDrop(e); }; lvwSubscriptions.AllowDrop = true; lvwEpisodes.DoubleClickCallback += new QListView <PodcastEpisode> .ClickDelegate(lvwEpisodes_DoubleClickCallback); lvwEpisodes.ClickCallback += new QListView <PodcastEpisode> .ClickDelegate(lvwEpisodes_ClickCallback); }