2016-05-12 07:09:06 +03:00
|
|
|
|
using System;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using Bit.App.Controls;
|
|
|
|
|
using Bit.iOS.Controls;
|
2016-07-04 09:45:32 +03:00
|
|
|
|
using CoreGraphics;
|
2016-05-12 07:09:06 +03:00
|
|
|
|
using UIKit;
|
|
|
|
|
using Xamarin.Forms;
|
|
|
|
|
using Xamarin.Forms.Platform.iOS;
|
|
|
|
|
|
|
|
|
|
[assembly: ExportRenderer(typeof(ExtendedTableView), typeof(ExtendedTableViewRenderer))]
|
|
|
|
|
namespace Bit.iOS.Controls
|
|
|
|
|
{
|
|
|
|
|
public class ExtendedTableViewRenderer : TableViewRenderer
|
|
|
|
|
{
|
|
|
|
|
protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
|
|
|
|
|
{
|
|
|
|
|
base.OnElementChanged(e);
|
|
|
|
|
|
|
|
|
|
var view = e.NewElement as ExtendedTableView;
|
|
|
|
|
if(view != null)
|
|
|
|
|
{
|
2016-05-13 04:30:02 +03:00
|
|
|
|
SetScrolling(view);
|
|
|
|
|
SetSelection(view);
|
|
|
|
|
UpdateRowHeight(view);
|
|
|
|
|
UpdateEstimatedRowHeight(view);
|
2016-05-14 08:34:42 +03:00
|
|
|
|
UpdateSeparatorColor(view);
|
2016-05-12 07:09:06 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnElementPropertyChanged(sender, e);
|
|
|
|
|
|
|
|
|
|
var view = (ExtendedTableView)Element;
|
|
|
|
|
|
2016-05-13 04:30:02 +03:00
|
|
|
|
if(e.PropertyName == ExtendedTableView.EnableScrollingProperty.PropertyName)
|
|
|
|
|
{
|
|
|
|
|
SetScrolling(view);
|
|
|
|
|
}
|
|
|
|
|
else if(e.PropertyName == ExtendedTableView.RowHeightProperty.PropertyName)
|
|
|
|
|
{
|
|
|
|
|
UpdateRowHeight(view);
|
|
|
|
|
}
|
|
|
|
|
else if(e.PropertyName == ExtendedTableView.EnableSelectionProperty.PropertyName)
|
|
|
|
|
{
|
|
|
|
|
SetSelection(view);
|
|
|
|
|
}
|
2016-05-12 07:09:06 +03:00
|
|
|
|
}
|
|
|
|
|
|
2016-05-13 04:30:02 +03:00
|
|
|
|
private void SetScrolling(ExtendedTableView view)
|
|
|
|
|
{
|
|
|
|
|
Control.ScrollEnabled = view.EnableScrolling;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetSelection(ExtendedTableView view)
|
|
|
|
|
{
|
|
|
|
|
Control.AllowsSelection = view.EnableSelection;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateRowHeight(ExtendedTableView view)
|
|
|
|
|
{
|
|
|
|
|
var rowHeight = view.RowHeight;
|
|
|
|
|
if(view.HasUnevenRows && rowHeight == -1)
|
|
|
|
|
{
|
|
|
|
|
Control.RowHeight = UITableView.AutomaticDimension;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Control.RowHeight = rowHeight <= 0 ? 44 : rowHeight;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateEstimatedRowHeight(ExtendedTableView view)
|
|
|
|
|
{
|
|
|
|
|
if(view.HasUnevenRows && view.RowHeight == -1)
|
|
|
|
|
{
|
|
|
|
|
Control.EstimatedRowHeight = view.EstimatedRowHeight;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Control.EstimatedRowHeight = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-05-14 08:34:42 +03:00
|
|
|
|
|
|
|
|
|
private void UpdateSeparatorColor(ExtendedTableView view)
|
|
|
|
|
{
|
|
|
|
|
Control.SeparatorColor = view.SeparatorColor.ToUIColor(UIColor.Gray);
|
|
|
|
|
}
|
2016-05-12 07:09:06 +03:00
|
|
|
|
}
|
|
|
|
|
}
|