private void CloseTab(TabViewModel tabViewModel) { tabViewModel.HandleTabClosing(); switch (tabViewModel) { case SearchTabViewModel searchTabViewModel: searchTabViewModel.NonFictionSearchComplete -= SearchTabNonFictionSearchComplete; searchTabViewModel.FictionSearchComplete -= SearchTabFictionSearchComplete; searchTabViewModel.SciMagSearchComplete -= SearchTabSciMagSearchComplete; break; case NonFictionSearchResultsTabViewModel nonFictionSearchResultsTabViewModel: nonFictionSearchResultsTabViewModel.OpenNonFictionDetailsRequested -= OpenNonFictionDetailsRequested; break; case FictionSearchResultsTabViewModel fictionSearchResultsTabViewModel: fictionSearchResultsTabViewModel.OpenFictionDetailsRequested -= OpenFictionDetailsRequested; break; case SciMagSearchResultsTabViewModel sciMagSearchResultsTabViewModel: sciMagSearchResultsTabViewModel.OpenSciMagDetailsRequested -= OpenSciMagDetailsRequested; break; case NonFictionDetailsTabViewModel nonFictionDetailsTabViewModel: nonFictionDetailsTabViewModel.SelectDownloadRequested -= SelectDownloadRequested; nonFictionDetailsTabViewModel.CloseTabRequested -= NonFictionDetailsCloseTabRequested; break; case FictionDetailsTabViewModel fictionDetailsTabViewModel: fictionDetailsTabViewModel.SelectDownloadRequested -= SelectDownloadRequested; fictionDetailsTabViewModel.CloseTabRequested -= FictionDetailsCloseTabRequested; break; case SciMagDetailsTabViewModel sciMagDetailsTabViewModel: sciMagDetailsTabViewModel.SelectDownloadRequested -= SelectDownloadRequested; sciMagDetailsTabViewModel.CloseTabRequested -= SciMagDetailsCloseTabRequested; break; } int removingTabIndex = TabViewModels.IndexOf(tabViewModel); TabViewModels.Remove(tabViewModel); NotifyPropertyChanged(nameof(IsDefaultSearchTabVisible)); NotifyPropertyChanged(nameof(AreTabsVisible)); NotifyPropertyChanged(nameof(IsNewTabButtonVisible)); if (!TabViewModels.Any()) { SelectedTabViewModel = null; DefaultSearchTabViewModel.Refresh(setFocus: true); } else { int newSelectedTabIndex = TabViewModels.Count > removingTabIndex ? removingTabIndex : TabViewModels.Count - 1; SelectedTabViewModel = TabViewModels[newSelectedTabIndex]; } }
private void ShowSearchResults(SearchTabViewModel searchTabViewModel, TabViewModel searchResultsTabViewModel) { if (searchTabViewModel != DefaultSearchTabViewModel) { searchTabViewModel.NonFictionSearchComplete -= SearchTabNonFictionSearchComplete; searchTabViewModel.FictionSearchComplete -= SearchTabFictionSearchComplete; searchTabViewModel.SciMagSearchComplete -= SearchTabSciMagSearchComplete; TabViewModels.Remove(searchTabViewModel); } TabViewModels.Add(searchResultsTabViewModel); SelectedTabViewModel = searchResultsTabViewModel; NotifyPropertyChanged(nameof(IsDefaultSearchTabVisible)); NotifyPropertyChanged(nameof(AreTabsVisible)); NotifyPropertyChanged(nameof(IsNewTabButtonVisible)); }
public async Task LoadAsync() { var instance = LoginUserInfo.Instance; var viewSubscriptions = instance.User.ViewSubscriptions; var viewMovies = instance.User.ViewMovies; var viewModelsToAdd = new List <TabViewModelBase>(); var viewModelsToRemove = new List <TabViewModelBase>(); foreach (var tabViewModel in TabViewModels) { if (tabViewModel.Title == Constants.Welcome) { viewModelsToAdd.Add(tabViewModel); } else if (tabViewModel.Title == Constants.UserManagements) { if (instance.Login.IsAdmin) { viewModelsToAdd.Add(tabViewModel); } else { viewModelsToRemove.Add(tabViewModel); } } else if (tabViewModel.Title == Constants.Subscriptions) { if (viewSubscriptions) { viewModelsToAdd.Add(tabViewModel); } else { viewModelsToRemove.Add(tabViewModel); } } else if (tabViewModel.Title == Constants.Movies) { if (viewMovies) { viewModelsToAdd.Add(tabViewModel); } else { viewModelsToRemove.Add(tabViewModel); } } } foreach (var viewModel in viewModelsToRemove) { TabViewModels.Remove(viewModel); } foreach (var viewModel in viewModelsToAdd) { await viewModel.LoadAsync(); } LoginUserName = instance.User.UserName; }