56 lines
2.0 KiB
C#
56 lines
2.0 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using Ooui.Forms.Extensions;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Ooui.Forms.Cells
|
|
{
|
|
public class TextCellElement : CellElement
|
|
{
|
|
public Label TextLabel { get; } = new Label ();
|
|
|
|
public Label DetailTextLabel { get; } = new Label ();
|
|
|
|
public TextCellElement ()
|
|
{
|
|
AppendChild (TextLabel);
|
|
AppendChild (DetailTextLabel);
|
|
}
|
|
|
|
protected override void BindCell ()
|
|
{
|
|
Cell.PropertyChanged += Cell_PropertyChanged;
|
|
|
|
if (Cell is TextCell textCell) {
|
|
TextLabel.Text = textCell.Text ?? string.Empty;
|
|
DetailTextLabel.Text = textCell.Detail ?? string.Empty;
|
|
TextLabel.Style.Color = textCell.TextColor.ToOouiColor (OouiTheme.TextColor);
|
|
DetailTextLabel.Style.Color = textCell.DetailColor.ToOouiColor (OouiTheme.SecondaryTextColor);
|
|
}
|
|
|
|
base.BindCell ();
|
|
}
|
|
|
|
protected override void UnbindCell ()
|
|
{
|
|
Cell.PropertyChanged -= Cell_PropertyChanged;
|
|
base.UnbindCell ();
|
|
}
|
|
|
|
void Cell_PropertyChanged (object sender, PropertyChangedEventArgs args)
|
|
{
|
|
if (!(Cell is TextCell textCell))
|
|
return;
|
|
|
|
if (args.PropertyName == TextCell.TextProperty.PropertyName)
|
|
TextLabel.Text = textCell.Text ?? string.Empty;
|
|
else if (args.PropertyName == TextCell.DetailProperty.PropertyName)
|
|
DetailTextLabel.Text = textCell.Detail ?? string.Empty;
|
|
else if (args.PropertyName == TextCell.TextColorProperty.PropertyName)
|
|
TextLabel.Style.Color = textCell.TextColor.ToOouiColor (OouiTheme.TextColor);
|
|
else if (args.PropertyName == TextCell.DetailColorProperty.PropertyName)
|
|
DetailTextLabel.Style.Color = textCell.DetailColor.ToOouiColor (OouiTheme.SecondaryTextColor);
|
|
}
|
|
}
|
|
}
|