Update Label internal implemnets
authorSeungkeun Lee <sngn.lee@samsung.com>
Mon, 12 Jun 2017 05:26:04 +0000 (14:26 +0900)
committerKangho Hur <kangho.hur@samsung.com>
Mon, 10 Jul 2017 02:11:26 +0000 (11:11 +0900)
 - TextStyle was added in ElmSharp.Label
 - VerticalTextAlignment API was added in ElmSharp.Layout
 - Update LineBreakMode code with LineWrapType and IsEllipsis

Change-Id: Ic4ee266f58ae2f29442e3a236283bbc05dc65a05

Xamarin.Forms.Platform.Tizen/Native/Entry.cs
Xamarin.Forms.Platform.Tizen/Native/Label.cs
Xamarin.Forms.Platform.Tizen/Native/Span.cs
Xamarin.Forms.Platform.Tizen/Renderers/EntryRenderer.cs

index 26b775c..d6f3f45 100644 (file)
@@ -414,7 +414,7 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                /// <param name="markupText">Markup text to be used as a placeholder.</param>
                void SetInternalPlaceholderAndStyle(string markupText)
                {
-                       SetPartText("guide", markupText ?? "");
+                       SetPartText("elm.guide", markupText ?? "");
                }
        }
 }
index 911ca31..8d09536 100644 (file)
@@ -210,8 +210,35 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                        {
                                if (value != _span.LineBreakMode)
                                {
+                                       var previousMode = _span.LineBreakMode;
                                        _span.LineBreakMode = value;
-                                       ApplyTextAndStyle();
+                                       switch(value)
+                                       {
+                                               case LineBreakMode.NoWrap:
+                                                       LineWrapType = WrapType.None;
+                                                       IsEllipsis = false;
+                                                       break;
+                                               case LineBreakMode.CharacterWrap:
+                                                       LineWrapType = WrapType.Char;
+                                                       IsEllipsis = false;
+                                                       break;
+                                               case LineBreakMode.WordWrap:
+                                                       LineWrapType = WrapType.Word;
+                                                       IsEllipsis = false;
+                                                       break;
+                                               case LineBreakMode.MixedWrap:
+                                                       LineWrapType = WrapType.Mixed;
+                                                       IsEllipsis = false;
+                                                       break;
+                                               default:
+                                                       LineWrapType = WrapType.None;
+                                                       IsEllipsis = true;
+                                                       break;
+                                       }
+                                       if (IsEllipsis || previousMode >= LineBreakMode.HeadTruncation)
+                                       {
+                                               ApplyTextAndStyle();
+                                       }
                                }
                        }
                }
@@ -243,9 +270,48 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                /// <value>The vertical text alignment.</value>
                public TextAlignment VerticalTextAlignment
                {
-                       // TODO. need to EFL new API
-                       get;
-                       set;
+                       // README: It only work on Tizen 4.0
+                       get
+                       {
+                               double valign = GetVerticalTextAlignment("elm.text");
+                               if (valign == 0.0)
+                               {
+                                       return TextAlignment.Start;
+                               }
+                               else if (valign == 0.5)
+                               {
+                                       return TextAlignment.Center;
+                               }
+                               else if (valign == 1.0)
+                               {
+                                       return TextAlignment.End;
+                               }
+                               else
+                               {
+                                       return TextAlignment.Auto;
+                               }
+                       }
+                       set
+                       {
+                               double valign = 0;
+                               switch (value)
+                               {
+                                       case TextAlignment.Auto:
+                                               valign = -1;
+                                               break;
+                                       case TextAlignment.None:
+                                       case TextAlignment.Start:
+                                               valign = 0;
+                                               break;
+                                       case TextAlignment.Center:
+                                               valign = 0.5;
+                                               break;
+                                       case TextAlignment.End:
+                                               valign = 1.0;
+                                               break;
+                               }
+                               SetVerticalTextAlignment("elm.text", valign);
+                       }
                }
 
                /// <summary>
@@ -323,36 +389,8 @@ namespace Xamarin.Forms.Platform.Tizen.Native
 
                void SetInternalTextAndStyle(string formattedText, string textStyle)
                {
-                       string emission = "elm,state,text,visible";
-
-                       if (string.IsNullOrEmpty(formattedText))
-                       {
-                               formattedText = null;
-                               textStyle = null;
-                               emission = "elm,state,text,hidden";
-                       }
-
                        base.Text = formattedText;
-
-                       var textblock = EdjeObject["elm.text"];
-
-                       if (textblock != null)
-                       {
-                               textblock.TextStyle = textStyle;
-                       }
-
-                       EdjeObject.EmitSignal(emission, "elm");
-
-                       switch (LineBreakMode)
-                       {
-                               case LineBreakMode.NoWrap:
-                                       emission = "elm,state,horizontal,expandable";
-                                       break;
-                               default:
-                                       emission = "elm,state,horizontal,fixed";
-                                       break;
-                       }
-                       EdjeObject.EmitSignal(emission, "elm");
+                       TextStyle = textStyle;
                }
     }
 }
index 2f26649..3b410ba 100644 (file)
@@ -233,22 +233,6 @@ namespace Xamarin.Forms.Platform.Tizen.Native
 
                        switch (LineBreakMode)
                        {
-                               case LineBreakMode.NoWrap:
-                                       _formattingString.Append("wrap=none");
-                                       break;
-
-                               case LineBreakMode.CharacterWrap:
-                                       _formattingString.Append("wrap=char");
-                                       break;
-
-                               case LineBreakMode.WordWrap:
-                                       _formattingString.Append("wrap=word");
-                                       break;
-
-                               case LineBreakMode.MixedWrap:
-                                       _formattingString.Append("wrap=mixed");
-                                       break;
-
                                case LineBreakMode.HeadTruncation:
                                        _formattingString.Append("ellipsis=0.0");
                                        break;
@@ -261,6 +245,10 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                                        _formattingString.Append("ellipsis=1.0");
                                        break;
 
+                               case LineBreakMode.NoWrap:
+                               case LineBreakMode.CharacterWrap:
+                               case LineBreakMode.WordWrap:
+                               case LineBreakMode.MixedWrap:
                                case LineBreakMode.None:
                                        break;
                        }
index c880098..ba6a15a 100644 (file)
@@ -29,6 +29,8 @@ namespace Xamarin.Forms.Platform.Tizen
                                        IsSingleLine = true,
                                        PropagateEvents = false,
                                };
+                               entry.SetVerticalTextAlignment("elm.text", 0.5);
+                               entry.SetVerticalTextAlignment("elm.guide", 0.5);
                                SetNativeControl(entry);
                        }