Ejemplo n.º 1
0
        /// <summary>
        ///     <para>Обработчик правого клика по панелям, задается при их инициализации</para>
        ///     <para>Переносит данные из нажатой панели в <see cref="RSSItemDescriptionPanel" />, перекрашивает панели</para>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RightClickHandler(object sender, MouseEventArgs e)
        {
            var clickedPanel = sender as RSSItemPanel;

            if (!clickedPanel.Equals(_lastClickedPanel) && e.Button == MouseButtons.Right)
            {
                rssItemDescriptionPanel.SetContent(clickedPanel.Item);

                clickedPanel.Highlighted = true;
                if (_lastClickedPanel != null)
                {
                    _lastClickedPanel.Highlighted = false;
                }
                _lastClickedPanel = clickedPanel;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Загрузка и обновление списка RSS-элементов
        /// </summary>
        private void LoadData()
        {
            panelList.Controls.Clear();
            if (config.Feeds?.Count > 0)
            {
                // Анимация загрузки
                pictureBoxLoading.Visible = true;


                var rightClickHandler = new MouseEventHandler(RightClickHandler);

                // Данные грузятся в отдельном потоке
                var itemsDTOTask = Task.Run(() => loadRSS(config.Feeds));

                var itemsDTO = itemsDTOTask.Result;
                //К огда данные загрузились, выключаем анимацию загрузки
                pictureBoxLoading.Visible = false;


                if (itemsDTO?.Count > 0)
                {
                    buttonReload.Visible = false;

                    // Добавляем панели на каждый элемент данных
                    var y = 0;
                    foreach (var item in itemsDTO.OrderByDescending(i => i.PubDate))
                    {
                        var itemPanel = new RSSItemPanel(item, rightClickHandler);
                        itemPanel.Location = new Point(0, y * (itemPanel.Height + 2));
                        panelList.Controls.Add(itemPanel);
                        y++;
                    }
                }
                else
                {
                    buttonReload.Visible = true;
                }
            }
            else
            {
                buttonReload.Visible      = true;
                pictureBoxLoading.Visible = false;
                MessageBox.Show("Добавьте ленты в настройках", "Отсутствуют ленты для загрузки");
            }
        }