private void mpButtonGenreIsMovie_Click(object sender, EventArgs e)
        {
            int     selectedGenreId = listViewGuideGenres.SelectedItems[0].Index;
            MpGenre selectedMpGenre = ((List <MpGenre>)_mpGenres).Find(x => x.Id == selectedGenreId);

            // Set the only selected mp genre as the movie genre.  Toggle current value.
            bool oldValue = selectedMpGenre.IsMovie;

            foreach (var genre in _mpGenres)
            {
                genre.IsMovie = false;
            }
            selectedMpGenre.IsMovie = !oldValue;

            for (int i = 0; i < listViewGuideGenres.Items.Count; i++)
            {
                if (listViewGuideGenres.Items[i] != null)
                {
                    listViewGuideGenres.Items[i].SubItems[1].Text = "";
                }
            }

            // Set the selected genre as the movie genre if it's been selected.
            if (selectedMpGenre.IsMovie)
            {
                listViewGuideGenres.Items[selectedMpGenre.Id].SubItems[1].Text = "x";
            }
        }
        protected void MapProgramGenres()
        {
            // Find the selected mp genre.
            int     selectedGenreId = listViewGuideGenres.SelectedItems[0].Index;
            MpGenre selectedMpGenre = ((List <MpGenre>)_mpGenres).Find(x => x.Id == selectedGenreId);

            listViewMappedGenres.BeginUpdate();
            listViewProgramGenres.BeginUpdate();

            foreach (ListViewItem programGenre in listViewProgramGenres.SelectedItems)
            {
                listViewProgramGenres.Items.Remove(programGenre);

                // Provide an indication that the mapped program genre may be obsolete.  There is no way to know for sure.
                if (!_allProgramGenres.Contains(programGenre.Text))
                {
                    listViewMappedGenres.Items.Add(programGenre.Text, 0);
                }
                else
                {
                    listViewMappedGenres.Items.Add(programGenre.Text);
                }

                // Update the genre map.
                selectedMpGenre.MapToProgramGenre(programGenre.Text);
            }

            listViewMappedGenres.EndUpdate();
            listViewProgramGenres.EndUpdate();
        }
        private void PopulateMappedGenreList()
        {
            listViewMappedGenres.BeginUpdate();
            listViewMappedGenres.Items.Clear();

            // Find the selected mp genre.
            int     selectedGenreId = listViewGuideGenres.SelectedItems[0].Index;
            MpGenre selectedMpGenre = _mpGenres.Find(x => x.Id == selectedGenreId);

            // Populate the list of mapped genres.
            foreach (var mappedProgramGenre in selectedMpGenre.MappedProgramGenres)
            {
                // Provide an indication that the mapped program genre may be obsolete.  There is no way to know for sure.
                if (!_allProgramGenres.Contains(mappedProgramGenre))
                {
                    listViewMappedGenres.Items.Add(mappedProgramGenre, 0);
                }
                else
                {
                    listViewMappedGenres.Items.Add(mappedProgramGenre);
                }
            }

            listViewMappedGenres.EndUpdate();
        }
        private void mpButtonEnableGenre_Click(object sender, EventArgs e)
        {
            // Toggle the state.
            int     selectedGenreId = listViewGuideGenres.SelectedItems[0].Index;
            MpGenre selectedMpGenre = ((List <MpGenre>)_mpGenres).Find(x => x.Id == selectedGenreId);

            selectedMpGenre.Enabled = !selectedMpGenre.Enabled;

            if ("".Equals(listViewGuideGenres.Items[selectedGenreId].SubItems[2].Text))
            {
                listViewGuideGenres.Items[selectedGenreId].SubItems[2].Text = "x";
            }
            else
            {
                listViewGuideGenres.Items[selectedGenreId].SubItems[2].Text = "";
            }
        }
        private void listViewGuideGenres_AfterLabelEdit(object sender, LabelEditEventArgs e)
        {
            // Determine if label is changed by checking for null.
            if (e.Label == null)
            {
                return;
            }

            // Limit the number of genres that a user may input.
            if (e.Item > _mpGenres.Count)
            {
                return;
            }

            // Check for and don't allow empty genre names.
            if ("".Equals(e.Label))
            {
                e.CancelEdit = true;
                MessageBox.Show("Empty genre name not allowed.", "EPG Genre Map", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // Find the edited mp genre.
            // Find the selected mp genre.
            int     selectedGenreId = listViewGuideGenres.SelectedItems[0].Index;
            MpGenre editedMpGenre   = ((List <MpGenre>)_mpGenres).Find(x => x.Id == selectedGenreId);

            // Check for and disallow duplicate genre names.
            MpGenre testMpGenre = ((List <MpGenre>)_mpGenres).Find(x => x.Name == e.Label);

            if (testMpGenre != null && testMpGenre.Id != editedMpGenre.Id)
            {
                if (e.Label.Equals(testMpGenre.Name))
                {
                    e.CancelEdit = true;
                    MessageBox.Show("Duplicate genre name not allowed.", "EPG Genre Map", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
            }

            // Change the name of the MP genre.
            editedMpGenre.Name = e.Label;
        }
        protected void UnmapProgramGenres()
        {
            // Find the selected mp genre.
            int     selectedGenreId = listViewGuideGenres.SelectedItems[0].Index;
            MpGenre selectedMpGenre = ((List <MpGenre>)_mpGenres).Find(x => x.Id == selectedGenreId);

            listViewMappedGenres.BeginUpdate();
            listViewProgramGenres.BeginUpdate();

            foreach (ListViewItem mappedGenre in listViewMappedGenres.SelectedItems)
            {
                listViewMappedGenres.Items.Remove(mappedGenre);
                listViewProgramGenres.Items.Add(mappedGenre);

                // Update the genre map.
                selectedMpGenre.UnmapProgramGenre(mappedGenre.Text);
            }

            listViewMappedGenres.EndUpdate();
            listViewProgramGenres.EndUpdate();
        }
Beispiel #7
0
        protected void RenderGenreKey()
        {
            GUIImage     imgGenreColor  = (GUIImage)GetControl((int)Controls.GENRE_COLOR_KEY_PAIR);
            GUIFadeLabel labelGenreName = (GUIFadeLabel)GetControl((int)Controls.GENRE_COLOR_KEY_PAIR + 1);

            MpGenre genreObj = _mpGenres.Find(x => x.Enabled == true);

            // Do not render the key if the template controls are not present or there are no enabled mp genres.
            if (imgGenreColor == null || labelGenreName == null || genreObj == null)
            {
                return;
            }

            // Display the genre key.
            var genreKeys = _genreColorsOnLater.Keys.ToList();

            genreKeys.Sort();
            int xpos, i = 0;
            int xoffset = 0;

            foreach (var genreName in genreKeys)
            {
                // If the genre is not enabled then skip it.  This can occur if the user desires to have less than the maximum number of MP genres available.
                genreObj = ((List <MpGenre>)_mpGenres).Find(x => x.Name.Equals(genreName));
                if (!genreObj.Enabled)
                {
                    continue;
                }

                xpos = imgGenreColor.XPosition + xoffset;

                GUIImage img = GetControl((int)Controls.GENRE_COLOR_KEY_PAIR + (2 * i)) as GUIImage;
                if (img == null)
                {
                    img = new GUIImage(GetID, (int)Controls.GENRE_COLOR_KEY_PAIR + (2 * i), xpos, imgGenreColor.YPosition, imgGenreColor.Width,
                                       imgGenreColor.Height, imgGenreColor.FileName, 0x0);
                    img.AllocResources();
                    GUIControl cntl = (GUIControl)img;
                    Add(ref cntl);
                }
                img.IsVisible       = true;
                img.ColourDiffuse   = _genreColorsOnLater[genreName];
                img.OverlayFileName = imgGenreColor.OverlayFileName;
                img.SetPosition(xpos, imgGenreColor.YPosition);
                img.DoUpdate();

                GUIFadeLabel label = GetControl(((int)Controls.GENRE_COLOR_KEY_PAIR + 1) + (2 * i)) as GUIFadeLabel;
                if (label == null)
                {
                    label = new GUIFadeLabel(GetID, ((int)Controls.GENRE_COLOR_KEY_PAIR + 1) + (2 * i), 0, 0, labelGenreName.Width,
                                             labelGenreName.Height, labelGenreName.FontName,
                                             labelGenreName.TextColor, labelGenreName.TextAlignment, labelGenreName.TextVAlignment,
                                             labelGenreName.ShadowAngle, labelGenreName.ShadowDistance, labelGenreName.ShadowColor,
                                             string.Empty);

                    label.AllocResources();
                    GUIControl cntl = (GUIControl)label;
                    this.Add(ref cntl);
                }
                label.Label = genreName;
                label.SetPosition(xpos + imgGenreColor.Width + 10, labelGenreName.YPosition);
                label.ScrollStartDelay = labelGenreName.ScrollStartDelay;
                label.IsVisible        = true;

                // Compute position of the next key.
                int w = label.Width;
                if (label.TextWidth < label.Width)
                {
                    w = label.TextWidth;
                }

                xoffset += (int)(imgGenreColor.Width * 2.3 + w);
                i++;
            }
        }