示例#1
0
 private void BtnDeleteTitle_Click(object sender, EventArgs e)
 {
     if (m_currentTitle == null)
     {
         return;
     }
     if (MessageBox.Show("Do you want to delete " + m_currentTitle.TitleName + "?", "Confirm Title Removal", MessageBoxButtons.OKCancel) == DialogResult.OK)
     {
         try
         {
             if (m_images != null)
             {
                 foreach (var img in m_images)
                 {
                     MediaSamplePersistence.RemoveSample(img);
                 }
             }
             TitlePersistence.DeleteTitle(m_currentTitle.Id);
             TVTitles.RemoveObject(m_currentTitle);
             DisplayTitleInfo(null);
         }
         catch (Exception err)
         {
             MessageBox.Show(err.Message, "Error Deleting Title");
         }
     }
 }
示例#2
0
        private void Set()
        {
            if (m_currentTitle == null)
            {
                return;
            }

            m_currentTitle.DateModifiedUtc = GeneralPersistense.GetTimestamp();
            m_currentTitle.TitleName       = TbxTitleName.Text;
            m_currentTitle.Kind            = CbxKind.GetSelectedKey <TitleKind>();
            m_currentTitle.Year            = TbxReleaseYear.Text.To <int>(0);
            m_currentTitle.Description     = TbxDescription.Text;
            m_currentTitle.ImdbId          = TbxImdbId.Text;
            m_currentTitle.Season          = TbxSeason.Text.To <int>(0);
            m_currentTitle.Disk            = TbxDisk.Text.To <int>(0);
            m_currentTitle.EpisodeOrTrack  = TbxEpisode.Text.To <int>(0);

            GeneralPersistense.Upsert(m_currentTitle);
            SetControlsFromDirtyState(false);


            //HACK: TVTitles.Sort doesn't work
            if (!m_currentTitle.ParentTitleId.HasValue)
            {
                var roots = new List <Title>(TVTitles.Roots.Cast <Title>());
                roots.Sort();
                TVTitles.Roots = roots;
                TVTitles.EnsureModelVisible(m_currentTitle);
            }
        }
示例#3
0
        private void Reload()
        {
            var kind = GetResourceKind();

            TVTitles.ClearObjects();
            CbxKind.Items.Clear();

            BtnSave.Enabled = false;

            switch (kind)
            {
            case ResourceKind.Audio:
                TVTitles.Roots = new SortableTitles(TitlePersistence.ListRootAudio());
                CbxKind.SetupComboBox <TitleKind>("Audio_");
                break;

            case ResourceKind.Video:
                TVTitles.Roots = new SortableTitles(TitlePersistence.ListRootVideo());
                CbxKind.SetupComboBox <TitleKind>("Video_");
                break;
            }

            m_currentTitle = null;
            m_images       = null;
            m_imageIndex   = 0;
            SetImageNavigationControls();
            PbxImage.Image = null;
        }
示例#4
0
        private void Refilter()
        {
            TVTitles.BeginUpdate();
            var mf = TVTitles.ModelFilter;

            TVTitles.ModelFilter = null;
            TVTitles.ModelFilter = mf;
            TVTitles.EndUpdate();
        }
示例#5
0
        private void BtnNew_Click(object sender, EventArgs e)
        {
            TitleKind kind;

            switch (GetResourceKind())
            {
            case ResourceKind.Audio: kind = TitleKind.AlbumArtist; break;

            case ResourceKind.Video: kind = TitleKind.Title; break;

            default: return;
            }

            Title newTitle = null;

            foreach (Title item in TVTitles.Objects)
            {
                if (item.Id < 1)
                {
                    //Unsaved new item already there
                    newTitle = item;
                }
            }
            if (newTitle == null)
            {
                newTitle = new Title()
                {
                    TitleName = "New", Kind = kind, DateAddedUtc = GeneralPersistense.GetTimestamp()
                };
                TVTitles.AddObject(newTitle);
            }
            TVTitles.SelectedObject = newTitle;
            DisplayTitleInfo(newTitle);
            TVTitles.EnsureModelVisible(newTitle);
            TbxTitleName.Focus();
        }
