private object GetAppropriateArgsForPage(PageIndex page) { switch (page) { case PageIndex.PageSeasonal: return AnimeListPageNavigationArgs.Seasonal; case PageIndex.PageMangaList: return AnimeListPageNavigationArgs.Manga; case PageIndex.PageMangaSearch: return new SearchPageNavigationArgs { Anime = false }; case PageIndex.PageSearch: return new SearchPageNavigationArgs(); case PageIndex.PageTopAnime: return AnimeListPageNavigationArgs.TopAnime(TopAnimeType.General); case PageIndex.PageTopManga: return AnimeListPageNavigationArgs.TopManga; case PageIndex.PageArticles: return MalArticlesPageNavigationArgs.Articles; case PageIndex.PageNews: return MalArticlesPageNavigationArgs.News; case PageIndex.PageProfile: return new ProfilePageNavigationArgs { TargetUser = Credentials.UserName }; case PageIndex.PageWallpapers: return new WallpaperPageNavigationArgs(); default: return null; } }
private void AccessTokenWizard_Load(object sender, EventArgs e) { // Initialize objects. Pages = new List <Panel> { panel_Page00, panel_Page01, panel_Page02, panel_Page03, panel_Page04, panel_Page05, panel_Page06, panel_Page07, panel_Page08, panel_Page09, panel_Page10, panel_Page11, panel_Page12, panel_Page13, panel_Page14 }; previousPages = new List <PageIndex>(); currentPageIndex = PageIndex.None; // Initialize UI. Pages.ForEach(p => p.Enabled = false); button_Back.BringToFront(); button_Next.BringToFront(); button_Cancel.BringToFront(); // Go to the first page. ShowPage(PageIndex.Page00_PortalSelection); button_Back.Enabled = false; foreach (string item in Util.ResourceNames) { comboBox_Page03_Resource.Items.Add(item); comboBox_Page04_Resource.Items.Add(item); comboBox_Page05_Resource.Items.Add(item); comboBox_Page08_Resource.Items.Add(item); comboBox_Page09_Resource.Items.Add(item); } comboBox_Page03_Resource.SelectedIndex = 1; comboBox_Page04_Resource.SelectedIndex = 1; comboBox_Page05_Resource.SelectedIndex = 1; comboBox_Page08_Resource.SelectedIndex = 1; comboBox_Page09_Resource.SelectedIndex = 1; Size = new Size(433, 286); CenterToParent(); }
private HtmlAnchor GetMainButton(PageIndex page) { if (page.Equals(PageIndex.Home)) { return(Desktop_Home); } if (page.Equals(PageIndex.Photos)) { return(Desktop_Photos); } if (page.Equals(PageIndex.Videos)) { return(Desktop_Videos); } if (page.Equals(PageIndex.Memes)) { return(Desktop_Memes); } if (page.Equals(PageIndex.Bios)) { return(Selected_Page); } if (page.Equals(PageIndex.Krakow)) { return(Selected_Page); } if (page.Equals(PageIndex.Portugal)) { return(Selected_Page); } if (page.Equals(PageIndex.Amsterdam)) { return(Selected_Page); } if (page.Equals(PageIndex.EditMedia)) { return(Selected_Page); } if (page.Equals(PageIndex.Tag)) { return(Selected_Page); } if (page.Equals(PageIndex.MyUploads)) { return(Selected_Page); } if (page.Equals(PageIndex.View)) { return(Selected_Page); } if (page.Equals(PageIndex.Search)) { return(Selected_Page); } return(null); }
private void ReName_Click(object sender, RoutedEventArgs e) { MainWindow.RenameIndex = OverallIndex.ToString(); MainWindow.RenamePage = PageIndex.ToString(); this.textBox1.IsReadOnly = false; this.textBox1.BorderThickness = new Thickness(1); this.textBox1.Focus(); this.textBox1.SelectAll(); }
public void BtnPageDnOnClick() { PageIndex = (PageIndex < mMaxPageCount) ? PageIndex + 1 : 1; mLbPageText.text = PageIndex.ToString(); if (e_PageIndexChange != null) { e_PageIndexChange(PageIndex); } }
public void BtnPageUpOnClick() { PageIndex = (PageIndex > 1) ? PageIndex - 1 : mMaxPageCount; mLbPageText.text = PageIndex.ToString(); if (e_PageIndexChange != null) { e_PageIndexChange(PageIndex); } }
public static HamburgerButtons GetButtonForPage(PageIndex page) { switch (page) { case PageIndex.PageAnimeList: return(HamburgerButtons.AnimeList); case PageIndex.PageAnimeDetails: return(HamburgerButtons.AnimeList); case PageIndex.PageSettings: return(HamburgerButtons.Settings); case PageIndex.PageSearch: return(HamburgerButtons.AnimeSearch); case PageIndex.PageLogIn: return(HamburgerButtons.LogIn); case PageIndex.PageProfile: return(HamburgerButtons.Profile); case PageIndex.PageAbout: return(HamburgerButtons.About); case PageIndex.PageRecomendations: return(HamburgerButtons.Recommendations); case PageIndex.PageSeasonal: return(HamburgerButtons.Seasonal); case PageIndex.PageMangaList: return(HamburgerButtons.MangaList); case PageIndex.PageMangaSearch: return(HamburgerButtons.MangaSearch); case PageIndex.PageTopAnime: return(HamburgerButtons.TopAnime); case PageIndex.PageTopManga: return(HamburgerButtons.TopManga); case PageIndex.PageCalendar: return(HamburgerButtons.Calendar); case PageIndex.PageArticles: return(HamburgerButtons.Articles); case PageIndex.PageNews: return(HamburgerButtons.News); default: throw new ArgumentOutOfRangeException(nameof(page), page, null); } }
public virtual ActionResult Index() { pageIndex = new PageIndex(); pageIndex.Btn_Delete_ApiUrl = Url.Action("Del"); pageIndex.Btn_ExportExcel_ApiUrl = Url.Action("ExportExcel"); this.DrawIndex(pageIndex); ViewBag.ColModel = jss.Serialize(this.GetPagingEntity(null, 1, 1).ColModel); ViewBag.Html_List = MvcHtmlString.Create(pageIndex.GetHtml); return(View()); }
protected void btn_Normal_Move_Click(object sender, EventArgs e) { if (!DataEval.IsEmptyQuery(_pageindexid)) { PageMgr myPageMgr = new PageMgr(); PageIndex myPageIndex = myPageMgr.Get_PageIndex(_pageindexid); switch (droplist_Normal_Folders.SelectedValue) { case "1": // move to active folder if (myPageIndex.Page_CategoryID == "2") { e2Data[] UpdateData_Active = { new e2Data("PageIndexID", _pageindexid), new e2Data("Page_CategoryID", "1") }; myPageMgr.Edit_PageIndex(UpdateData_Active); } else { SiteMenu mySiteMenu = new SiteMenu(); mySiteMenu.Reset_Menu_RootOrder(); int Count_Child = myPageMgr.Count_Child_PageIndex("-1", "1,2") + 1; e2Data[] UpdateData_Active = { new e2Data("PageIndexID", _pageindexid), new e2Data("Parent_PageIndexID", "-1"), new e2Data("Page_CategoryID", "1"), new e2Data("SortOrder", Count_Child.ToString()) }; myPageMgr.Edit_PageIndex(UpdateData_Active); } break; default: e2Data[] UpdateData_Default = { new e2Data("PageIndexID", _pageindexid), new e2Data("Page_CategoryID", droplist_Normal_Folders.SelectedValue) }; myPageMgr.Edit_PageIndex(UpdateData_Default); break; } OnClick(sender, e); } }
//根据点击的对象获取物品的ID public static int GetItemID(string name, ITEM [] ShowPannel, PageIndex pageIndex) { foreach (AwardItem item in ShowPannel[pageIndex.current - 1].AwardList) { if (item.obj.name == name) { return(item.itemID); //返回物品的ID } } return(0); }
private void OnHamburgerItemClick(PageIndex page) { if (!_allowHamburgerNavigation) { return; } SetActiveButton(Utilities.GetButtonForPage(page)); ViewModelLocator.GeneralMain.Navigate(page, GetAppropriateArgsForPage(page)); _drawer.CloseDrawer(); }
protected void tbx_PageName_TextChanged(object sender, EventArgs e) { PageMgr myPageMgr = new PageMgr(); PageIndex myPageIndex = myPageMgr.Get_PageIndex(_pageindexid); URLrewriter.UrlMgr myUrlMgr = new URLrewriter.UrlMgr(); tbx_PageURL.Text = myUrlMgr.Get_PageIndex_URL(myPageIndex.Parent_PageIndexID) + "/" + tbx_PageName.Text + ".aspx"; }
public string GetNextLink() { FormDataCollection form = new FormDataCollection(); form.AddString("id", this.BranchId.ToString()) .AddString("day", this.Today) .AddString("flag", this.DataFlag) .AddString("page", (PageIndex.GetValueOrDefault() + 1).ToString()); return("/ajax/scan/Result/ShowScanResult.ppx?" + form.ToString()); }
private void DataFill_PageURLs() { // PageURL PageMgr myPageMgr = new PageMgr(); PageIndex myPageIndex = myPageMgr.Get_PageIndex(_pageindexid); URLrewriter.UrlMgr myUrlMgr = new URLrewriter.UrlMgr(); tbx_PageURL.Text = myUrlMgr.Get_PageIndex_URL(myPageIndex.Parent_PageIndexID) + "/" + tbx_PageName.Text + ".aspx"; }
public string ToQueryString() { var queryString = System.Web.HttpUtility.ParseQueryString(string.Empty); queryString.Add(nameof(OrderBy), OrderBy.ToString()); queryString.Add(nameof(OrderByDescending), OrderByDescending ? "true" : "false"); queryString.Add(nameof(PageIndex), PageIndex.ToString()); queryString.Add(nameof(PageSize), PageSize.ToString()); queryString.Add(nameof(SearchTerm), SearchTerm); return(queryString.ToString()); }
private PageUnit[] GetTableColumn(Page page, PageIndex index, string type) { bool stopAtNextEmpty = false; bool active = true; var columnMatches = new List <PageUnit>(); var traverser = new PageTraverser(page, index); traverser.Traverse(Direction.Down, 1); while (active && !traverser.ErrorOccurred) { string match = string.Empty; var surroundingPageUnits = new PageUnit[9][] { traverser.Peek(Direction.Left), traverser.GetCurrentPageUnits(), traverser.Peek(Direction.Right), traverser.Peek(Direction.Left, 2), traverser.Peek(Direction.Right, 2), traverser.Peek(Direction.Left, 3), traverser.Peek(Direction.Right, 3), traverser.Peek(Direction.Left, 4), traverser.Peek(Direction.Right, 4) }; var pageUnits = surroundingPageUnits .Where(x => x != null) .Where(x => x.Any(p => p.TextType == type)) .OrderBy(x => Math.Abs(traverser.GetCurrentPosition().Coordinate.X - x.First().Coordinate.X)); var matchingPageUnit = pageUnits.FirstOrDefault(); if (matchingPageUnit != null) { columnMatches.Add(matchingPageUnit.Where(x => x.TextType == type).First()); } traverser.Traverse(Direction.Down, 1); if (!string.IsNullOrWhiteSpace(match)) { stopAtNextEmpty = true; } if (string.IsNullOrWhiteSpace(match) && stopAtNextEmpty) { active = false; } } return(columnMatches.ToArray()); }
/// <summary> /// 页面控件呈现 /// </summary> private void Page(bool callEvent) { if (this.toolStrip1.InvokeRequired)//等待异步 { PageDelegate myDelegate = new PageDelegate(SetCtrolEnabled); if (this.Parent != null && !this.Parent.IsHandleCreated) { return; } if (IsDisposed || !this.IsHandleCreated || !this.toolStrip1.IsHandleCreated) { return; } this.Invoke(myDelegate, new object[] { false });//通过委托调用 } else { if (PageIndex == 0) { PageIndex = 1; } txt_CurrentIndex.Text = PageIndex.ToString(); lbl_PageCount.Text = PageCount.ToString(); lbl_RecordCount.Text = string.Format("每页{0}条记录,共{1}条记录", PageSize, RecordCount); if (callEvent && OnPageChanged != null) { OnPageChanged(this, null);//当前分页数字改变时,触发委托事件 } SetCtrolEnabled(); if (PageCount == 1)//有且仅有一页 { btn_First.Enabled = false; btn_Last.Enabled = false; btn_Next.Enabled = false; btn_Previous.Enabled = false; } else if (PageIndex == 1)//第一页 { btn_First.Enabled = false; btn_Previous.Enabled = false; } else if (PageIndex == PageCount)//最后一页 { btn_Next.Enabled = false; btn_Last.Enabled = false; } } }
public void HighlightButtonsForPage(PageIndex page, string buttonText) { if (string.IsNullOrEmpty(buttonText)) { throw new InvalidOperationException(); } var mainButton = GetMainButton(page); var mobileButton = GetMobileButton(page); HighlightButtons(mainButton, mobileButton, buttonText); }
public override int GetHashCode() { unchecked { int hash = PageIndex.GetHashCode(); hash = 31 * hash + PageSize.GetHashCode(); //for performance, just calculate Count of list hash = 31 * hash + OrderOptions.Count.GetHashCode(); hash = 31 * hash + WhereOptions.Count.GetHashCode(); return(hash); } }
/// <summary> /// 填充参数 /// </summary> /// <param name="args">原有参数</param> /// <returns>填充后的参数</returns> public virtual Dictionary <string, string> FillArgs(Dictionary <string, string> args) { if (args == null) { args = new Dictionary <string, string>(); } args["fence_id"] = FenceId.ToString(); args["page_index"] = PageIndex.ToString(); args["page_size"] = PageSize.ToString(); return(args); }
public override int GetHashCode() { int hashCode = -1859068553; hashCode = hashCode * -1521134295 + EqualityComparer <ICollection <SearchyCondition> > .Default.GetHashCode(Conditions); hashCode = hashCode * -1521134295 + EqualityComparer <ICollection <SearchySort> > .Default.GetHashCode(Sorts); hashCode = hashCode * -1521134295 + PageSize.GetHashCode(); hashCode = hashCode * -1521134295 + PageIndex.GetHashCode(); hashCode = hashCode * -1521134295 + CountRows.GetHashCode(); return(hashCode); }
public static Node DeserilizeNode(PageIndex pageIndex, byte[] data) { var isLeaf = data[0]; if (isLeaf == 0) { return(new InternalNode(pageIndex, data)); } else { return(new LeafNode(pageIndex, data)); } }
private static string LoadUser(object pageIndex) { PageIndex pageInfo = (PageIndex)pageIndex; WebClientEx client = new WebClientEx(); NameValueCollection data = new NameValueCollection(); data.Add("__EVENTTARGET", pageInfo.page != 1? "NextLBtn":""); data.Add("__EVENTARGUMENT", ""); data.Add("__VIEWSTATE", pageInfo.viewstate.ToString()); //your string data.Add("__VIEWSTATEGENERATOR", "3C84D956"); //data.Add("ToPage", "7"); // IDomObject CsQuery.Config.HtmlEncoder = new TT(); string Page = client.Post(url, data); CQ dom = CQ.Create(Page); pageInfo.viewstate = dom["input#__VIEWSTATE"].Val(); var value = dom["#data_field"]["tr.ListItem,tr.ListAltern"] .Elements .Select( t => { CQ tdCq = CQ.Create(t.InnerHTML)["td"]; var user = new { name = tdCq[0].InnerText, company = tdCq[1].InnerText, state = tdCq[2].InnerText, gv = tdCq[3].InnerText, begindate = tdCq[4].InnerText, enddate = tdCq[5].InnerText }; return(user); }); using (FileStream fs = File.Open("1.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) { StringBuilder sb = new StringBuilder(); foreach (var item in value) { sb.AppendLine(item.name + "," + item.company + "," + item.state + "," + item.gv + "," + item.begindate + "," + item.enddate); } byte[] targetByte = Encoding.UTF8.GetBytes(sb.ToString()); fs.Position = fs.Length; fs.Write(targetByte, 0, targetByte.Length); fs.Flush(); Console.WriteLine(pageInfo.page + " success to write in file"); return(pageInfo.viewstate.ToString()); } }
public void PageIndex_Selected() { if (!DataEval.IsEmptyQuery(_pageindexid)) { PageMgr myPageMgr = new PageMgr(); PageIndex myPageIndex = myPageMgr.Get_PageIndex(_pageindexid); lbl_PageName.Text = myPageIndex.Page_Name; } else { lbl_PageName.Text = "Page unselected"; } }
/// <summary> /// 设置请求前的参数 /// </summary> private void SetRequestParams() { this.ClearParamters(); this.AddParamter("key", this.KeyWord); this.AddParamter("p", PageIndex <= 0 ? "1" : PageIndex.ToString()); this.AddParamter("f", "select"); this.AddParamter("jsversion", "v5"); this.AddParamter("listStyle", "bigPhoto"); this.AddParamter("pri_uid", "0"); this.AddParamter("sex", "f"); this.AddParamter("sn", "default"); this.AddParamter("stc", "1:4401,2:19.25,3:155.168,23:1"); this.AddParamter("sv", "1"); }
public void PageIndex_CreatePageIndexWithEntries() { using (target = new PageIndex(stream)) { //PageSummary summary1 = new PageSummary() { AddressSpaceId = id1, Allocated = true, Offset = 0, Size = 1024, Used = 1024 }; //PageSummary summary2 = new PageSummary() { AddressSpaceId = id2, Allocated = true, Offset = 1024, Size = 1024, Used = 100 }; //PageSummary summary3 = new PageSummary() { AddressSpaceId = id1, Allocated = true, Offset = 2048, Size = 1024, Used = 200 }; //PageSummary summary4 = new PageSummary() { AddressSpaceId = Guid.Empty, Allocated = false, Offset = 3072, Size = 1024, Used = 0 }; //target.AddOrUpdateEntry(summary1); //target.AddOrUpdateEntry(summary2); //target.AddOrUpdateEntry(summary3); //target.AddOrUpdateEntry(summary4); Assert.IsNotNull(target[id1]); Assert.IsNotNull(target[id2]); Assert.AreEqual(2, target[id1].Count()); Assert.AreEqual(1, target[id2].Count()); Assert.AreEqual(1, target[Guid.Empty].Count()); Assert.AreEqual(0, target[id1][0].DataFileOffset); Assert.AreEqual(1024, target[id1][0].Size); Assert.AreEqual(1024, target[id1][0].Used); Assert.IsTrue(target[id1][0].Allocated); Assert.AreEqual(0, target[id1][0].PageFileIndex); Assert.AreEqual(id1, target[id1][0].AddressSpaceId); Assert.AreEqual(2048, target[id1][1].DataFileOffset); Assert.AreEqual(1024, target[id1][1].Size); Assert.AreEqual(200, target[id1][1].Used); Assert.IsTrue(target[id1][1].Allocated); Assert.AreEqual(66, target[id1][1].PageFileIndex); Assert.AreEqual(id1, target[id1][1].AddressSpaceId); Assert.AreEqual(1024, target[id2][0].DataFileOffset); Assert.AreEqual(1024, target[id2][0].Size); Assert.AreEqual(100, target[id2][0].Used); Assert.IsTrue(target[id2][0].Allocated); Assert.AreEqual(33, target[id2][0].PageFileIndex); Assert.AreEqual(id2, target[id2][0].AddressSpaceId); Assert.AreEqual(3072, target[Guid.Empty][0].DataFileOffset); Assert.AreEqual(1024, target[Guid.Empty][0].Size); Assert.AreEqual(0, target[Guid.Empty][0].Used); Assert.IsFalse(target[Guid.Empty][0].Allocated); Assert.AreEqual(99, target[Guid.Empty][0].PageFileIndex); Assert.AreEqual(Guid.Empty, target[Guid.Empty][0].AddressSpaceId); Assert.AreEqual(4096, target.EndOfPageIndex); } }
public void PageIndex_Selected() { if (!DataEval.IsEmptyQuery(_pageindexid) && _pageindexid != "-1") { PageMgr myPageMgr = new PageMgr(); PageIndex myPageIndex = myPageMgr.Get_PageIndex(_pageindexid); lbl_PageName.Text = myPageIndex.Menu_Title; } else { lbl_PageName.Text = "Unselected"; } }
public JsonResult GetSucceedListResult(object list, int recordCount) { return(GetSucceedResult(new { list = list, RecordCount = recordCount, PageCount = PageCount, PageIndex = (recordCount > 0 ? PageIndex : 0), EnPageCount = DESEncrypt.Encrypt(PageCount.ToString(), DESEncrypt.Keys.SplitPage), EnPageIndex = DESEncrypt.Encrypt(PageIndex.ToString(), DESEncrypt.Keys.SplitPage), HasPrev = (PageIndex > 1), HasNext = (PageIndex < PageCount), }, "")); }
/// <summary> /// 填充参数 /// </summary> /// <param name="args">原有参数</param> /// <returns>填充后的参数</returns> public virtual Dictionary <string, string> FillArgs(Dictionary <string, string> args) { if (args == null) { args = new Dictionary <string, string>(); } args["start_time"] = StartTime.ToUtcTicks().ToString(); args["end_time"] = EndTime.ToUtcTicks().ToString(); args["coord_type_output"] = CoordTypeOutput.ToString(); args["page_index"] = PageIndex.ToString(); args["page_size"] = PageSize.ToString(); return(args); }
private void GetNextPage() { if (PageIndex == LastPage) { PageIndex = 1; } else { PageIndex++; } LoadData(); Pagination = PageIndex.ToString() + "/" + LastPage.ToString(); }
private void GetPreviousPage() { if (PageIndex == 1) { PageIndex = LastPage; } else { PageIndex--; } LoadData(); Pagination = PageIndex.ToString() + "/" + LastPage.ToString(); }
public static bool PageRequiresAuth(PageIndex page) { switch (page) { case PageIndex.PageAnimeDetails: case PageIndex.PageSearch: case PageIndex.PageProfile: case PageIndex.PageRecomendations: case PageIndex.PageMangaSearch: case PageIndex.PageHistory: return true; default: return false; } }
public void RegisterBackNav(PageIndex page, object args, PageIndex source = PageIndex.PageAbout) { if (page == PageIndex.PageAnimeDetails || page == PageIndex.PageCharacterDetails || page == PageIndex.PageStaffDetails || ((page == PageIndex.PageSearch || page == PageIndex.PageMangaSearch) && (args as SearchPageNavArgsBase)?.DisplayMode == SearchPageDisplayModes.Off)) { _randomNavigationStackOff.Push(new Tuple<PageIndex, object>(page, args)); ViewModelLocator.GeneralMain.NavigateOffBackButtonVisibility = true; } else if (page == PageIndex.PageProfile || page == PageIndex.PageArticles || page == PageIndex.PageForumIndex) { _randomNavigationStackMain.Push(new Tuple<PageIndex, object>(page, args)); ViewModelLocator.GeneralMain.NavigateMainBackButtonVisibility = true; } }
public bool AllowDetailsNavigation { private get; set; } = true; //Disabled when draggig grid item public async void NavigateDetails(PageIndex? sourceOverride = null, object argsOverride = null) { if (!AllowDetailsNavigation || (Settings.SelectedApiType == ApiType.Hummingbird && !ParentAbstraction.RepresentsAnime) || ViewModelLocator.AnimeDetails.Id == Id) return; var id = Id; if (_seasonalState && Settings.SelectedApiType == ApiType.Hummingbird) //id switch { id = await new AnimeDetailsHummingbirdQuery(id).GetHummingbirdId(); } var navArgs = new AnimeDetailsPageNavigationArgs(id, Title, null, this, argsOverride ?? ViewModelLocator.GeneralMain.GetCurrentListOrderParams()) { Source = sourceOverride ?? (ParentAbstraction.RepresentsAnime ? PageIndex.PageAnimeList : PageIndex.PageMangaList), AnimeMode = ParentAbstraction.RepresentsAnime }; if (sourceOverride != null) navArgs.Source = sourceOverride.Value; ViewModelLocator.GeneralMain.Navigate(PageIndex.PageAnimeDetails,navArgs); }
private async Task FetchData(bool force = false, PageIndex? sourcePage = null) { LoadingGlobal = true; try { var data = await new AnimeGeneralDetailsQuery().GetAnimeDetails(force, Id.ToString(), Title, AnimeMode, sourcePage != null ? sourcePage == PageIndex.PageCharacterDetails || sourcePage == PageIndex.PageStaffDetails ? (ApiType?) ApiType.Mal : null : null); ExtractData(data); } catch (Exception) { LoadingGlobal = false; // no internet? } }
public override void Navigate(PageIndex index, object args = null) { //throw new NotImplementedException(); }
public override async void Navigate(PageIndex index, object args = null) { PageIndex originalIndex = index; var wasOnSearchPage = SearchToggleLock; SearchToggleLock = false; if(View.CurrentDisplayMode == SplitViewDisplayMode.CompactOverlay) MenuPaneState = false; CurrentStatusSub = ""; IsCurrentStatusSelectable = false; if (!Credentials.Authenticated && PageUtils.PageRequiresAuth(index)) { var msg = new MessageDialog("Log in first in order to access this page."); await msg.ShowAsync(); return; } ResourceLocator.TelemetryProvider.TelemetryTrackEvent(TelemetryTrackedEvents.Navigated, index.ToString()); ScrollToTopButtonVisibility = false; RefreshButtonVisibility = false; if (index == PageIndex.PageMangaList && args == null) // navigating from startup args = AnimeListPageNavigationArgs.Manga; if (index == PageIndex.PageSeasonal || //index is always angry btw index == PageIndex.PageMangaList || index == PageIndex.PageTopManga || index == PageIndex.PageTopAnime) index = PageIndex.PageAnimeList; MobileViewModelLocator.Hamburger.ChangeBottomStackPanelMargin(index == PageIndex.PageAnimeList || //and she likes to bit certain individual index == PageIndex.PageMessanging || index == PageIndex.PageSearch || index == PageIndex.PageWallpapers); if (index == PageIndex.PageAnimeList && _searchStateBeforeNavigatingToSearch != null) { SearchToggleStatus = (bool) _searchStateBeforeNavigatingToSearch; if (SearchToggleStatus) ShowSearchStuff(); else HideSearchStuff(); } ResetSearchFilter(); switch (index) //his head specifficaly { case PageIndex.PageAnimeList: if (MobileViewModelLocator.AnimeList.Initializing) { if (!_subscribed) { MobileViewModelLocator.AnimeList.Initialized += AnimeListOnInitialized; _subscribed = true; } _postponedNavigationArgs = new Tuple<PageIndex, object>(originalIndex, args); return; } MobileViewModelLocator.Hamburger.SetActiveButton(HamburgerButtons.AnimeList); ShowSearchStuff(); if ((_searchStateBeforeNavigatingToSearch == null || !_searchStateBeforeNavigatingToSearch.Value) && (wasOnSearchPage || _wasOnDetailsFromSearch)) { CurrentSearchQuery = ""; _wasOnDetailsFromSearch = false; UnToggleSearchStuff(); } if (CurrentMainPage == PageIndex.PageAnimeList) MobileViewModelLocator.AnimeList.Init(args as AnimeListPageNavigationArgs); else MainNavigationRequested?.Invoke(typeof(AnimeListPage), args); break; case PageIndex.PageAnimeDetails: HideSearchStuff(); var detail = ViewModelLocator.AnimeDetails; detail.DetailImage = null; detail.LeftDetailsRow.Clear(); detail.RightDetailsRow.Clear(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => ViewModelLocator.AnimeDetails.RefreshData()); _wasOnDetailsFromSearch = (args as AnimeDetailsPageNavigationArgs).Source == PageIndex.PageSearch; //from search , details are passed instead of being downloaded once more if (CurrentMainPage == PageIndex.PageAnimeDetails) ViewModelLocator.AnimeDetails.Init(args as AnimeDetailsPageNavigationArgs); else MainNavigationRequested?.Invoke(typeof(AnimeDetailsPage), args); break; case PageIndex.PageSettings: HideSearchStuff(); MainNavigationRequested?.Invoke(typeof(SettingsPage)); break; case PageIndex.PageSearch: case PageIndex.PageMangaSearch: if(CurrentMainPage != PageIndex.PageSearch && CurrentMainPage != PageIndex.PageMangaSearch && CurrentMainPage != PageIndex.PageCharacterSearch) _searchStateBeforeNavigatingToSearch = SearchToggleStatus; var searchArg = args as SearchPageNavigationArgs; if (string.IsNullOrWhiteSpace(searchArg.Query)) { searchArg.Query = CurrentSearchQuery; } if (!searchArg.ByGenre && !searchArg.ByStudio) { View.SearchInputFocus(FocusState.Keyboard); SearchToggleLock = true; ShowSearchStuff(); ToggleSearchStuff(); } else { HideSearchStuff(); CurrentStatus = searchArg.ByGenre ? "Anime by Genre" : "Anime By Studio"; } MainNavigationRequested?.Invoke(typeof(AnimeSearchPage), args); break; case PageIndex.PageLogIn: HideSearchStuff(); MainNavigationRequested?.Invoke(typeof(LogInPage)); break; case PageIndex.PageProfile: HideSearchStuff(); RefreshButtonVisibility = true; if (Settings.SelectedApiType == ApiType.Mal) RefreshDataCommand = new RelayCommand(() => ViewModelLocator.ProfilePage.LoadProfileData(null, true)); else RefreshDataCommand = new RelayCommand(() => ViewModelLocator.HumProfilePage.Init(true)); if (Settings.SelectedApiType == ApiType.Mal) { if (CurrentMainPage == PageIndex.PageProfile) MobileViewModelLocator.ProfilePage.LoadProfileData(args as ProfilePageNavigationArgs); else MainNavigationRequested?.Invoke(typeof(ProfilePage), args); } else MainNavigationRequested?.Invoke(typeof(HummingbirdProfilePage), args); break; case PageIndex.PageRecomendations: HideSearchStuff(); MainNavigationRequested?.Invoke(typeof(RecommendationsPage), args); break; case PageIndex.PageCalendar: HideSearchStuff(); CurrentStatus = "Calendar"; RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.CalendarPage.Init(true); }); MainNavigationRequested?.Invoke(typeof(CalendarPage), args); break; case PageIndex.PageArticles: case PageIndex.PageNews: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => ViewModelLocator.MalArticles.Init(null)); if (CurrentMainPage == PageIndex.PageArticles) ViewModelLocator.MalArticles.Init(args as MalArticlesPageNavigationArgs); else MainNavigationRequested?.Invoke(typeof(MalArticlesPage), args); break; case PageIndex.PageMessanging: HideSearchStuff(); CurrentStatus = $"{Credentials.UserName} - Messages"; RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.MalMessaging.Init(true); }); MainNavigationRequested?.Invoke(typeof(MalMessagingPage), args); break; case PageIndex.PageMessageDetails: var msgModel = args as MalMessageDetailsNavArgs; RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => ViewModelLocator.MalMessageDetails.RefreshData()); CurrentOffStatus = msgModel.WorkMode == MessageDetailsWorkMode.Message ? (msgModel.Arg != null ? $"{(msgModel.Arg as MalMessageModel)?.Sender} - {(msgModel.Arg as MalMessageModel)?.Subject}" : "New Message") : $"Comments {Credentials.UserName} - {(msgModel.Arg as MalComment)?.User.Name}"; MainNavigationRequested?.Invoke(typeof(MalMessageDetailsPage), args); break; case PageIndex.PageForumIndex: HideSearchStuff(); CurrentStatus = "Forums"; if (args == null || (args as ForumsNavigationArgs)?.Page == ForumsPageIndex.PageIndex) { RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.ForumsIndex.Init(true); }); } else { var navArgs = args as ForumsNavigationArgs; if (navArgs?.Page == ForumsPageIndex.PageBoard) { RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.ForumsBoard.Reload(); }); } } if (CurrentMainPage == PageIndex.PageForumIndex) ViewModelLocator.ForumsMain.Init(args as ForumsNavigationArgs); else MainNavigationRequested?.Invoke(typeof(ForumsMainPage), args); break; case PageIndex.PageHistory: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.History.Init(null, true); }); CurrentStatus = $"History - {(args as HistoryNavigationArgs)?.Source ?? Credentials.UserName}"; MainNavigationRequested?.Invoke(typeof(HistoryPage), args); break; case PageIndex.PageCharacterDetails: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => ViewModelLocator.CharacterDetails.RefreshData()); OffContentVisibility = true; if (CurrentOffPage == PageIndex.PageCharacterDetails) ViewModelLocator.CharacterDetails.Init(args as CharacterDetailsNavigationArgs); else MainNavigationRequested?.Invoke(typeof(CharacterDetailsPage), args); break; case PageIndex.PageStaffDetails: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => ViewModelLocator.StaffDetails.RefreshData()); OffContentVisibility = true; if (CurrentOffPage == PageIndex.PageStaffDetails) ViewModelLocator.StaffDetails.Init(args as StaffDetailsNaviagtionArgs); else MainNavigationRequested?.Invoke(typeof(StaffDetailsPage), args); break; case PageIndex.PageCharacterSearch: if (CurrentMainPage != PageIndex.PageSearch && CurrentMainPage != PageIndex.PageMangaSearch && CurrentMainPage != PageIndex.PageCharacterSearch) _searchStateBeforeNavigatingToSearch = SearchToggleStatus; ShowSearchStuff(); ToggleSearchStuff(); SearchToggleLock = true; MainNavigationRequested?.Invoke(typeof(CharacterSearchPage)); await Task.Delay(10); View.SearchInputFocus(FocusState.Keyboard); break; case PageIndex.PageWallpapers: HideSearchStuff(); RefreshButtonVisibility = false; MainNavigationRequested?.Invoke(typeof(WallpapersPage),args); break; case PageIndex.PagePopularVideos: HideSearchStuff(); CurrentStatus = "Popular Videos"; MainNavigationRequested?.Invoke(typeof(PopularVideosPage), args); break; default: throw new ArgumentOutOfRangeException(nameof(index), index, null); } CurrentMainPage = index; CurrentMainPageKind = index; RaisePropertyChanged(() => SearchToggleLock); }
public void RegisterBackNav(PageIndex page, object args, PageIndex source = PageIndex.PageAbout) { _randomNavigationStackMain.Push(new Tuple<PageIndex, object>(page, args)); ViewModelLocator.GeneralMain.NavigateMainBackButtonVisibility = true; }
public override async void Navigate(PageIndex index, object args = null) { PageIndex? currPage = null; PageIndex? currOffPage = null; var mainPage = true; var originalIndex = index; var wasOnSearchPage = SearchToggleLock; if (!Credentials.Authenticated && PageUtils.PageRequiresAuth(index)) { var msg = new MessageDialog("Log in first in order to access this page." ,"Login required."); await msg.ShowAsync(); return; } _navigating = true; ResourceLocator.TelemetryProvider.TelemetryTrackEvent(TelemetryTrackedEvents.Navigated, index.ToString()); DesktopViewModelLocator.Hamburger.UpdateAnimeFiltersSelectedIndex(); //prepare for some index mess if (index == PageIndex.PageMangaList && args == null) // navigating from startup args = AnimeListPageNavigationArgs.Manga; if (index == PageIndex.PageAbout || index == PageIndex.PageSettings || index == PageIndex.PageAbout || index == PageIndex.PageAnimeDetails || index == PageIndex.PageMessageDetails || index == PageIndex.PageCharacterDetails || index == PageIndex.PageStaffDetails || index == PageIndex.PageLogIn) { OffRefreshButtonVisibility = false; mainPage = false; IsCurrentStatusSelectable = false; currOffPage = index; if (index != PageIndex.PageAnimeDetails) { ViewModelLocator.AnimeDetails.Id = 0; //reset this because we no longer are there if(index != PageIndex.PageCharacterDetails && index != PageIndex.PageStaffDetails) ViewModelLocator.NavMgr.ResetOffBackNav(); } if(CurrentOffPage == PageIndex.PageSettings) ViewModelLocator.NavMgr.ResetOffBackNav(); } else //naviagating main page { ScrollToTopButtonVisibility = false; RefreshButtonVisibility = false; ResetSearchFilter(); SearchToggleLock = false; CurrentHintSet = null; } switch (index) { case PageIndex.PageSeasonal: case PageIndex.PageMangaList: case PageIndex.PageTopManga: case PageIndex.PageTopAnime: case PageIndex.PageAnimeList: if (index == PageIndex.PageSeasonal || index == PageIndex.PageTopAnime || index == PageIndex.PageTopManga || index == PageIndex.PageMangaList) currPage = index; //used by hamburger's filters else currPage = PageIndex.PageAnimeList; DesktopViewModelLocator.Hamburger.ChangeBottomStackPanelMargin(true); index = PageIndex.PageAnimeList; break; case PageIndex.PageSearch: case PageIndex.PageRecomendations: case PageIndex.PageProfile: case PageIndex.PageMangaSearch: case PageIndex.PageCalendar: case PageIndex.PageArticles: case PageIndex.PageNews: case PageIndex.PageMessanging: case PageIndex.PageForumIndex: case PageIndex.PageHistory: case PageIndex.PageCharacterSearch: case PageIndex.PageWallpapers: case PageIndex.PagePopularVideos: if (index == PageIndex.PageSearch || index == PageIndex.PageMangaSearch || ((index == PageIndex.PageSearch || index == PageIndex.PageMangaSearch) && CurrentOffPage == PageIndex.PageSearch)) { var arg = args as SearchPageNavigationArgs; if (Settings.ForceSearchIntoOffPage || CurrentMainPage == PageIndex.PageForumIndex || CurrentMainPage == PageIndex.PageProfile || CurrentOffPage == PageIndex.PageSearch) { arg.DisplayMode = SearchPageDisplayModes.Off; args = arg; } if ((args as SearchPageNavArgsBase).DisplayMode == SearchPageDisplayModes.Main) { CurrentStatusSub = ""; DesktopViewModelLocator.Hamburger.ChangeBottomStackPanelMargin(index == PageIndex.PageMessanging || index == PageIndex.PageWallpapers); } } else { CurrentStatusSub = ""; DesktopViewModelLocator.Hamburger.ChangeBottomStackPanelMargin(index == PageIndex.PageMessanging || index == PageIndex.PageWallpapers); } currPage = index; break; } if (index == PageIndex.PageAnimeList && _searchStateBeforeNavigatingToSearch != null) { SearchToggleStatus = (bool) _searchStateBeforeNavigatingToSearch; if (SearchToggleStatus) ShowSearchStuff(); else HideSearchStuff(); } switch (index) { case PageIndex.PageAnimeList: if (ViewModelLocator.AnimeList.Initializing) { if (!_subscribed) { ViewModelLocator.AnimeList.Initialized += AnimeListOnInitialized; _subscribed = true; } _postponedNavigationArgs = new Tuple<PageIndex, object>(originalIndex, args); return; } _postponedNavigationArgs = null; ShowSearchStuff(); if ((_searchStateBeforeNavigatingToSearch == null || !_searchStateBeforeNavigatingToSearch.Value) && (wasOnSearchPage || _wasOnDetailsFromSearch)) { CurrentSearchQuery = ""; _wasOnDetailsFromSearch = false; UnToggleSearchStuff(); } if (CurrentMainPageKind == PageIndex.PageAnimeList) ViewModelLocator.AnimeList.Init(args as AnimeListPageNavigationArgs); else MainNavigationRequested?.Invoke(typeof(AnimeListPage), args); break; case PageIndex.PageAnimeDetails: var detail = ViewModelLocator.AnimeDetails; detail.DetailImage = null; detail.LeftDetailsRow.Clear(); detail.RightDetailsRow.Clear(); OffRefreshButtonVisibility = true; RefreshOffDataCommand = new RelayCommand(() => ViewModelLocator.AnimeDetails.RefreshData()); _wasOnDetailsFromSearch = (args as AnimeDetailsPageNavigationArgs).Source == PageIndex.PageSearch; //from search , details are passed instead of being downloaded once more OffContentVisibility = true; if (CurrentOffPage == PageIndex.PageAnimeDetails) ViewModelLocator.AnimeDetails.Init(args as AnimeDetailsPageNavigationArgs); else OffNavigationRequested?.Invoke(typeof(AnimeDetailsPage), args); break; case PageIndex.PageSettings: OffContentVisibility = true; OffNavigationRequested?.Invoke(typeof(SettingsPage)); break; case PageIndex.PageSearch: case PageIndex.PageMangaSearch: var arg = args as SearchPageNavigationArgs; if (Settings.ForceSearchIntoOffPage || CurrentMainPage == PageIndex.PageForumIndex || CurrentMainPage == PageIndex.PageProfile) arg.DisplayMode = SearchPageDisplayModes.Off; if (arg.DisplayMode == SearchPageDisplayModes.Off) { if (CurrentMainPage == PageIndex.PageCharacterSearch) { ToggleSearchStuff(); SearchToggleLock = true; } if (CurrentMainPage == PageIndex.PageSearch) { break; // we are already on the left } if (string.IsNullOrWhiteSpace(arg.Query)) arg.Query = CurrentSearchQuery; arg.DisplayMode = SearchPageDisplayModes.Off; OffContentVisibility = true; currOffPage = PageIndex.PageSearch; currPage = null; OffRefreshButtonVisibility = false; ViewModelLocator.AnimeDetails.Id = -1; StatusFilterVisibilityLock = false; CurrentOffStatus = "Search"; IsCurrentStatusSelectable = false; OffNavigationRequested?.Invoke(typeof(AnimeSearchPage), args); } else { if (CurrentOffPage == PageIndex.PageSearch) { break; // we are already on the right } if (CurrentMainPage.Value != PageIndex.PageSearch && CurrentMainPage.Value != PageIndex.PageMangaSearch && CurrentMainPage.Value != PageIndex.PageCharacterSearch) _searchStateBeforeNavigatingToSearch = SearchToggleStatus; if (arg.ByGenre || arg.ByStudio) { CurrentStatus = $"Anime by {(arg.ByGenre ? "Genre" : "Studio")}"; HideSearchStuff(); } else { SearchToggleLock = true; ShowSearchStuff(); ToggleSearchStuff(); } StatusFilterVisibilityLock = true; if (string.IsNullOrWhiteSpace(arg.Query)) arg.Query = CurrentSearchQuery; MainNavigationRequested?.Invoke(typeof(AnimeSearchPage), args); await Task.Delay(10); View.SearchInputFocus(FocusState.Keyboard); } break; case PageIndex.PageLogIn: OffContentVisibility = true; OffNavigationRequested?.Invoke(typeof(LogInPage)); break; case PageIndex.PageProfile: HideSearchStuff(); RefreshButtonVisibility = true; if (Settings.SelectedApiType == ApiType.Mal) RefreshDataCommand = new RelayCommand(() => DesktopViewModelLocator.ProfilePage.LoadProfileData(null, true)); else RefreshDataCommand = new RelayCommand(() => ViewModelLocator.HumProfilePage.Init(true)); if (Settings.SelectedApiType == ApiType.Mal) { if (CurrentMainPage == PageIndex.PageProfile) DesktopViewModelLocator.ProfilePage.LoadProfileData(args as ProfilePageNavigationArgs); else MainNavigationRequested?.Invoke(typeof(ProfilePage), args); } else MainNavigationRequested?.Invoke(typeof(HummingbirdProfilePage), args); break; case PageIndex.PageRecomendations: HideSearchStuff(); MainNavigationRequested?.Invoke(typeof(RecommendationsPage), args); break; case PageIndex.PageCalendar: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => ViewModelLocator.CalendarPage.Init(true)); CurrentStatus = "Calendar"; MainNavigationRequested?.Invoke(typeof(CalendarPage), args); break; case PageIndex.PageArticles: case PageIndex.PageNews: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.MalArticles.Init(null); }); MainNavigationRequested?.Invoke(typeof(MalArticlesPage), args); break; case PageIndex.PageMessanging: HideSearchStuff(); CurrentStatus = $"{Credentials.UserName} - Messages"; RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.MalMessaging.Init(true); }); MainNavigationRequested?.Invoke(typeof(MalMessagingPage), args); break; case PageIndex.PageMessageDetails: var msgModel = args as MalMessageDetailsNavArgs; OffRefreshButtonVisibility = true; RefreshOffDataCommand = new RelayCommand(() => ViewModelLocator.MalMessageDetails.RefreshData()); CurrentOffStatus = msgModel.WorkMode == MessageDetailsWorkMode.Message ? (msgModel.Arg != null ? $"{(msgModel.Arg as MalMessageModel)?.Sender} - {(msgModel.Arg as MalMessageModel)?.Subject}" : "New Message") : $"Comments {Credentials.UserName} - {(msgModel.Arg as MalComment)?.User.Name}"; OffContentVisibility = true; OffNavigationRequested?.Invoke(typeof(MalMessageDetailsPage), args); break; case PageIndex.PageForumIndex: HideSearchStuff(); CurrentStatus = "Forums"; if (args == null || (args as ForumsNavigationArgs)?.Page == ForumsPageIndex.PageIndex) { RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.ForumsIndex.Init(true); }); } else { var navArgs = args as ForumsNavigationArgs; if (navArgs?.Page == ForumsPageIndex.PageBoard) { RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.ForumsBoard.Reload(); }); } } if (CurrentMainPage != null && CurrentMainPage == PageIndex.PageForumIndex) ViewModelLocator.ForumsMain.Init(args as ForumsNavigationArgs); else MainNavigationRequested?.Invoke(typeof(ForumsMainPage), args); break; case PageIndex.PageHistory: HideSearchStuff(); RefreshButtonVisibility = true; RefreshDataCommand = new RelayCommand(() => { ViewModelLocator.History.Init(null, true); }); CurrentStatus = $"History - {(args as HistoryNavigationArgs)?.Source ?? Credentials.UserName}"; MainNavigationRequested?.Invoke(typeof(HistoryPage), args); break; case PageIndex.PageCharacterDetails: OffRefreshButtonVisibility = true; RefreshOffDataCommand = new RelayCommand(() => ViewModelLocator.CharacterDetails.RefreshData()); OffContentVisibility = true; if (CurrentOffPage == PageIndex.PageCharacterDetails) ViewModelLocator.CharacterDetails.Init(args as CharacterDetailsNavigationArgs); else OffNavigationRequested?.Invoke(typeof(CharacterDetailsPage), args); break; case PageIndex.PageStaffDetails: OffRefreshButtonVisibility = true; RefreshOffDataCommand = new RelayCommand(() => ViewModelLocator.StaffDetails.RefreshData()); OffContentVisibility = true; if (CurrentOffPage == PageIndex.PageStaffDetails) ViewModelLocator.StaffDetails.Init(args as StaffDetailsNaviagtionArgs); else OffNavigationRequested?.Invoke(typeof(StaffDetailsPage), args); break; case PageIndex.PageCharacterSearch: if (CurrentMainPage.Value != PageIndex.PageSearch && CurrentMainPage.Value != PageIndex.PageMangaSearch && CurrentMainPage.Value != PageIndex.PageCharacterSearch) _searchStateBeforeNavigatingToSearch = SearchToggleStatus; ShowSearchStuff(); ToggleSearchStuff(); SearchToggleLock = true; if (CurrentMainPage != PageIndex.PageCharacterSearch) MainNavigationRequested?.Invoke(typeof(CharacterSearchPage)); await Task.Delay(10); View.SearchInputFocus(FocusState.Keyboard); break; case PageIndex.PageWallpapers: HideSearchStuff(); MainNavigationRequested?.Invoke(typeof(WallpapersPage),args); break; case PageIndex.PagePopularVideos: HideSearchStuff(); CurrentStatus = "Popular Videos"; MainNavigationRequested?.Invoke(typeof(PopularVideosPage), args); break; default: throw new ArgumentOutOfRangeException(nameof(index), index, null); } if (currPage != null) CurrentMainPage = currPage; if (mainPage) CurrentMainPageKind = index; if (currOffPage != null) CurrentOffPage = currOffPage; _navigating = false; RaisePropertyChanged(() => SearchToggleLock); }
public void RegisterBackNav(PageIndex page, object args, PageIndex source = PageIndex.PageAbout) { //throw new NotImplementedException(); }
public abstract void Navigate(PageIndex index, object args = null);