Exemplo n.º 1
0
        private void SetSeriesHierarchy(Title item, Title parent)
        {
            long parentId = parent.Id;

            switch (parent.Kind)
            {
            case TitleKind.Season:
                if (item.Kind == TitleKind.Title)
                {
                    item.Kind = TitleKind.Disk;
                }
                if (parent.Season > 0)
                {
                    item.Season = parent.Season;
                }
                break;

            case TitleKind.Series:
                if (item.Kind != TitleKind.Season && item.Season > 0)
                {
                    long saeasonId = -1;
                    foreach (var title in TitlePersistence.ListTitlesByParent(parentId))
                    {
                        if (title.Kind == TitleKind.Season && title.Season == item.Season)
                        {
                            saeasonId = title.Id;
                            break;
                        }
                    }
                    if (saeasonId < 0)
                    {
                        saeasonId = TitlePersistence.AddTitle(parent.TitleName + " Season " + item.Season.ToString(), TitleKind.Season, item.Season, 0, 0, parentId).Id;
                    }
                    parentId = saeasonId;
                }
                break;
            }
            item.ParentTitleId = parentId;
        }
Exemplo n.º 2
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;
        }