summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/AppCompat
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2016-06-16 09:45:09 -0600
committerRui Marinho <me@ruimarinho.net>2016-06-16 16:45:09 +0100
commitd5be2f0144ca810fdfbf59808d526c26fe86017e (patch)
tree3ad7e4465307cd6d633184e05d85eb3a4df59e01 /Xamarin.Forms.Platform.Android/AppCompat
parent04f7bd296ee67af9189ecd7fdfbd2808ca16ce9a (diff)
downloadxamarin-forms-d5be2f0144ca810fdfbf59808d526c26fe86017e.tar.gz
xamarin-forms-d5be2f0144ca810fdfbf59808d526c26fe86017e.tar.bz2
xamarin-forms-d5be2f0144ca810fdfbf59808d526c26fe86017e.zip
Prep Page for removal of InternalsVisibleTo (#150)
Diffstat (limited to 'Xamarin.Forms.Platform.Android/AppCompat')
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/CarouselPageRenderer.cs14
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/FragmentContainer.cs14
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/MasterDetailPageRenderer.cs16
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs18
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/Platform.cs12
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs28
7 files changed, 59 insertions, 45 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/CarouselPageRenderer.cs
index a42d2863..fb6d5b55 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/CarouselPageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/CarouselPageRenderer.cs
@@ -24,6 +24,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
{
}
+ IPageController PageController => Element as IPageController;
+
void ViewPager.IOnPageChangeListener.OnPageSelected(int position)
{
Element.CurrentPage = Element.Children[position];
@@ -54,7 +56,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
if (Element != null)
- Element.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
+ PageController.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
}
base.Dispose(disposing);
@@ -63,13 +65,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
- Element.SendAppearing();
+ PageController.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
- Element.SendDisappearing();
+ PageController.SendDisappearing();
}
protected override void OnElementChanged(ElementChangedEventArgs<CarouselPage> e)
@@ -79,7 +81,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
var activity = (FormsAppCompatActivity)Context;
if (e.OldElement != null)
- e.OldElement.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
+ ((IPageController)e.OldElement).InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
if (e.NewElement != null)
{
@@ -100,7 +102,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (carouselPage.CurrentPage != null)
ScrollToCurrentPage();
- carouselPage.InternalChildren.CollectionChanged += OnChildrenCollectionChanged;
+ ((IPageController)carouselPage).InternalChildren.CollectionChanged += OnChildrenCollectionChanged;
}
}
@@ -123,7 +125,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (width > 0 && height > 0)
{
- Element.ContainerArea = new Rectangle(0, 0, context.FromPixels(width), context.FromPixels(height));
+ PageController.ContainerArea = new Rectangle(0, 0, context.FromPixels(width), context.FromPixels(height));
pager.Layout(0, 0, width, b);
}
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/FragmentContainer.cs b/Xamarin.Forms.Platform.Android/AppCompat/FragmentContainer.cs
index cc35b1a3..34abfda8 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/FragmentContainer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/FragmentContainer.cs
@@ -31,6 +31,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
public Page Page => (Page)_pageReference?.Target;
+ IPageController PageController => Page as IPageController;
+
public override bool UserVisibleHint
{
get { return base.UserVisibleHint; }
@@ -41,9 +43,9 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
return;
_isVisible = value;
if (_isVisible.Value)
- Page?.SendAppearing();
+ PageController?.SendAppearing();
else
- Page?.SendDisappearing();
+ PageController?.SendDisappearing();
}
}
@@ -106,20 +108,20 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
return;
if (hidden)
- Page.SendDisappearing();
+ PageController.SendDisappearing();
else
- Page.SendAppearing();
+ PageController.SendAppearing();
}
public override void OnPause()
{
- Page?.SendDisappearing();
+ PageController?.SendDisappearing();
base.OnPause();
}
public override void OnResume()
{
- Page?.SendAppearing();
+ PageController?.SendAppearing();
base.OnResume();
}
}
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs
index c2dd8e69..b57233ba 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/FrameRenderer.cs
@@ -182,7 +182,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (Element == null)
return;
- var children = Element.LogicalChildren;
+ var children = ((IElementController)Element).LogicalChildren;
for (var i = 0; i < children.Count; i++)
{
var visualElement = children[i] as VisualElement;
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailPageRenderer.cs
index 0173f485..18153218 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailPageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailPageRenderer.cs
@@ -51,6 +51,10 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
}
+ IPageController MasterPageController => Element.Master as IPageController;
+ IPageController DetailPageController => Element.Detail as IPageController;
+ IPageController PageController => Element as IPageController;
+
void IDrawerListener.OnDrawerClosed(global::Android.Views.View drawerView)
{
}
@@ -212,13 +216,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
- Element.SendAppearing();
+ PageController.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
- Element.SendDisappearing();
+ PageController.SendDisappearing();
}
protected virtual void OnElementChanged(VisualElement oldElement, VisualElement newElement)
@@ -279,14 +283,14 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
void MasterDetailPageAppearing(object sender, EventArgs e)
{
- Element.Master?.SendAppearing();
- Element.Detail?.SendAppearing();
+ MasterPageController?.SendAppearing();
+ DetailPageController?.SendAppearing();
}
void MasterDetailPageDisappearing(object sender, EventArgs e)
{
- Element.Master?.SendDisappearing();
- Element.Detail?.SendDisappearing();
+ MasterPageController?.SendDisappearing();
+ DetailPageController?.SendDisappearing();
}
void OnBackButtonPressed(object sender, BackButtonPressedEventArgs backButtonPressedEventArgs)
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
index 1132c8fa..277be331 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
@@ -73,6 +73,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
FragmentManager FragmentManager => _fragmentManager ?? (_fragmentManager = ((FormsAppCompatActivity)Context).SupportFragmentManager);
+ IPageController PageController => Element as IPageController;
+
bool ToolbarVisible
{
get { return _toolbarVisible; }
@@ -130,9 +132,9 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (Element != null)
{
- for (var i = 0; i < Element.InternalChildren.Count; i++)
+ for (var i = 0; i < PageController.InternalChildren.Count; i++)
{
- var child = Element.InternalChildren[i] as VisualElement;
+ var child = PageController.InternalChildren[i] as VisualElement;
if (child == null)
continue;
IVisualElementRenderer renderer = Android.Platform.GetRenderer(child);
@@ -146,7 +148,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
navController.PopToRootRequested -= OnPoppedToRoot;
navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested;
navController.RemovePageRequested -= OnRemovePageRequested;
- Element.SendDisappearing();
+ PageController.SendDisappearing();
}
if (_toolbarTracker != null)
@@ -174,7 +176,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
- Element.SendAppearing();
+ PageController.SendAppearing();
_fragmentStack.Last().UserVisibleHint = true;
RegisterToolbar();
UpdateToolbar();
@@ -183,7 +185,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
- Element.SendDisappearing();
+ PageController.SendDisappearing();
}
protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
@@ -272,7 +274,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
int containerHeight = ToolbarVisible ? internalHeight : b - t;
containerHeight -= ContainerPadding;
- Element.ContainerArea = new Rectangle(0, 0, Context.FromPixels(r - l), Context.FromPixels(containerHeight));
+ PageController.ContainerArea = new Rectangle(0, 0, Context.FromPixels(r - l), Context.FromPixels(containerHeight));
// Potential for optimization here, the exact conditions by which you don't need to do this are complex
// and the cost of doing when it's not needed is moderate to low since the layout will short circuit pretty fast
Element.ForceLayout();
@@ -393,7 +395,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
{
UpdateToolbar();
- int index = Element.InternalChildren.IndexOf(before);
+ int index = PageController.InternalChildren.IndexOf(before);
if (index == -1)
throw new InvalidOperationException("This should never happen, please file a bug");
@@ -464,7 +466,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (masterDetailPage == null)
{
- masterDetailPage = Element.InternalChildren[0] as MasterDetailPage;
+ masterDetailPage = PageController.InternalChildren[0] as MasterDetailPage;
if (masterDetailPage == null)
return;
}
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/Platform.cs b/Xamarin.Forms.Platform.Android/AppCompat/Platform.cs
index 01e8dcc1..0bad79b1 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/Platform.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/Platform.cs
@@ -41,6 +41,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
Page Page { get; set; }
+ IPageController CurrentPageController => _navModel.CurrentPage as IPageController;
+
public void Dispose()
{
if (_disposed)
@@ -79,7 +81,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
Task<Page> INavigation.PopModalAsync(bool animated)
{
Page modal = _navModel.PopModal();
- modal.SendDisappearing();
+ ((IPageController)modal).SendDisappearing();
var source = new TaskCompletionSource<Page>();
IVisualElementRenderer modalRenderer = Android.Platform.GetRenderer(modal);
@@ -95,7 +97,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
modalContainer.RemoveFromParent();
modalContainer.Dispose();
source.TrySetResult(modal);
- _navModel.CurrentPage?.SendAppearing();
+ CurrentPageController?.SendAppearing();
modalContainer = null;
}
});
@@ -105,7 +107,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
modalContainer.RemoveFromParent();
modalContainer.Dispose();
source.TrySetResult(modal);
- _navModel.CurrentPage?.SendAppearing();
+ CurrentPageController?.SendAppearing();
}
}
@@ -139,7 +141,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
async Task INavigation.PushModalAsync(Page modal, bool animated)
{
- _navModel.CurrentPage?.SendDisappearing();
+ CurrentPageController?.SendDisappearing();
_navModel.PushModal(modal);
@@ -151,7 +153,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
// Verify that the modal is still on the stack
if (_navModel.CurrentPage == modal)
- modal.SendAppearing();
+ ((IPageController)modal).SendAppearing();
}
void INavigation.RemovePage(Page page)
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs
index 4bd54906..243e5c14 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs
@@ -44,6 +44,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
}
+ IPageController PageController => Element as IPageController;
+
void IManageFragments.SetFragmentManager(FragmentManager childFragmentManager)
{
if (_fragmentManager == null)
@@ -114,7 +116,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
if (Element != null)
- Element.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
+ PageController.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
}
base.Dispose(disposing);
@@ -123,13 +125,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
- Element.SendAppearing();
+ PageController.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
- Element.SendDisappearing();
+ PageController.SendDisappearing();
}
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
@@ -139,7 +141,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
var activity = (FormsAppCompatActivity)Context;
if (e.OldElement != null)
- e.OldElement.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
+ ((IPageController)e.OldElement).InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
if (e.NewElement != null)
{
@@ -177,7 +179,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
ScrollToCurrentPage();
UpdateIgnoreContainerAreas();
- tabbedPage.InternalChildren.CollectionChanged += OnChildrenCollectionChanged;
+ ((IPageController)tabbedPage).InternalChildren.CollectionChanged += OnChildrenCollectionChanged;
UpdateBarBackgroundColor();
UpdateBarTextColor();
}
@@ -216,11 +218,11 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (width > 0 && height > 0)
{
- Element.ContainerArea = new Rectangle(0, context.FromPixels(tabsHeight), context.FromPixels(width), context.FromPixels(height - tabsHeight));
+ PageController.ContainerArea = new Rectangle(0, context.FromPixels(tabsHeight), context.FromPixels(width), context.FromPixels(height - tabsHeight));
- for (var i = 0; i < Element.InternalChildren.Count; i++)
+ for (var i = 0; i < PageController.InternalChildren.Count; i++)
{
- var child = Element.InternalChildren[i] as VisualElement;
+ var child = PageController.InternalChildren[i] as VisualElement;
if (child == null)
continue;
IVisualElementRenderer renderer = Android.Platform.GetRenderer(child);
@@ -267,7 +269,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
void UpdateIgnoreContainerAreas()
{
- foreach (Page child in Element.Children)
+ foreach (IPageController child in Element.Children)
child.IgnoresContainerArea = child is NavigationPage;
}
@@ -275,16 +277,16 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
{
TabLayout tabs = _tabLayout;
- if (position >= Element.InternalChildren.Count)
+ if (position >= PageController.InternalChildren.Count)
return;
- var leftPage = (Page)Element.InternalChildren[position];
+ var leftPage = (Page)PageController.InternalChildren[position];
IVisualElementRenderer leftRenderer = Android.Platform.GetRenderer(leftPage);
if (leftRenderer == null)
return;
- if (offset <= 0 || position >= Element.InternalChildren.Count - 1)
+ if (offset <= 0 || position >= PageController.InternalChildren.Count - 1)
{
var leftNavRenderer = leftRenderer as NavigationPageRenderer;
if (leftNavRenderer != null)
@@ -294,7 +296,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
else
{
- var rightPage = (Page)Element.InternalChildren[position + 1];
+ var rightPage = (Page)PageController.InternalChildren[position + 1];
IVisualElementRenderer rightRenderer = Android.Platform.GetRenderer(rightPage);
var leftHeight = 0;