Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        public void ToolbarEmptyForContentPage()
        {
            Window          window         = new Window();
            IToolbarElement toolbarElement = window;
            var             startingPage   = new ContentPage();

            window.Page = startingPage;
            Assert.IsNull(toolbarElement.Toolbar);
        }
Exemplo n.º 4
0
        public void ToolbarExistsForNavigationPage()
        {
            var             window         = new TestWindow();
            IToolbarElement toolbarElement = window;
            var             startingPage   = new NavigationPage(new ContentPage());

            window.Page = startingPage;
            Assert.IsNotNull(toolbarElement.Toolbar);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
 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;
 }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
 internal void SetToolbarElement(IToolbarElement toolbarElement)
 {
     _toolbarElement = toolbarElement;
 }