Ejemplo n.º 1
0
        public void Navigate(Item item)
        {
            Application.UIDeferredInvokeIfRequired(() =>
                {
                    Logger.ReportVerbose("Navigating to {0} item type {1}", item.Name, item.GetType());
                    currentContextMenu = null; //any sort of navigation should reset our context menu so it will properly re-evaluate on next ref

                    if (item.BaseItem is Person)
                    {
                        NavigateToActor(item);
                        return;
                    }


                    if (item.BaseItem is Show)
                    {
                        if ((item.HasDataForDetailPage) ||
                            this.Config.AlwaysShowDetailsPage)
                        {
                            item.NavigatingInto();
                            if (Config.EnableThemeBackgrounds && (currentPlaybackController == null || !currentPlaybackController.IsPlaying))
                            {
                                BackdropController.PlayAsync(item.BaseItem);
                            }
                            // go to details screen 
                            var properties = new Dictionary<string, object>();
                            properties["Application"] = this;
                            properties["Item"] = item;
                            properties["ThemeConfig"] = CurrentTheme.Config;
                            OpenMCMLPage(item.BaseItem.CustomUI ?? CurrentTheme.DetailPage, properties);

                            return;
                        }
                    }


                    var folder = item as MediaBrowser.Library.FolderModel;
                    if (folder != null)
                    {
                        if (!Config.Instance.RememberIndexing)
                        {
                            folder.DisplayPrefs.IndexBy = MediaBrowser.Library.Localization.LocalizedStrings.Instance.GetString("NoneDispPref");
                        }
                        if (Config.Instance.AutoEnterSingleDirs && (folder.Folder.Children.Count == 1))
                        {
                            if (folder.IsRoot) //special breadcrumb if we are going from a single item root
                                session.AddBreadcrumb("DIRECTENTRY");
                            else
                                session.AddBreadcrumb(folder.Name);
                            folder.NavigatingInto(); //make sure we validate
                            CurrentFolder = folder;
                            Navigate(folder.Children[0]);
                        }
                        else
                        {
                            OpenFolderPage(folder);
                        }
                    }
                    else
                    {
                        Resume(item);
                    }
                }
            );
        }
        public void Navigate(Item item)
        {
            currentContextMenu = null; //any sort of navigation should reset our context menu so it will properly re-evaluate on next ref
            
            if (item.BaseItem is Person)
            {
                NavigateToActor(item);
                return;
            }

            if (item.BaseItem is Show)
            {
                if ((item.HasDataForDetailPage) ||
                    this.Config.AlwaysShowDetailsPage)
                {
                    item.NavigatingInto();
                    // go to details screen 
                    var properties = new Dictionary<string, object>();
                    properties["Application"] = this;
                    properties["Item"] = item;
                    properties["ThemeConfig"] = CurrentTheme.Config;
                    
                    session.GoToPage(item.BaseItem.CustomUI ?? CurrentTheme.DetailPage, properties);

                    return;
                }
            }


            var folder = item as MediaBrowser.Library.FolderModel;
            if (folder != null)
            {
                if (!Config.Instance.RememberIndexing)
                {
                    folder.DisplayPrefs.IndexBy = MediaBrowser.Library.Localization.LocalizedStrings.Instance.GetString("NoneDispPref");
                }
                if (Config.Instance.AutoEnterSingleDirs && (folder.Folder.Children.Count == 1))
                {
                    if (folder.IsRoot) //special breadcrumb if we are going from a single item root
                        session.AddBreadcrumb("DIRECTENTRY");
                    else
                        session.AddBreadcrumb(folder.Name);
                    folder.NavigatingInto(); //make sure we validate
                    Navigate(folder.Children[0]);
                }
                else
                {
                    OpenFolderPage(folder);
                }
            }
            else
            {
                Resume(item);
            }
        }