summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2016-05-04 08:22:34 -0600
committerRui Marinho <me@ruimarinho.net>2016-05-04 15:22:34 +0100
commita8acdcc11793c9f44098f2cd478d51677d742945 (patch)
tree811cf1ee2e2ff0baa8674f116b6b5c08590f56cf /Xamarin.Forms.Core
parent8d383746caab00dd3ee0b62dc992a2a99c7a6d06 (diff)
downloadxamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.tar.gz
xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.tar.bz2
xamarin-forms-a8acdcc11793c9f44098f2cd478d51677d742945.zip
Add IMasterDetailPageController and update renderers (#146)
Diffstat (limited to 'Xamarin.Forms.Core')
-rw-r--r--Xamarin.Forms.Core/IMasterDetailPageController.cs19
-rw-r--r--Xamarin.Forms.Core/MasterDetailPage.cs32
-rw-r--r--Xamarin.Forms.Core/Xamarin.Forms.Core.csproj1
3 files changed, 41 insertions, 11 deletions
diff --git a/Xamarin.Forms.Core/IMasterDetailPageController.cs b/Xamarin.Forms.Core/IMasterDetailPageController.cs
new file mode 100644
index 00000000..1aa019cb
--- /dev/null
+++ b/Xamarin.Forms.Core/IMasterDetailPageController.cs
@@ -0,0 +1,19 @@
+using System;
+
+namespace Xamarin.Forms
+{
+ public interface IMasterDetailPageController
+ {
+ bool CanChangeIsPresented { get; set; }
+
+ Rectangle DetailBounds { get; set; }
+
+ Rectangle MasterBounds { get; set; }
+
+ bool ShouldShowSplitMode { get; }
+
+ void UpdateMasterBehavior();
+
+ event EventHandler<BackButtonPressedEventArgs> BackButtonPressed;
+ }
+} \ No newline at end of file
diff --git a/Xamarin.Forms.Core/MasterDetailPage.cs b/Xamarin.Forms.Core/MasterDetailPage.cs
index a0849aa4..6885ecef 100644
--- a/Xamarin.Forms.Core/MasterDetailPage.cs
+++ b/Xamarin.Forms.Core/MasterDetailPage.cs
@@ -4,7 +4,7 @@ using Xamarin.Forms.Platform;
namespace Xamarin.Forms
{
[RenderWith(typeof(_MasterDetailPageRenderer))]
- public class MasterDetailPage : Page
+ public class MasterDetailPage : Page, IMasterDetailPageController
{
public static readonly BindableProperty IsGestureEnabledProperty = BindableProperty.Create("IsGestureEnabled", typeof(bool), typeof(MasterDetailPage), true);
@@ -89,9 +89,9 @@ namespace Xamarin.Forms
set { SetValue(MasterBehaviorProperty, value); }
}
- internal bool CanChangeIsPresented { get; set; } = true;
+ bool IMasterDetailPageController.CanChangeIsPresented { get; set; } = true;
- internal Rectangle DetailBounds
+ Rectangle IMasterDetailPageController.DetailBounds
{
get { return _detailBounds; }
set
@@ -103,7 +103,7 @@ namespace Xamarin.Forms
}
}
- internal Rectangle MasterBounds
+ Rectangle IMasterDetailPageController.MasterBounds
{
get { return _masterBounds; }
set
@@ -115,7 +115,7 @@ namespace Xamarin.Forms
}
}
- internal bool ShouldShowSplitMode
+ bool IMasterDetailPageController.ShouldShowSplitMode
{
get
{
@@ -156,7 +156,7 @@ namespace Xamarin.Forms
protected override void OnAppearing()
{
- CanChangeIsPresented = true;
+ ((IMasterDetailPageController)this).CanChangeIsPresented = true;
UpdateMasterBehavior(this);
base.OnAppearing();
}
@@ -169,7 +169,7 @@ namespace Xamarin.Forms
return true;
}
- EventHandler<BackButtonPressedEventArgs> handler = BackButtonPressed;
+ EventHandler<BackButtonPressedEventArgs> handler = BackButtonPressedInternal;
if (handler != null)
{
var args = new BackButtonPressedEventArgs();
@@ -193,15 +193,25 @@ namespace Xamarin.Forms
base.OnParentSet();
}
- internal event EventHandler<BackButtonPressedEventArgs> BackButtonPressed;
+ event EventHandler<BackButtonPressedEventArgs> BackButtonPressedInternal;
+ event EventHandler<BackButtonPressedEventArgs> IMasterDetailPageController.BackButtonPressed
+ {
+ add { BackButtonPressedInternal += value; }
+ remove { BackButtonPressedInternal -= value; }
+ }
+
+ void IMasterDetailPageController.UpdateMasterBehavior()
+ {
+ UpdateMasterBehavior(this);
+ }
internal static void UpdateMasterBehavior(MasterDetailPage page)
{
- if (page.ShouldShowSplitMode)
+ if (((IMasterDetailPageController)page).ShouldShowSplitMode)
{
page.SetValueCore(IsPresentedProperty, true);
if (page.MasterBehavior != MasterBehavior.Default)
- page.CanChangeIsPresented = false;
+ ((IMasterDetailPageController)page).CanChangeIsPresented = false;
}
}
@@ -216,7 +226,7 @@ namespace Xamarin.Forms
static void OnIsPresentedPropertyChanging(BindableObject sender, object oldValue, object newValue)
{
var page = (MasterDetailPage)sender;
- if (!page.CanChangeIsPresented)
+ if (!((IMasterDetailPageController)page).CanChangeIsPresented)
throw new InvalidOperationException(string.Format("Can't change IsPresented when setting {0}", page.MasterBehavior));
}
diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
index 32cd9b88..1c11517a 100644
--- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
+++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
@@ -95,6 +95,7 @@
<Compile Include="IEntryController.cs" />
<Compile Include="IImageController.cs" />
<Compile Include="INavigationPageController.cs" />
+ <Compile Include="IMasterDetailPageController.cs" />
<Compile Include="Internals\EvalRequested.cs" />
<Compile Include="ExportEffectAttribute.cs" />
<Compile Include="ExpressionSearch.cs" />