diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-05-04 08:22:34 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-05-04 15:22:34 +0100 |
commit | a8acdcc11793c9f44098f2cd478d51677d742945 (patch) | |
tree | 811cf1ee2e2ff0baa8674f116b6b5c08590f56cf /Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs | |
parent | 8d383746caab00dd3ee0b62dc992a2a99c7a6d06 (diff) | |
download | xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.tar.gz xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.tar.bz2 xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.zip |
Add IMasterDetailPageController and update renderers (#146)
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs index a9157118..09c0c7c7 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs @@ -24,6 +24,8 @@ namespace Xamarin.Forms.Platform.Android { } + IMasterDetailPageController MasterDetailPageController => _page as IMasterDetailPageController; + public bool Presented { get { return _presented; } @@ -33,7 +35,7 @@ namespace Xamarin.Forms.Platform.Android return; UpdateSplitViewLayout(); _presented = value; - if (_page.MasterBehavior == MasterBehavior.Default && _page.ShouldShowSplitMode) + if (_page.MasterBehavior == MasterBehavior.Default && MasterDetailPageController.ShouldShowSplitMode) return; if (_presented) OpenDrawer(_masterLayout); @@ -99,10 +101,10 @@ namespace Xamarin.Forms.Platform.Android OnElementChanged(oldElement, element); if (oldElement != null) - oldElement.BackButtonPressed -= OnBackButtonPressed; + ((IMasterDetailPageController)oldElement).BackButtonPressed -= OnBackButtonPressed; if (_page != null) - _page.BackButtonPressed += OnBackButtonPressed; + MasterDetailPageController.BackButtonPressed += OnBackButtonPressed; if (Tracker == null) Tracker = new VisualElementTracker(this); @@ -167,7 +169,7 @@ namespace Xamarin.Forms.Platform.Android if (_page != null) { - _page.BackButtonPressed -= OnBackButtonPressed; + MasterDetailPageController.BackButtonPressed -= OnBackButtonPressed; _page.PropertyChanged -= HandlePropertyChanged; _page.Appearing -= MasterDetailPageAppearing; _page.Disappearing -= MasterDetailPageDisappearing; @@ -202,7 +204,7 @@ namespace Xamarin.Forms.Platform.Android { base.OnLayout(changed, l, t, r, b); //hack to make the split layout handle touches the full width - if (_page.ShouldShowSplitMode && _masterLayout != null) + if (MasterDetailPageController.ShouldShowSplitMode && _masterLayout != null) _masterLayout.Right = r; } @@ -210,9 +212,9 @@ namespace Xamarin.Forms.Platform.Android { if (e.PropertyName == "CurrentOrientation") { - if (!_page.ShouldShowSplitMode && Presented) + if (!MasterDetailPageController.ShouldShowSplitMode && Presented) { - _page.CanChangeIsPresented = true; + MasterDetailPageController.CanChangeIsPresented = true; //hack : when the orientation changes and we try to close the Master on Android //sometimes Android picks the width of the screen previous to the rotation //this leaves a little of the master visible, the hack is to delay for 50ms closing the drawer @@ -335,7 +337,8 @@ namespace Xamarin.Forms.Platform.Android { if (Device.Idiom == TargetIdiom.Tablet) { - bool isShowingSplit = _page.ShouldShowSplitMode || (_page.ShouldShowSplitMode && _page.MasterBehavior != MasterBehavior.Default && _page.IsPresented); + bool isShowingSplit = MasterDetailPageController.ShouldShowSplitMode + || (MasterDetailPageController.ShouldShowSplitMode && _page.MasterBehavior != MasterBehavior.Default && _page.IsPresented); SetLockMode(isShowingSplit ? LockModeLockedOpen : LockModeUnlocked); unchecked { |