diff options
Diffstat (limited to 'Xamarin.Forms.ControlGallery.MacOS/CustomRenderers.cs')
-rw-r--r-- | Xamarin.Forms.ControlGallery.MacOS/CustomRenderers.cs | 346 |
1 files changed, 0 insertions, 346 deletions
diff --git a/Xamarin.Forms.ControlGallery.MacOS/CustomRenderers.cs b/Xamarin.Forms.ControlGallery.MacOS/CustomRenderers.cs deleted file mode 100644 index ae058896..00000000 --- a/Xamarin.Forms.ControlGallery.MacOS/CustomRenderers.cs +++ /dev/null @@ -1,346 +0,0 @@ -using System; -using System.Collections.Generic; -using AppKit; -using CoreGraphics; -using Foundation; -using Xamarin.Forms; -using Xamarin.Forms.ControlGallery.MacOS; -using Xamarin.Forms.Controls.Issues; -using Xamarin.Forms.Platform.MacOS; - -[assembly: ExportRenderer(typeof(NativeCell), typeof(NativeMacCellRenderer))] -[assembly: ExportRenderer(typeof(NativeListView2), typeof(NativeMacOSListViewRenderer))] -[assembly: ExportRenderer(typeof(NativeListView), typeof(NativeListViewRenderer))] -namespace Xamarin.Forms.ControlGallery.MacOS -{ - public class NativeMacOSListViewRenderer : ViewRenderer<NativeListView2, NSView> - { - NSTableView _nsTableView; - public NativeMacOSListViewRenderer() - { - } - - protected override void OnElementChanged(ElementChangedEventArgs<NativeListView2> e) - { - base.OnElementChanged(e); - - if (Control == null) - { - var scroller = new NSScrollView - { - AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable, - DocumentView = _nsTableView = new NSTableView().AsListViewLook() - }; - - _nsTableView.RowHeight = 60; - SetNativeControl(scroller); - } - - if (e.OldElement != null) - { - // unsubscribe - } - - if (e.NewElement != null) - { - // subscribe - - var s = new NativeiOSListViewSource(e.NewElement, _nsTableView); - _nsTableView.Source = s; - } - } - - protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged(sender, e); - - if (e.PropertyName == NativeListView.ItemsProperty.PropertyName) - { - // update the Items list in the UITableViewSource - var s = new NativeiOSListViewSource(Element, _nsTableView); - _nsTableView.Source = s; - } - } - - public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) - { - return Control.GetSizeRequest(widthConstraint, heightConstraint, 44, 44); - } - } - - public class NativeListViewRenderer : ViewRenderer<NativeListView, NSView> - { - public NativeListViewRenderer() - { - } - NSTableView table; - protected override void OnElementChanged(ElementChangedEventArgs<NativeListView> e) - { - base.OnElementChanged(e); - - if (Control == null) - { - var scroller = new NSScrollView - { - AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable, - DocumentView = table = new NSTableView().AsListViewLook() - }; - - table.RowHeight = 60; - - SetNativeControl(scroller); - } - - if (e.OldElement != null) - { - // unsubscribe - } - - if (e.NewElement != null) - { - // subscribe - - var s = new NativeListViewSource(e.NewElement, table); - table.Source = s; - } - } - - protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged(sender, e); - - if (e.PropertyName == NativeListView.ItemsProperty.PropertyName) - { - // update the Items list in the UITableViewSource - var s = new NativeListViewSource(Element, table); - table.Source = s; - } - } - - public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) - { - return Control.GetSizeRequest(widthConstraint, heightConstraint, 44, 44); - } - } - - public class NativeiOSListViewSource : NSTableViewSource - { - IList<DataSource> _tableItems; - NativeListView2 _listView; - readonly NSTableView _nsTableView; - readonly NSString _cellIdentifier = new NSString("TableCell"); - - public IEnumerable<DataSource> Items - { - set { _tableItems = new List<DataSource>(value); } - } - - public NativeiOSListViewSource(NativeListView2 view, NSTableView nsTableView) - { - _tableItems = new List<DataSource>(view.Items); - _listView = view; - _nsTableView = nsTableView; - } - - public override nint GetRowCount(NSTableView tableView) - { - return _tableItems.Count; - } - - public override void SelectionDidChange(NSNotification notification) - { - var selectedRow = (int)_nsTableView.SelectedRow; - if (selectedRow == -1) - return; - _listView.NotifyItemSelected(_tableItems[selectedRow]); - Console.WriteLine("Row " + selectedRow.ToString() + " selected"); - _nsTableView.DeselectRow(selectedRow); - } - - public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row) - { - NativeMacOsCell cell = tableView.MakeView(_cellIdentifier, tableView) as NativeMacOsCell; - - if (cell == null) - { - cell = new NativeMacOsCell(_cellIdentifier); - } - int rowNumber = (int)row; - if (string.IsNullOrWhiteSpace(_tableItems[rowNumber].ImageFilename)) - { - cell.UpdateCell(_tableItems[rowNumber].Name - , _tableItems[rowNumber].Category - , null); - } - else - { - cell.UpdateCell(_tableItems[rowNumber].Name - , _tableItems[rowNumber].Category - , new NSImage("Images/" + _tableItems[rowNumber].ImageFilename + ".jpg")); - } - - return cell; - } - } - - public class NativeListViewSource : NSTableViewSource - { - // declare vars - IList<string> _tableItems; - string _cellIdentifier = "TableCell"; - NativeListView _listView; - readonly NSTableView _nsTableView; - - public IEnumerable<string> Items - { - set - { - _tableItems = new List<string>(value); - } - } - - public NativeListViewSource(NativeListView view, NSTableView nsTableView) - { - _tableItems = new List<string>(view.Items); - _listView = view; - _nsTableView = nsTableView; - } - - public override nint GetRowCount(NSTableView tableView) - { - return _tableItems.Count; - } - - public override void SelectionDidChange(NSNotification notification) - { - var selectedRow = (int)_nsTableView.SelectedRow; - if (selectedRow == -1) - return; - _listView.NotifyItemSelected(_tableItems[selectedRow]); - Console.WriteLine("Row " + selectedRow.ToString() + " selected"); - _nsTableView.DeselectRow(selectedRow); - } - - public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row) - { - var cell = tableView.MakeView(_cellIdentifier, tableView); - - if (cell == null) - { - cell = new NSView(new CGRect(0, 0, tableView.Frame.Width, tableView.RowHeight)); - var textLabel = new NSTextField(new CGRect(1, 1, tableView.Frame.Width, tableView.RowHeight - 10)); - cell.AddSubview(textLabel); - } - var label = cell.Subviews[0] as NSTextField; - label.StringValue = _tableItems[(int)row]; - return cell; - } - } - - public class NativeMacCellRenderer : ViewCellRenderer - { - static NSString s_rid = new NSString("NativeCell"); - - public NativeMacCellRenderer() - { - } - - public override NSView GetCell(Cell item, NSView reusableView, NSTableView tv) - { - var x = (NativeCell)item; - Console.WriteLine(x); - - NativeMacOsCell c = reusableView as NativeMacOsCell; - - if (c == null) - { - c = new NativeMacOsCell(s_rid); - } - - NSImage i = null; - if (!string.IsNullOrWhiteSpace(x.ImageFilename)) - { - i = new NSImage("Images/" + x.ImageFilename + ".jpg"); - } - - base.WireUpForceUpdateSizeRequested(item, c, tv); - - c.UpdateCell(x.Name, x.Category, i); - - return c; - } - } - - public class NativeMacOsCell : NSView - { - NSTextField _headingLabel; - NSTextField _subheadingLabel; - NSImageView _imageView; - - public NativeMacOsCell() : this(new NSString("NativeMacOsCell")) - { - } - public NativeMacOsCell(NSString cellId) - { - Identifier = cellId; - WantsLayer = true; - Layer.BackgroundColor = NSColor.FromRgb(218, 255, 127).CGColor; - - _imageView = new NSImageView(); - - _headingLabel = new NSTextField() - { - Font = NSFont.FromFontName("Cochin-BoldItalic", 22f), - TextColor = NSColor.FromRgb(127, 51, 0), - BackgroundColor = NSColor.Clear - }; - - _subheadingLabel = new NSTextField() - { - Font = NSFont.FromFontName("AmericanTypewriter", 12f), - TextColor = NSColor.FromRgb(38, 127, 0), - Alignment = NSTextAlignment.Center, - BackgroundColor = NSColor.Clear - }; - - AddSubview(_headingLabel); - AddSubview(_subheadingLabel); - AddSubview(_imageView); - } - - public void UpdateCell(string caption, string subtitle, NSImage image) - { - _imageView.Image = image; - _headingLabel.StringValue = caption; - _subheadingLabel.StringValue = subtitle; - } - - public override void Layout() - { - base.Layout(); - - _imageView.Frame = new CGRect(Bounds.Width - 63, 5, 33, 33); - _headingLabel.Frame = new CGRect(5, 4, Bounds.Width - 63, 25); - _subheadingLabel.Frame = new CGRect(100, 18, 100, 20); - } - } - - public static class NSTableViewExtensions - { - public static NSTableView AsListViewLook(this NSTableView self) - { - self.SelectionHighlightStyle = NSTableViewSelectionHighlightStyle.SourceList; - - self.AllowsColumnReordering = false; - self.AllowsColumnResizing = false; - self.AllowsColumnSelection = false; - - //this is needed .. can we go around it ? - self.AddColumn(new NSTableColumn("1")); - //this line hides the header by default - self.HeaderView = null; - return self; - } - } - -} |