summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.ControlGallery.MacOS/AppDelegate.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.ControlGallery.MacOS/AppDelegate.cs')
-rw-r--r--Xamarin.Forms.ControlGallery.MacOS/AppDelegate.cs246
1 files changed, 0 insertions, 246 deletions
diff --git a/Xamarin.Forms.ControlGallery.MacOS/AppDelegate.cs b/Xamarin.Forms.ControlGallery.MacOS/AppDelegate.cs
deleted file mode 100644
index ac4940df..00000000
--- a/Xamarin.Forms.ControlGallery.MacOS/AppDelegate.cs
+++ /dev/null
@@ -1,246 +0,0 @@
-using System;
-using System.Globalization;
-using AppKit;
-using CoreGraphics;
-using Foundation;
-using Xamarin.Forms.Controls;
-using Xamarin.Forms.Controls.Issues;
-using Xamarin.Forms.Platform.MacOS;
-
-namespace Xamarin.Forms.ControlGallery.MacOS
-{
- [Register("AppDelegate")]
- public class AppDelegate : FormsApplicationDelegate
- {
-
- NSWindow _window;
- public AppDelegate()
- {
- ObjCRuntime.Runtime.MarshalManagedException += (sender, args) =>
- {
- Console.WriteLine(args.Exception.ToString());
- };
-
- var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;
-
- var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
- //var rect = NSWindow.FrameRectFor(NSScreen.MainScreen.Frame, style);
- _window = new NSWindow(rect, style, NSBackingStore.Buffered, false);
- _window.Title = "Twitter XF Mac";
- _window.TitleVisibility = NSWindowTitleVisibility.Hidden;
- }
-
- public override NSWindow MainWindow
- {
- get { return _window; }
- }
-
- public override void DidFinishLaunching(NSNotification notification)
- {
- Forms.Init();
- FormsMaps.Init();
-
- var app = new App();
- // When the native control gallery loads up, it'll let us know so we can add the nested native controls
- MessagingCenter.Subscribe<NestedNativeControlGalleryPage>(this, NestedNativeControlGalleryPage.ReadyForNativeControlsMessage, AddNativeControls);
- MessagingCenter.Subscribe<Bugzilla40911>(this, Bugzilla40911.ReadyToSetUp40911Test, SetUp40911Test);
-
- // When the native binding gallery loads up, it'll let us know so we can set up the native bindings
- MessagingCenter.Subscribe<NativeBindingGalleryPage>(this, NativeBindingGalleryPage.ReadyForNativeBindingsMessage, AddNativeBindings);
-
- LoadApplication(app);
- base.DidFinishLaunching(notification);
- }
-
- void AddNativeControls(NestedNativeControlGalleryPage page)
- {
- if (page.NativeControlsAdded)
- {
- return;
- }
-
- StackLayout sl = page.Layout;
-
- // Create and add a native UILabel
- var originalText = "I am a native UILabel";
- var longerText =
- "I am a native UILabel with considerably more text. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
-
- var uilabel = new NSTextField
- {
- StringValue = originalText,
- MaximumNumberOfLines = 0,
- LineBreakMode = NSLineBreakMode.ByWordWrapping,
- Font = NSFont.FromFontName("Helvetica", 24f)
- };
-
- sl?.Children.Add(uilabel);
-
- // Create and add a native Button
- var uibutton = NSButtonExtensions.CreateButton("Toggle Text Amount", () =>
- {
- uilabel.StringValue = uilabel.StringValue == originalText ? longerText : originalText;
- uilabel.SizeToFit();
- });
- uibutton.Font = NSFont.FromFontName("Helvetica", 14f);
-
-
- sl?.Children.Add(uibutton.ToView());
-
- // Create some control which we know don't behave correctly with regard to measurement
- var difficultControl0 = new BrokenNativeControl
- {
- Font = NSFont.FromFontName("Helvetica", 14f),
- MaximumNumberOfLines = 0,
- LineBreakMode = NSLineBreakMode.ByWordWrapping,
- StringValue = "Doesn't play nice with sizing. That's why there's a big gap around it."
- };
-
- var difficultControl1 = new BrokenNativeControl
- {
- Font = NSFont.FromFontName("Helvetica", 14f),
- MaximumNumberOfLines = 0,
- LineBreakMode = NSLineBreakMode.ByWordWrapping,
- StringValue = "Custom size fix specified. No gaps."
- };
-
- var explanation0 = new NSTextField
- {
- StringValue = "The next control is a customized label with a bad SizeThatFits implementation.",
- MaximumNumberOfLines = 0,
- LineBreakMode = NSLineBreakMode.ByWordWrapping,
- Font = NSFont.FromFontName("Helvetica", 14f),
- };
-
- var explanation1 = new NSTextField
- {
- StringValue = "The next control is the same broken class as above, but we pass in an override to the GetDesiredSize method.",
- MaximumNumberOfLines = 0,
- LineBreakMode = NSLineBreakMode.ByWordWrapping,
- Font = NSFont.FromFontName("Helvetica", 14f),
- };
-
- // Add a misbehaving control
- sl?.Children.Add(explanation0);
- sl?.Children.Add(difficultControl0);
-
- // Add the misbehaving control with a custom delegate for FixSize
- sl?.Children.Add(explanation1);
- sl?.Children.Add(difficultControl1, FixSize);
-
- page.NativeControlsAdded = true;
- }
-
- SizeRequest? FixSize(NativeViewWrapperRenderer renderer, double width, double height)
- {
- var uiView = renderer.Control;
- var view = renderer.Element;
-
- if (uiView == null || view == null)
- {
- return null;
- }
-
- var constraint = new CGSize(width, height);
-
- // Let the BrokenNativeControl determine its size (which we know will be wrong)
- var badRect = uiView.FittingSize;
-
- // And we'll use the width (which is fine) and substitute our own height
- return new SizeRequest(new Size(badRect.Width, 20));
- }
-
- void AddNativeBindings(NativeBindingGalleryPage page)
- {
- if (page.NativeControlsAdded)
- return;
-
- StackLayout sl = page.Layout;
-
- int width = 200;
- int heightCustomLabelView = 100;
-
- var uilabel = new NSTextField(new CGRect(0, 0, width, heightCustomLabelView))
- {
- BackgroundColor = NSColor.Clear,
- Editable = false,
- Bezeled = false,
- DrawsBackground = false,
- MaximumNumberOfLines = 0,
- LineBreakMode = NSLineBreakMode.ByWordWrapping,
- Font = NSFont.FromFontName("Helvetica", 24f),
- StringValue = "DefaultText"
- };
-
- var uibuttonColor = NSButtonExtensions.CreateButton("Toggle Text Color Binding", () => uilabel.TextColor = NSColor.Blue);
- uibuttonColor.Font = NSFont.FromFontName("Helvetica", 14f);
-
- uilabel.SetBinding("StringValue", new Binding("NativeLabel"));
- uilabel.SetBinding(nameof(uilabel.TextColor), new Binding("NativeLabelColor", converter: new ColorConverter()));
-
- sl?.Children.Add(uilabel);
- sl?.Children.Add(uibuttonColor.ToView());
- //var colorPicker = new NSColorWell();
- //colorPicker.SetBinding("SelectedColor", new Binding("NativeLabelColor", BindingMode.TwoWay, new ColorConverter()), "ColorPicked");
- //sl?.Children.Add(colorPicker);
- page.NativeControlsAdded = true;
- }
-
- #region Stuff for repro of Bugzilla case 40911
-
- void SetUp40911Test(Bugzilla40911 page)
- {
- var button = new Button { Text = "Start" };
-
- button.Clicked += (s, e) =>
- {
- StartPressed40911();
- };
-
- page.Layout.Children.Add(button);
- }
-
- public void StartPressed40911()
- {
- var loginViewController = new NSViewController { View = { } };
- var button = NSButtonExtensions.CreateButton("Login", () =>
- {
- Xamarin.Forms.Application.Current.MainPage = new ContentPage { Content = new Label { Text = "40911 Success" } };
- //loginViewController.DismissViewController()true, null);
-
- });
-
- button.Frame = new CGRect(20, 100, 200, 44);
- loginViewController.View.AddSubview(button);
-
- var window = NSApplication.SharedApplication.KeyWindow;
- var vc = window.ContentViewController;
- while (vc.PresentedViewControllers.Length > 0)
- {
- vc = vc.PresentedViewControllers[0];
- }
-
- //vc.PresentViewController(loginViewController, new NSViewControllerPresentationAnimator();
- }
-
- #endregion
-
- public class ColorConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value is Color)
- return ((Color)value).ToNSColor();
- return value;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value is NSColor)
- return ((NSColor)value).ToColor();
- return value;
- }
- }
- }
-}
-