/// <summary> /// Enable controls after something is done loading/processing. /// </summary> private void EnableControls() { LoadingLabel.Visible = false; ChannelsListView.EndUpdate(); ChannelsListView.Enabled = true; SearchPanel.Enabled = true; }
private void ChannelsListView_MouseDoubleClick(object sender, MouseEventArgs e) { ListViewItem clickedItem = ChannelsListView.GetItemAt(e.X, e.Y); if (clickedItem != null) { Database.Types.Channel channel = (Database.Types.Channel)clickedItem.Tag; if (MessageBox.Show($"Really delete {channel.Title}?{Environment.NewLine}{Environment.NewLine}You will no longer receive notifications and the videos from{Environment.NewLine}this channel will be deleted from the database.", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { try { IEnumerable <Database.Types.Video> channelVideos = Database.Channels.GetAllVideos(channel.ID); int channelVideosTotal = channelVideos.Count(); foreach (Database.Types.Video video in channelVideos) { Database.Videos.Delete(video); Database.ImageFile.Delete(video.ID, ImageType.VideoThumbnail); } Database.Channels.Delete(channel); Database.ImageFile.Delete(channel.ID, ImageType.ChannelIcon); AddAllChannels(); FormsManager.StaticMainForm.AddAllChannels(); LoggingManager.Log.Info($"Deleted channel: '{channel.Title}' ({channel.ID})."); MessageBox.Show($"{channel.Title} was deleted and {channelVideosTotal} videos were removed from the database.", "Channel Deleted", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { LoggingManager.Log.Error(ex, $"Failed to delete a channel. Channel: '{channel.Title}' ({channel.ID})."); } } } }
private void ChannelsListView_ItemSelected(object sender, SelectedItemChangedEventArgs e) { if (!_viewModel.DoNotScrollToChannel) { ChannelsListView.ScrollTo(_viewModel.SelectedChannel, ScrollToPosition.MakeVisible, false); } _viewModel.DoNotScrollToChannel = false; }
/// <summary> /// Add all channels to <see cref="ChannelsListView"/> from <see cref="Channels.GetAll()"/>. /// Clears all existing channels already in the listview (if any). /// </summary> private void AddAllChannels() { ChannelsListView.BeginUpdate(); ChannelsListView.Items.Clear(); foreach (Database.Types.Channel channel in Database.Channels.GetAll()) { AddChannelToListView(channel); } ChannelsListView.EndUpdate(); }
/// <summary> /// Disable controls before something is loading/processing. /// </summary> /// <param name="loadingMessage">Message to show in <see cref="LoadingLabel.Text"/></param> /// <param name="clearChannelsListView">Clear all items in <see cref="ChannelsListView.Items"/></param> private void DisableControls(string loadingMessage, bool clearChannelsListView) { SearchPanel.Enabled = false; if (clearChannelsListView) { ChannelsListView.Items.Clear(); ChannelsImageList.Images.Clear(); } ChannelsListView.BeginUpdate(); ChannelsListView.Enabled = false; LoadingLabel.Text = loadingMessage; LoadingLabel.Visible = true; Application.DoEvents(); }
private void ChannelsListView_MouseDoubleClick(object sender, MouseEventArgs e) { ListViewItem clickedItem = ChannelsListView.GetItemAt(e.X, e.Y); if (clickedItem != null) { Database.Types.Channel clickedChannel = (Database.Types.Channel)clickedItem.Tag; if (Database.Channels.Exists(clickedChannel.ID)) { MessageBox.Show($"{clickedChannel.Title} ({clickedChannel.ID}) already exists.", "Channel Exists", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } if (MessageBox.Show($"Add {clickedChannel.Title}?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { try { DisableControls("Processing...", false); Database.Types.Channel channel = new YouTube.Channel().Info(clickedChannel.ID); Database.Channels.Upsert(channel); Database.ImageFile.Insert(channel.ThumbnailURL, channel.ID, ImageType.ChannelIcon); List <Database.Types.Video> videos = new YouTube.Channel().RecentVideos(channel.ID); foreach (Database.Types.Video video in videos) { video.WatchStatus = SettingsManager.Configuration.NewChannelDefaultVideoStatus; Database.Videos.Insert(video); Database.ImageFile.Insert(video.ThumbnailURL, video.ID, ImageType.VideoThumbnail); } FormsManager.StaticMainForm.AddAllChannels(); LoggingManager.Log.Info($"Added channel '{channel.ID}'."); EnableControls(); MessageBox.Show($"'{channel.Title}' was added along with {videos.Count} new videos.", "Channel Added", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { LoggingManager.Log.Error(ex, $"Failed to add channel '{clickedChannel.ID}'."); EnableControls(); } } } }