public async Task PopAfterTrackingStarted() { var tracker = new ToolbarTracker(); var toolbarItem1 = new ToolbarItem("Foo", "Foo.png", () => { }); var toolbarItem2 = new ToolbarItem("Foo", "Foo.png", () => { }); var page = new NavigationPage(new ContentPage()) { ToolbarItems = { toolbarItem1 } }; var firstPage = new ContentPage { ToolbarItems = { toolbarItem2 } }; tracker.Target = page; await page.Navigation.PushAsync(firstPage); Assert.True(tracker.ToolbarItems.Contains(toolbarItem1)); Assert.True(tracker.ToolbarItems.Contains(toolbarItem2)); await page.Navigation.PopAsync(); Assert.True(tracker.ToolbarItems.Contains(toolbarItem1)); Assert.False(tracker.ToolbarItems.Contains(toolbarItem2)); }
public void Constructor() { var tracker = new ToolbarTracker(); Assert.Null(tracker.Target); Assert.False(tracker.ToolbarItems.Any()); }
protected override void Dispose(bool disposing) { if (disposing) { Child.SendDisappearing(); _tracker.Target = null; _tracker.CollectionChanged -= TrackerOnCollectionChanged; _tracker = null; if (NavigationItem.RightBarButtonItems != null) { for (var i = 0; i < NavigationItem.RightBarButtonItems.Length; i++) { NavigationItem.RightBarButtonItems[i].Dispose(); } } if (ToolbarItems != null) { for (var i = 0; i < ToolbarItems.Length; i++) { ToolbarItems[i].Dispose(); } } } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (disposing) { ((IPageController)Child).SendDisappearing(); if (Child != null) { Child.PropertyChanged -= HandleChildPropertyChanged; Child = null; } _tracker.Target = null; _tracker.CollectionChanged -= TrackerOnCollectionChanged; _tracker = null; if (NavigationItem.RightBarButtonItems != null) { for (var i = 0; i < NavigationItem.RightBarButtonItems.Length; i++) { NavigationItem.RightBarButtonItems[i].Dispose(); } } if (ToolbarItems != null) { for (var i = 0; i < ToolbarItems.Length; i++) { ToolbarItems[i].Dispose(); } } } base.Dispose(disposing); }
public void AdditionalTargets() { var tracker = new ToolbarTracker(); var toolbarItem1 = new ToolbarItem("Foo", "Foo.png", () => { }); var toolbarItem2 = new ToolbarItem("Foo", "Foo.png", () => { }); var page = new ContentPage { ToolbarItems = { toolbarItem1 } }; var additionalPage = new ContentPage { ToolbarItems = { toolbarItem2 } }; tracker.Target = page; tracker.AdditionalTargets = new[] { additionalPage }; Assert.True(tracker.ToolbarItems.Contains(toolbarItem1)); Assert.True(tracker.ToolbarItems.Contains(toolbarItem2)); }
protected override void OnElementChanged(ElementChangedEventArgs <NavigationPage> e) { if (_naviFrame == null) { _naviFrame = new Naviframe(Forms.NativeParent); _naviFrame.PreserveContentOnPop = true; _naviFrame.DefaultBackButtonEnabled = false; _naviFrame.AnimationFinished += OnAnimationFinished; SetNativeView(_naviFrame); _naviItemMap = new Dictionary <Page, NaviItem>(); } if (_toolbarTracker == null) { _toolbarTracker = new ToolbarTracker(); _toolbarTracker.CollectionChanged += OnToolbarCollectionChanged; } if (e.OldElement != null) { var navigation = e.OldElement as INavigationPageController; navigation.PopRequested -= OnPopRequested; navigation.PopToRootRequested -= OnPopToRootRequested; navigation.PushRequested -= OnPushRequested; navigation.RemovePageRequested -= OnRemovePageRequested; navigation.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; var pageController = e.OldElement as IPageController; pageController.InternalChildren.CollectionChanged -= OnPageCollectionChanged; } if (e.NewElement != null) { var navigation = e.NewElement as INavigationPageController; navigation.PopRequested += OnPopRequested; navigation.PopToRootRequested += OnPopToRootRequested; navigation.PushRequested += OnPushRequested; navigation.RemovePageRequested += OnRemovePageRequested; navigation.InsertPageBeforeRequested += OnInsertPageBeforeRequested; var pageController = e.NewElement as IPageController; pageController.InternalChildren.CollectionChanged += OnPageCollectionChanged; foreach (Page page in pageController.InternalChildren) { _naviItemMap[page] = _naviFrame.Push(Platform.GetOrCreateRenderer(page).NativeView, SpanTitle(page.Title)); page.PropertyChanged += NavigationBarPropertyChangedHandler; UpdateHasNavigationBar(page); } _toolbarTracker.Target = e.NewElement; _previousPage = e.NewElement.CurrentPage; } base.OnElementChanged(e); }
public Platform(Windows.UI.Xaml.Controls.Page page) { _page = page; _renderer = new Canvas(); _renderer.SizeChanged += renderer_SizeChanged; NavigationService.Current.OnNewPage += Current_OnNewPage; _tracker = new ToolbarTracker(); _tracker.CollectionChanged += (s, e) => UpdateAppBar(); }
public void SimpleTrackEmpty () { var tracker = new ToolbarTracker (); var page = new ContentPage (); tracker.Target = page; Assert.False (tracker.ToolbarItems.Any ()); }
protected override void OnElementChanged(ElementChangedEventArgs <NavigationPage> e) { base.OnElementChanged(e); if (e.OldElement != null) { var oldNavController = (INavigationPageController)e.OldElement; oldNavController.PushRequested -= OnPushed; oldNavController.PopRequested -= OnPopped; oldNavController.PopToRootRequested -= OnPoppedToRoot; oldNavController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; oldNavController.RemovePageRequested -= OnRemovePageRequested; RemoveAllViews(); if (_toolbar != null) { AddView(_toolbar); } } if (e.NewElement != null) { if (_toolbarTracker == null) { SetupToolbar(); _toolbarTracker = new ToolbarTracker(); _toolbarTracker.CollectionChanged += ToolbarTrackerOnCollectionChanged; } var parents = new List <Page>(); Page root = Element; while (!Application.IsApplicationOrNull(root.RealParent)) { root = (Page)root.RealParent; parents.Add(root); } _toolbarTracker.Target = e.NewElement; _toolbarTracker.AdditionalTargets = parents; UpdateMenu(); var navController = (INavigationPageController)e.NewElement; navController.PushRequested += OnPushed; navController.PopRequested += OnPopped; navController.PopToRootRequested += OnPoppedToRoot; navController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; navController.RemovePageRequested += OnRemovePageRequested; // If there is already stuff on the stack we need to push it foreach (Page page in navController.Pages) { PushViewAsync(page, false); } } }
protected override void OnElementChanged(ElementChangedEventArgs <NavigationPage> e) { base.OnElementChanged(e); if (e.OldElement != null) { var oldNavController = (INavigationPageController)e.OldElement; oldNavController.PushRequested -= OnPushed; oldNavController.PopRequested -= OnPopped; oldNavController.PopToRootRequested -= OnPoppedToRoot; oldNavController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; oldNavController.RemovePageRequested -= OnRemovePageRequested; RemoveAllViews(); if (_toolbar != null) { AddView(_toolbar); } } if (e.NewElement != null) { if (_toolbarTracker == null) { SetupToolbar(); _toolbarTracker = new ToolbarTracker(); _toolbarTracker.CollectionChanged += ToolbarTrackerOnCollectionChanged; } var parents = new List <Page>(); Page root = Element; while (!Application.IsApplicationOrNull(root.RealParent)) { root = (Page)root.RealParent; parents.Add(root); } _toolbarTracker.Target = e.NewElement; _toolbarTracker.AdditionalTargets = parents; UpdateMenu(); var navController = (INavigationPageController)e.NewElement; navController.PushRequested += OnPushed; navController.PopRequested += OnPopped; navController.PopToRootRequested += OnPoppedToRoot; navController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; navController.RemovePageRequested += OnRemovePageRequested; if (_isAttachedToWindow && Element.IsAttachedToRoot()) { PushCurrentPages(); } } }
public void SimpleTrackEmpty() { var tracker = new ToolbarTracker(); var page = new ContentPage(); tracker.Target = page; Assert.False(tracker.ToolbarItems.Any()); }
public override void Connect(IView navigationView, NavigationLayout nativeView) { base.Connect(navigationView, nativeView); if (ToolbarTracker == null) { ToolbarTracker = new ToolbarTracker(); ToolbarTracker.CollectionChanged += ToolbarTrackerOnCollectionChanged; } ToolbarTracker.AdditionalTargets = NavigationView.GetParentPages(); }
protected override void Dispose(bool disposing) { _toolbarTracker.CollectionChanged -= toolbarCollectionChanged; Element.Pushed -= pagePusshed; Element.Popped -= pagePopped; _toolbar.SetNavigationOnClickListener(null); _navigationBackListener?.Dispose(); _navigationCustomListener?.Dispose(); _toolbar = null; _toolbarTracker = null; base.Dispose(disposing); }
public void SimpleTrackWithItems () { var tracker = new ToolbarTracker (); ToolbarItem item1, item2; var page = new ContentPage { ToolbarItems = { new ToolbarItem ("Foo", "Foo.png", () => {}), new ToolbarItem ("Bar", "Bar.png", () => {}) } }; tracker.Target = page; Assert.True (tracker.ToolbarItems.Contains (page.ToolbarItems[0])); Assert.True (tracker.ToolbarItems.Contains (page.ToolbarItems[1])); }
protected override void OnElementChanged(ElementChangedEventArgs <NavigationPage> e) { if (_naviFrame == null) { _naviFrame = new Naviframe(System.Maui.Maui.NativeParent); _naviFrame.PreserveContentOnPop = true; _naviFrame.DefaultBackButtonEnabled = false; _naviFrame.AnimationFinished += OnAnimationFinished; SetNativeView(_naviFrame); _naviItemMap = new Dictionary <Page, NaviItem>(); } if (_toolbarTracker == null) { _toolbarTracker = new ToolbarTracker(); _toolbarTracker.CollectionChanged += OnToolbarCollectionChanged; } if (e.OldElement != null) { var navigation = e.OldElement as INavigationPageController; navigation.PopRequested -= OnPopRequested; navigation.PopToRootRequested -= OnPopToRootRequested; navigation.PushRequested -= OnPushRequested; navigation.RemovePageRequested -= OnRemovePageRequested; navigation.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; var pageController = e.OldElement as IPageController; pageController.InternalChildren.CollectionChanged -= OnPageCollectionChanged; } if (e.NewElement != null) { var navigation = e.NewElement as INavigationPageController; navigation.PopRequested += OnPopRequested; navigation.PopToRootRequested += OnPopToRootRequested; navigation.PushRequested += OnPushRequested; navigation.RemovePageRequested += OnRemovePageRequested; navigation.InsertPageBeforeRequested += OnInsertPageBeforeRequested; _toolbarTracker.Target = e.NewElement; _previousPage = e.NewElement.CurrentPage; } base.OnElementChanged(e); }
public void SimpleTrackWithItems() { var tracker = new ToolbarTracker(); ToolbarItem item1, item2; var page = new ContentPage { ToolbarItems = { new ToolbarItem("Foo", "Foo.png", () => {}), new ToolbarItem("Bar", "Bar.png", () => {}) } }; tracker.Target = page; Assert.True(tracker.ToolbarItems.Contains(page.ToolbarItems[0])); Assert.True(tracker.ToolbarItems.Contains(page.ToolbarItems[1])); }
protected override void OnElementChanged(ElementChangedEventArgs <NavigationPage> e) { base.OnElementChanged(e); if (e.OldElement != null) { var oldNavController = (INavigationPageController)e.OldElement; oldNavController.PushRequested -= OnPushed; oldNavController.PopRequested -= OnPopped; oldNavController.PopToRootRequested -= OnPoppedToRoot; oldNavController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; oldNavController.RemovePageRequested -= OnRemovePageRequested; RemoveAllViews(); } if (e.NewElement != null) { if (_toolbarTracker == null) { SetupToolbar(); _toolbarTracker = new ToolbarTracker(); _toolbarTracker.CollectionChanged += ToolbarTrackerOnCollectionChanged; } _toolbarTracker.Target = e.NewElement; _toolbarTracker.AdditionalTargets = Element.GetParentPages(); UpdateMenu(); var navController = (INavigationPageController)e.NewElement; navController.PushRequested += OnPushed; navController.PopRequested += OnPopped; navController.PopToRootRequested += OnPoppedToRoot; navController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; navController.RemovePageRequested += OnRemovePageRequested; if (_isAttachedToWindow && Element.IsAttachedToRoot()) { PushCurrentPages(); } } }
public void TrackPreConstructedTabbedPage() { var tracker = new ToolbarTracker(); var toolbarItem1 = new ToolbarItem("Foo", "Foo.png", () => { }); var toolbarItem2 = new ToolbarItem("Foo", "Foo.png", () => { }); var toolbarItem3 = new ToolbarItem("Foo", "Foo.png", () => { }); var subPage1 = new ContentPage { ToolbarItems = { toolbarItem1 } }; var subPage2 = new ContentPage { ToolbarItems = { toolbarItem2, toolbarItem3 } }; var tabbedpage = new TabbedPage { Children = { subPage1, subPage2 } }; tabbedpage.CurrentPage = subPage1; tracker.Target = tabbedpage; Assert.True(tracker.ToolbarItems.Count() == 1); Assert.True(tracker.ToolbarItems.First() == subPage1.ToolbarItems[0]); bool changed = false; tracker.CollectionChanged += (sender, args) => changed = true; tabbedpage.CurrentPage = subPage2; Assert.True(tracker.ToolbarItems.Count() == 2); Assert.True(tracker.ToolbarItems.First() == subPage2.ToolbarItems[0]); Assert.True(tracker.ToolbarItems.Last() == subPage2.ToolbarItems[1]); }
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs <NavigationPage> e) { base.OnElementChanged(e); if (e.OldElement != null) { _toolbarTracker.CollectionChanged -= toolbarCollectionChanged; Element.Pushed -= pagePusshed; Element.Popped -= pagePopped; } if (e.NewElement != null) { var fieldInfo = typeof(NavigationPageRenderer).GetField("_toolbarTracker", BindingFlags.Instance | BindingFlags.NonPublic); _toolbarTracker = (ToolbarTracker)fieldInfo.GetValue(this); fieldInfo = typeof(NavigationPageRenderer).GetField("_toolbar", BindingFlags.Instance | BindingFlags.NonPublic); _toolbar = (Toolbar)fieldInfo.GetValue(this); _toolbarTracker.CollectionChanged += toolbarCollectionChanged; _toolbar.SetTitleTextColor(ForeColor); _toolbar.SetSubtitleTextColor(ForeColor); Element.Pushed += pagePusshed; Element.Popped += pagePopped; _navigationBackListener = new NavigationIconBack(Element); UpdateMenu(); if (Element.Parent is Xamarin.Forms.Application) { var statusBarColor = (Element as NavigationPageEx).StatusBarBackColor; if (statusBarColor != Xamarin.Forms.Color.Default) { (Context as FormsAppCompatActivity).Window.SetStatusBarColor(statusBarColor.ToAndroid()); } } } }
public void UnsetTarget() { var tracker = new ToolbarTracker(); ToolbarItem item1, item2; var page = new ContentPage { ToolbarItems = { new ToolbarItem("Foo", "Foo.png", () => {}), new ToolbarItem("Bar", "Bar.png", () => {}) } }; tracker.Target = page; Assert.True(tracker.ToolbarItems.Count() == 2); tracker.Target = null; Assert.False(tracker.ToolbarItems.Any()); }
public void TrackPreConstructedTabbedPage () { var tracker = new ToolbarTracker (); var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { }); var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { }); var toolbarItem3 = new ToolbarItem ("Foo", "Foo.png", () => { }); var subPage1 = new ContentPage { ToolbarItems = {toolbarItem1} }; var subPage2 = new ContentPage { ToolbarItems = {toolbarItem2, toolbarItem3} }; var tabbedpage = new TabbedPage { Children = { subPage1, subPage2 } }; tabbedpage.CurrentPage = subPage1; tracker.Target = tabbedpage; Assert.True (tracker.ToolbarItems.Count () == 1); Assert.True (tracker.ToolbarItems.First () == subPage1.ToolbarItems[0]); bool changed = false; tracker.CollectionChanged += (sender, args) => changed = true; tabbedpage.CurrentPage = subPage2; Assert.True (tracker.ToolbarItems.Count () == 2); Assert.True (tracker.ToolbarItems.First () == subPage2.ToolbarItems[0]); Assert.True (tracker.ToolbarItems.Last () == subPage2.ToolbarItems[1]); }
protected override void Dispose(bool disposing) { if (_disposed) { return; } _disposed = true; if (disposing) { DeviceDisplay.MainDisplayInfoChanged -= DeviceInfoPropertyChanged; if (NavigationPageController != null) { var navController = NavigationPageController; navController.PushRequested -= OnPushed; navController.PopRequested -= OnPopped; navController.PopToRootRequested -= OnPoppedToRoot; navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; navController.RemovePageRequested -= OnRemovePageRequested; } if (Current != null) { Current.PropertyChanged -= CurrentOnPropertyChanged; } FragmentManager fm = FragmentManager; if (!fm.IsDestroyed) { FragmentTransaction trans = fm.BeginTransactionEx(); foreach (Fragment fragment in _fragmentStack) { trans.RemoveEx(fragment); } trans.CommitAllowingStateLossEx(); fm.ExecutePendingTransactionsEx(); } _toolbar.RemoveView(_titleView); _titleView?.Dispose(); _titleView = null; if (_titleViewRenderer != null) { Platform.ClearRenderer(_titleViewRenderer.View); _titleViewRenderer.Dispose(); _titleViewRenderer = null; } _toolbar.RemoveView(_titleIconView); _titleIconView?.Dispose(); _titleIconView = null; _imageSource = null; if (_toolbarTracker != null) { _toolbarTracker.CollectionChanged -= ToolbarTrackerOnCollectionChanged; _toolbar.DisposeMenuItems(_currentToolbarItems, OnToolbarItemPropertyChanged); _toolbarTracker.Target = null; _toolbarTracker = null; } if (_currentMenuItems != null) { _currentMenuItems.Clear(); _currentMenuItems = null; } if (_currentToolbarItems != null) { _currentToolbarItems.Clear(); _currentToolbarItems = null; } if (_toolbar != null) { _toolbar.SetNavigationOnClickListener(null); _toolbar.Menu.Clear(); RemoveView(_toolbar); _toolbar.Dispose(); _toolbar = null; } if (_drawerLayout.IsAlive() && _drawerListener.IsAlive()) { _drawerLayout.RemoveDrawerListener(_drawerListener); RemoveView(_drawerLayout); } if (_drawerListener != null) { _drawerListener.Dispose(); _drawerListener = null; } if (_drawerToggle != null) { _drawerToggle.ToolbarNavigationClickListener = null; _drawerToggle.Dispose(); _drawerToggle = null; } if (_backgroundDrawable != null) { _backgroundDrawable.Dispose(); _backgroundDrawable = null; } Current = null; // We dispose the child renderers after cleaning up everything related to DrawerLayout in case // one of the children is a FlyoutPage (which may dispose of the DrawerLayout). if (Element != null) { foreach (Element element in PageController.InternalChildren) { var child = element as VisualElement; if (child == null) { continue; } IVisualElementRenderer renderer = Platform.GetRenderer(child); renderer?.Dispose(); } } } base.Dispose(disposing); }
public void Constructor () { var tracker = new ToolbarTracker (); Assert.Null (tracker.Target); Assert.False (tracker.ToolbarItems.Any ()); }
protected override void Dispose(bool disposing) { if (disposing && !_disposed) { _disposed = true; if (_titleViewRenderer != null) { Android.Platform.ClearRenderer(_titleViewRenderer.View); _titleViewRenderer.Dispose(); _titleViewRenderer = null; } _toolbar.RemoveView(_titleView); _titleView?.Dispose(); _titleView = null; _toolbar.RemoveView(_titleIconView); _titleIconView?.Dispose(); _titleIconView = null; _imageSource = null; if (_toolbarTracker != null) { _toolbarTracker.CollectionChanged -= ToolbarTrackerOnCollectionChanged; _toolbarTracker.Target = null; _toolbarTracker = null; } if (_toolbar != null) { _toolbar.SetNavigationOnClickListener(null); _toolbar.Dispose(); _toolbar = null; } if (_drawerLayout != null && _drawerListener != null) { _drawerLayout.RemoveDrawerListener(_drawerListener); } if (_drawerListener != null) { _drawerListener.Dispose(); _drawerListener = null; } if (_drawerToggle != null) { _drawerToggle.Dispose(); _drawerToggle = null; } if (_backgroundDrawable != null) { _backgroundDrawable.Dispose(); _backgroundDrawable = null; } Current = null; // We dispose the child renderers after cleaning up everything related to DrawerLayout in case // one of the children is a MasterDetailPage (which may dispose of the DrawerLayout). if (Element != null) { foreach (Element element in PageController.InternalChildren) { var child = element as VisualElement; if (child == null) { continue; } IVisualElementRenderer renderer = Android.Platform.GetRenderer(child); renderer?.Dispose(); } var navController = NavigationPageController; navController.PushRequested -= OnPushed; navController.PopRequested -= OnPopped; navController.PopToRootRequested -= OnPoppedToRoot; navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; navController.RemovePageRequested -= OnRemovePageRequested; } Device.Info.PropertyChanged -= DeviceInfoPropertyChanged; // API only exists on newer android YAY if ((int)Build.VERSION.SdkInt >= 17) { FragmentManager fm = FragmentManager; if (!fm.IsDestroyed) { FragmentTransaction trans = fm.BeginTransactionEx(); foreach (Fragment fragment in _fragmentStack) { trans.RemoveEx(fragment); } trans.CommitAllowingStateLossEx(); fm.ExecutePendingTransactionsEx(); } } } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (disposing && !_disposed) { _disposed = true; var activity = (FormsAppCompatActivity)Context; // API only exists on newer android YAY if ((int)Build.VERSION.SdkInt >= 17) { if (!activity.IsDestroyed) { FragmentManager fm = FragmentManager; FragmentTransaction trans = fm.BeginTransaction(); foreach (Fragment fragment in _fragmentStack) { trans.Remove(fragment); } trans.CommitAllowingStateLoss(); fm.ExecutePendingTransactions(); } } if (Element != null) { for (var i = 0; i < Element.InternalChildren.Count; i++) { var child = Element.InternalChildren[i] as VisualElement; if (child == null) { continue; } IVisualElementRenderer renderer = Android.Platform.GetRenderer(child); renderer?.Dispose(); } Element.PushRequested -= OnPushed; Element.PopRequested -= OnPopped; Element.PopToRootRequested -= OnPoppedToRoot; Element.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; Element.RemovePageRequested -= OnRemovePageRequested; Element.SendDisappearing(); } if (_toolbarTracker != null) { _toolbarTracker.CollectionChanged -= ToolbarTrackerOnCollectionChanged; _toolbarTracker.Target = null; _toolbarTracker = null; } if (_toolbar != null) { _toolbar.NavigationClick -= BarOnNavigationClick; _toolbar.Dispose(); _toolbar = null; } Current = null; Device.Info.PropertyChanged -= DeviceInfoPropertyChanged; } base.Dispose(disposing); }
public async Task PopAfterTrackingStarted () { var tracker = new ToolbarTracker (); var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { }); var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { }); var page = new NavigationPage (new ContentPage ()) { ToolbarItems = { toolbarItem1 } }; var firstPage = new ContentPage { ToolbarItems = { toolbarItem2 } }; tracker.Target = page; await page.Navigation.PushAsync (firstPage); Assert.True (tracker.ToolbarItems.Contains (toolbarItem1)); Assert.True (tracker.ToolbarItems.Contains (toolbarItem2)); await page.Navigation.PopAsync (); Assert.True (tracker.ToolbarItems.Contains (toolbarItem1)); Assert.False (tracker.ToolbarItems.Contains (toolbarItem2)); }
public void UnsetTarget () { var tracker = new ToolbarTracker (); ToolbarItem item1, item2; var page = new ContentPage { ToolbarItems = { new ToolbarItem ("Foo", "Foo.png", () => {}), new ToolbarItem ("Bar", "Bar.png", () => {}) } }; tracker.Target = page; Assert.True (tracker.ToolbarItems.Count () == 2); tracker.Target = null; Assert.False (tracker.ToolbarItems.Any ()); }
public GtkToolbarTracker() { _toolbarTracker = new ToolbarTracker(); _toolbarTracker.CollectionChanged += ToolbarTrackerOnCollectionChanged; }
public void AdditionalTargets () { var tracker = new ToolbarTracker (); var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { }); var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { }); var page = new ContentPage { ToolbarItems = { toolbarItem1 } }; var additionalPage = new ContentPage { ToolbarItems = {toolbarItem2} }; tracker.Target = page; tracker.AdditionalTargets = new[] {additionalPage}; Assert.True (tracker.ToolbarItems.Contains (toolbarItem1)); Assert.True (tracker.ToolbarItems.Contains (toolbarItem2)); }