blob: 5a4744fc652975192c27908c705b5b626ee2e004 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
using EColor = ElmSharp.Color;
namespace Xamarin.Forms.Platform.Tizen
{
public class LabelRenderer : ViewRenderer<Label, Native.Label>
{
static readonly EColor s_defaultBackgroundColor = EColor.Transparent;
static readonly EColor s_defaultForegroundColor = EColor.Black;
static readonly EColor s_defaultTextColor = s_defaultForegroundColor;
public LabelRenderer()
{
RegisterPropertyHandler(Label.TextProperty, () => Control.Text = Element.Text);
RegisterPropertyHandler(Label.TextColorProperty, UpdateTextColor);
// FontProperty change is called also for FontSizeProperty, FontFamilyProperty and FontAttributesProperty change
RegisterPropertyHandler(Label.FontProperty, UpdateFontProperties);
RegisterPropertyHandler(Label.LineBreakModeProperty, UpdateLineBreakMode);
RegisterPropertyHandler(Label.HorizontalTextAlignmentProperty, UpdateTextAlignment);
RegisterPropertyHandler(Label.VerticalTextAlignmentProperty, UpdateTextAlignment);
RegisterPropertyHandler(Label.FormattedTextProperty, () => Control.FormattedText = ConvertFormattedText(Element.FormattedText));
}
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
if (Control == null)
{
var label = new Native.Label(Forms.Context.MainWindow);
base.SetNativeControl(label);
}
if (e.OldElement != null)
{
}
if (e.NewElement != null)
{
}
base.OnElementChanged(e);
}
protected override Size MinimumSize()
{
return new Size(Control.MinimumWidth, Control.MinimumHeight);
}
Native.FormattedString ConvertFormattedText(FormattedString formattedString)
{
if (formattedString == null)
{
return null;
}
Native.FormattedString nativeString = new Native.FormattedString();
foreach (var element in formattedString.Spans)
{
Native.Span span = new Native.Span();
span.FormattedText = element.Text;
span.FontAttributes = element.FontAttributes;
span.FontFamily = element.FontFamily;
span.FontSize = element.FontSize;
span.ForegroundColor = element.ForegroundColor.IsDefault ? s_defaultForegroundColor : element.ForegroundColor.ToNative();
span.BackgroundColor = element.BackgroundColor.IsDefault ? s_defaultBackgroundColor : element.BackgroundColor.ToNative();
nativeString.Spans.Add(span);
}
return nativeString;
}
void UpdateTextColor()
{
Control.TextColor = Element.TextColor.IsDefault ? s_defaultTextColor : Element.TextColor.ToNative();
}
void UpdateTextAlignment()
{
Control.HorizontalTextAlignment = Element.HorizontalTextAlignment.ToNative();
Control.VerticalTextAlignment = Element.VerticalTextAlignment.ToNative();
}
void UpdateFontProperties()
{
Control.FontSize = Element.FontSize;
Control.FontAttributes = Element.FontAttributes;
Control.FontFamily = Element.FontFamily;
}
void UpdateLineBreakMode()
{
if (Element.LineBreakMode == LineBreakMode.CharacterWrap)
Control.LineBreakMode = Native.LineBreakMode.CharacterWrap;
else if (Element.LineBreakMode == LineBreakMode.WordWrap)
Control.LineBreakMode = Native.LineBreakMode.WordWrap;
else if (Element.LineBreakMode == LineBreakMode.NoWrap)
Control.LineBreakMode = Native.LineBreakMode.NoWrap;
else
Control.LineBreakMode = Native.LineBreakMode.MixedWrap;
}
}
}
|