Ejemplo n.º 1
0
 /// <summary>
 /// Enable controls after something is done loading/processing.
 /// </summary>
 private void EnableControls()
 {
     LoadingLabel.Visible = false;
     ChannelsListView.EndUpdate();
     ChannelsListView.Enabled = true;
     SearchPanel.Enabled      = true;
 }
Ejemplo n.º 2
0
        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}).");
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void ChannelsListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            if (!_viewModel.DoNotScrollToChannel)
            {
                ChannelsListView.ScrollTo(_viewModel.SelectedChannel, ScrollToPosition.MakeVisible, false);
            }

            _viewModel.DoNotScrollToChannel = false;
        }
Ejemplo n.º 4
0
        /// <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();
        }
Ejemplo n.º 5
0
 /// <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();
 }
Ejemplo n.º 6
0
        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();
                    }
                }
            }
        }