internal static void MapToolbar(IElementHandler handler, IToolbarElement te) { if (te.Toolbar == null) { return; } var rootManager = handler.MauiContext?.GetNavigationRootManager(); rootManager?.SetToolbarElement(te); var platformView = handler.PlatformView as View; _ = handler.MauiContext ?? throw new InvalidOperationException($"{nameof(MauiContext)} should have been set by base class."); var appbarLayout = platformView?.FindViewById <ViewGroup>(Resource.Id.navigationlayout_appbar) ?? rootManager?.RootView?.FindViewById <ViewGroup>(Resource.Id.navigationlayout_appbar); var nativeToolBar = te.Toolbar?.ToPlatform(handler.MauiContext); if (appbarLayout == null) { return; } if (appbarLayout.ChildCount > 0 && appbarLayout.GetChildAt(0) == nativeToolBar) { return; } appbarLayout.AddView(nativeToolBar, 0); }
public void BackButtonNotVisibleForInitialPage() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var startingPage = new NavigationPage(new ContentPage()); window.Page = startingPage; Assert.False(toolbarElement.Toolbar.BackButtonVisible); }
public void ToolbarEmptyForContentPage() { Window window = new Window(); IToolbarElement toolbarElement = window; var startingPage = new ContentPage(); window.Page = startingPage; Assert.IsNull(toolbarElement.Toolbar); }
public void ToolbarExistsForNavigationPage() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var startingPage = new NavigationPage(new ContentPage()); window.Page = startingPage; Assert.IsNotNull(toolbarElement.Toolbar); }
public void ToolbarClearsWhenNavigationPageRemoved() { var window = new Window(); IToolbarElement toolbarElement = window; var startingPage = new NavigationPage(new ContentPage()); window.Page = startingPage; window.Page = new ContentPage(); Assert.IsNull(toolbarElement.Toolbar); }
internal static void MapToolbar(IElementHandler handler, IToolbarElement toolbarElement) { _ = handler.MauiContext ?? throw new InvalidOperationException($"{nameof(handler.MauiContext)} null"); if (toolbarElement.Toolbar != null) { var toolBar = toolbarElement.Toolbar.ToPlatform(handler.MauiContext); handler.MauiContext.GetNavigationRootManager().SetToolbar(toolBar); } }
public ToolbarElement([NotNull] IToolbarElement element, double sortOrder, [NotNull] string strip, [NotNull] string chunk, [CanBeNull] string icon, [CanBeNull] string text, [NotNull] Type contextType, RibbonElementType elementType = RibbonElementType.LargeButton) { Element = element; SortOrder = sortOrder; Strip = strip; Chunk = chunk; Icon = icon; Text = text; ContextType = contextType; ElementType = elementType; }
public async Task InsertPageBeforeRootPageShowsBackButton() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var startingPage = new TestNavigationPage(true, new ContentPage()); window.Page = startingPage; startingPage.Navigation.InsertPageBefore(new ContentPage(), startingPage.RootPage); await Task.Delay(50); Assert.True(toolbarElement.Toolbar.BackButtonVisible); }
public async Task RemoveRootPageHidesBackButton() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var startingPage = new TestNavigationPage(true, new ContentPage()); window.Page = startingPage; startingPage.Navigation.PushAsync(new ContentPage()); startingPage.Navigation.RemovePage(startingPage.RootPage); await Task.Delay(50); Assert.False(toolbarElement.Toolbar.BackButtonVisible); }
public async Task NestedNavigation_BackButtonVisibleIfAnyoneHasPages() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var innerNavigationPage = new NavigationPage(new ContentPage() { Content = new Label() }) { Title = "innerNavigationPage" }; var contentPage = new ContentPage() { Title = "contentPage" }; var tabbedPage = new TabbedPage() { Children = { contentPage, innerNavigationPage, } }; var outerNavigationPage = new NavigationPage(new ContentPage()) { Title = "outerNavigationPage" }; window.Page = outerNavigationPage; var toolbar = (Toolbar)toolbarElement.Toolbar; // push Tabbed Page on to the stack of the out nagivation page await outerNavigationPage.PushAsync(tabbedPage); Assert.True(toolbar.BackButtonVisible); tabbedPage.CurrentPage = innerNavigationPage; // even though the inner navigation page has no stack the outer one does // so we want to still display the navigation page Assert.True(toolbar.BackButtonVisible); await outerNavigationPage.PopAsync(); Assert.False(toolbar.BackButtonVisible); }
public void NestedNavigation_NestedNavigationPage() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var innerNavigationPage = new NavigationPage(new ContentPage() { Content = new Label() }) { Title = "innerNavigationPage" }; var contentPage = new ContentPage() { Title = "contentPage" }; var tabbedPage = new TabbedPage() { Children = { innerNavigationPage, contentPage } }; var outerNavigationPage = new NavigationPage(tabbedPage) { Title = "outerNavigationPage" }; window.Page = outerNavigationPage; var toolbar = (Toolbar)toolbarElement.Toolbar; Assert.True(toolbar.IsVisible); tabbedPage.CurrentPage = contentPage; Assert.True(toolbar.IsVisible); // Validate that changes to non visible navigation page don't propagate to titlebar NavigationPage.SetHasNavigationBar(innerNavigationPage.CurrentPage, false); Assert.True(toolbar.IsVisible); NavigationPage.SetHasNavigationBar(contentPage, false); Assert.False(toolbar.IsVisible); }
public void NestedNavigation_AppliesFromMostInnerNavigationPage() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var visibleInnerNavigationPage = new NavigationPage(new ContentPage()) { Title = "visibleInnerNavigationPage" }; var nonVisibleNavigationPage = new NavigationPage(new ContentPage()) { Title = "nonVisibleNavigationPage" }; var tabbedPage = new TabbedPage() { Children = { visibleInnerNavigationPage, nonVisibleNavigationPage } }; var outerNavigationPage = new NavigationPage(tabbedPage) { Title = "outerNavigationPage" }; window.Page = outerNavigationPage; var toolbar = (Toolbar)toolbarElement.Toolbar; NavigationPage.SetHasNavigationBar(tabbedPage, false); NavigationPage.SetHasNavigationBar(nonVisibleNavigationPage.CurrentPage, false); Assert.True(toolbar.IsVisible); NavigationPage.SetHasNavigationBar(visibleInnerNavigationPage.CurrentPage, false); Assert.False(toolbar.IsVisible); NavigationPage.SetHasNavigationBar(visibleInnerNavigationPage.CurrentPage, true); Assert.True(toolbar.IsVisible); }
public async Task TitleAndTitleViewAreMutuallyExclusive() { var window = new TestWindow(); IToolbarElement toolbarElement = window; var contentPage = new ContentPage() { Title = "Test Title" }; var navigationPage = new NavigationPage(contentPage); window.Page = navigationPage; var titleView = new VerticalStackLayout(); var toolbar = (Toolbar)toolbarElement.Toolbar; Assert.AreEqual("Test Title", toolbar.Title); NavigationPage.SetTitleView(contentPage, titleView); Assert.IsEmpty(toolbar.Title); Assert.AreEqual(titleView, toolbar.TitleView); NavigationPage.SetTitleView(contentPage, null); Assert.AreEqual("Test Title", toolbar.Title); }
internal void SetToolbarElement(IToolbarElement toolbarElement) { _toolbarElement = toolbarElement; }