コード例 #1
0
        private async Task SelectMenuAsync(SearchButtonViewModel sbm)
        {
            Log($"Selected menu {sbm?.SearchTitle}");

            await Task.Run(() =>
            {
                this.SelectMenu(sbm);
            });
        }
コード例 #2
0
        /// <summary>
        /// Select a menu button
        /// </summary>
        /// <returns></returns>
        private void SelectMenu(SearchButtonViewModel searchButtonViewModel)
        {
            if (IsBusy)
            {
                Log($"Searching busy..."); return;
            }

            var menuComponent = searchButtonViewModel.MenuComponent;

            if (menuComponent.GetType() == typeof(Menu))
            {
                Log("Menu Selected", Category.Debug);

                //Check if has children and return if has children
                if (menuComponent.GetChild(0) != null)
                {
                    this.UpdateSearchButtons(menuComponent);
                    return;
                }
            }

            //Treat as MenuItem
            var menuName = menuComponent?.Name;

            //Return back if menu is Back or IsBusy
            if (menuName == "Back")
            {
                if (menuComponent.Parent.Name == "Root")
                {
                    this.UpdateSearchButtons(this.mCreator._rootMenu);
                }
                else
                {
                    this.UpdateSearchButtons(menuComponent.Parent);
                }
                return;
            }


            NavigationParameters navParams = null;
            string viewName = string.Empty;

            if (menuComponent?.ExtraSearchType != ExtraSearchType.None)
            {
                IsBusy = true;
                Log($"Navigating SearchedSongs with extra search type");
                navParams = new NavigationParameters();
                navParams.Add("extra_search", menuComponent.ExtraSearchType);
                viewName = ViewNames.SearchedSongsView;
            }
            else if (menuComponent?.SearchString == "SEARCH")
            {
                switch (menuName)
                {
                case "A-Z":
                    viewName = ViewNames.AToZSearchView;
                    break;

                case "SEARCH":
                    viewName = ViewNames.SearchView;
                    break;

                case "SONG SEARCH":
                    viewName = ViewNames.InstantSearch;
                    break;

                default:
                    break;
                }
            }
            else if (menuName == "DJ Horsify" || menuName == "Filter" || menuName == "Database Stats")
            {
                if (menuName == "DJ Horsify")
                {
                    viewName = ViewNames.DjHorsifyView;
                }
                else if (menuName == "Filter")
                {
                    viewName = ViewNames.FilterCreatorView;
                }
            }
            else
            {
                navParams = NavigationHelper
                            .CreateSearchFilterNavigation(menuComponent.SearchType,
                                                          menuComponent.SearchString != null ? menuComponent.SearchString : menuComponent.Name);

                viewName = ViewNames.SearchedSongsView;
            }

            Log($"Navigating{viewName}");
            if (navParams != null)
            {
                Log($"View params available, setting sidebar busy.");
                IsBusy = true;
            }

            //Request nav on the main thread
            Application.Current.Dispatcher.Invoke(() =>
            {
                _regionManager.RequestNavigate(Regions.ContentRegion, viewName, navParams);
            });
        }