示例#6
0
        public MainForm()
        {
            InitializeComponent();
            LVLocations.VirtualMode = false;
            LVRatings.VirtualMode   = false;

            AppDomain.CurrentDomain.UnhandledException += (o, e) => {
                var    ex  = e.ExceptionObject as Exception;
                string msg = ex == null ? "Unhandled error" : ex.Message;
                MessageBox.Show(msg, "Application Error");
            };
            Application.ThreadException += (o, e) => {
                string msg = e.Exception == null ? "Unhandled error (thread)" : e.Exception.Message;
                MessageBox.Show(msg, "Application Error");
            };

            TVTitles.CanExpandGetter = (o) => {
                var t = o as Title;
                if (t == null)
                {
                    return(false);
                }
                return(t.Kind != TitleKind.Episode && t.Kind != TitleKind.Track && t.Kind != TitleKind.Title);
            };

            TVTitles.ChildrenGetter = (o) => {
                var t = o as Title;
                if (t == null)
                {
                    return(null);
                }
                return(new SortableTitles(TitlePersistence.ListTitlesByParent(t.Id)));
            };

            OlvColumnName.ImageGetter = (o) => {
                var t = o as Title;
                if (t == null)
                {
                    return(-1);
                }
                return((int)t.Kind);
            };

            OlvBtnPlay.AspectGetter = (o) => {
                var l = o as LocationForDisplay;
                if (l != null && l.LocationKind != LocationBaseKind.Shelf)
                {
                    return("Play");
                }
                return(null);
            };

            var sink = (BrightIdeasSoftware.SimpleDropSink)TVTitles.DropSink;

            sink.AcceptExternal      = false;
            sink.CanDropBetween      = false;
            sink.CanDropOnBackground = false;
            sink.CanDropOnItem       = true;
            sink.CanDropOnSubItem    = true;

            sink.CanDrop += (sender, e) => {
                e.Handled = true;
                e.Effect  = DragDropEffects.None;
                var models = GetModelsFromDropEvent(e);

                if (CanDrop(models.Item1, models.Item2))
                {
                    e.Effect = DragDropEffects.Move;
                }
            };

            sink.Dropped += (sender, e) => {
                var models = GetModelsFromDropEvent(e);
                if (models.Item1 == null || models.Item2 == null)
                {
                    return;
                }
                SetSeriesHierarchy(models.Item1, models.Item2);
                GeneralPersistense.Upsert(models.Item1);
                e.Effect = DragDropEffects.Move;
                TVTitles.RemoveObject(models.Item1);
                TVTitles.RefreshObject(models.Item2);
            };

            TVTitles.ModelFilter = new ModelFilter((m) => {
                var t = m as Title;
                if (t == null)
                {
                    return(false);
                }

                string filter = TbxSearch.Text.Trim().ToLower();
                if (m_titleFilter.Count > 0)
                {
                    if (m_titleFilter.Contains(t.Id))
                    {
                        if (filter.Length == 0)
                        {
                            return(true);
                        }
                        return(t.TitleName.ToLower().Contains(filter));
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (filter.Length == 0)
                    {
                        return(true);
                    }
                    return(t.TitleName.ToLower().Contains(filter));
                }
            });

            olvColumnRatingValue.AspectPutter = (object o, object val) => {
                var r = o as TitleRatingWithName;
                if (r != null)
                {
                    r.RatingValue = Convert.ToSingle(val);
                }
            };



            CbxDevices.Items.AddRange(DevicePersistense.ListForPalyback().ToArray());
            if (CbxDevices.Items.Count > 0)
            {
                CbxDevices.SelectedIndex = 0;
            }

            m_imageIndex = 0;
        }