From: Yura Kim Date: Mon, 24 Jul 2017 09:00:48 +0000 (+0900) Subject: [Tizen] Add translatable text in TextLabel, TextField, TextEditor X-Git-Tag: submit/trunk/20170823.075128~91^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f60485fe792e96ea353459a868a44837ab1add10;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [Tizen] Add translatable text in TextLabel, TextField, TextEditor Change-Id: I453a926da4b2aca012e47132b5e8bd3726783d32 Signed-off-by: Yura Kim --- diff --git a/packaging/csapi-nui.spec b/packaging/csapi-nui.spec index 3f444eb..ebde663 100755 --- a/packaging/csapi-nui.spec +++ b/packaging/csapi-nui.spec @@ -18,6 +18,7 @@ BuildRequires: dotnet-build-tools BuildRequires: csapi-tizen-nuget BuildRequires: csapi-application-common-nuget BuildRequires: csapi-application-ui-nuget +BuildRequires: csapi-system-settings-nuget %define Assemblies Tizen.NUI diff --git a/src/Tizen.NUI/Tizen.NUI.csproj b/src/Tizen.NUI/Tizen.NUI.csproj index 4b2d09f..1ae98bb 100755 --- a/src/Tizen.NUI/Tizen.NUI.csproj +++ b/src/Tizen.NUI/Tizen.NUI.csproj @@ -26,7 +26,14 @@ + - + + + + TizenSystemSettings + + + diff --git a/src/Tizen.NUI/src/internal/WeakEventHandler.cs b/src/Tizen.NUI/src/internal/WeakEventHandler.cs new file mode 100755 index 0000000..b78ee88 --- /dev/null +++ b/src/Tizen.NUI/src/internal/WeakEventHandler.cs @@ -0,0 +1,32 @@ +using System; +using System.Reflection; + +namespace Tizen.NUI +{ + internal sealed class WeakEventHandler where TEventArgs : EventArgs + { + private readonly WeakReference _targetReference; + private readonly MethodInfo _method; + + public WeakEventHandler(EventHandler callback) + { + _method = callback.GetMethodInfo(); + _targetReference = new WeakReference(callback.Target, true); + } + + public void Handler(object sender, TEventArgs e) + { + var target = _targetReference.Target; + if (target != null) + { + var callback = (Action)_method.CreateDelegate(typeof(Action), target); + if (callback != null) + { + callback(sender, e); + } + } + } +} + +} + diff --git a/src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs b/src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs index dfa79bd..6d1aea5 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs @@ -14,11 +14,14 @@ * */ +extern alias TizenSystemSettings; +using TizenSystemSettings.Tizen.System; namespace Tizen.NUI.BaseComponents { using System; using System.Runtime.InteropServices; + using System.Globalization; /// /// A control which provides a multi-line editable text editor. @@ -26,6 +29,9 @@ namespace Tizen.NUI.BaseComponents public class TextEditor : View { private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private string textEditorTextSid = null; + private string textEditorPlaceHolderTextSid = null; + private bool systemlangTextFlag = false; internal TextEditor(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.TextEditor_SWIGUpcast(cPtr), cMemoryOwn) { @@ -342,6 +348,81 @@ namespace Tizen.NUI.BaseComponents } /// + /// TranslatableText property.
+ /// The text can be set SID value.
+ ///
+ /// + /// ResourceManager about multilingual is null + /// + public string TranslatableText + { + get + { + return textEditorTextSid; + } + set + { + if (NUIApplication.MultilingualResourceManager == null) + { + throw new ArgumentNullException("ResourceManager about multilingual is null"); + } + textEditorTextSid = value; + Text = SetTranslatable(textEditorTextSid); + } + } + /// + /// TranslatablePlaceholderText property.
+ /// The text can be set SID value.
+ ///
+ /// + /// ResourceManager about multilingual is null + /// + public string TranslatablePlaceholderText + { + get + { + return textEditorPlaceHolderTextSid; + } + set + { + if (NUIApplication.MultilingualResourceManager == null) + { + throw new ArgumentNullException("ResourceManager about multilingual is null"); + } + textEditorPlaceHolderTextSid = value; + PlaceholderText = SetTranslatable(textEditorPlaceHolderTextSid); + } + } + private string SetTranslatable(string textEditorSid) + { + string translatableText = null; + translatableText = NUIApplication.MultilingualResourceManager?.GetString(textEditorSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-"))); + if (translatableText != null) + { + if (systemlangTextFlag == false) + { + SystemSettings.LocaleLanguageChanged += new WeakEventHandler(SystemSettings_LocaleLanguageChanged).Handler; + systemlangTextFlag = true; + } + return translatableText; + } + else + { + translatableText = ""; + return translatableText; + } + } + private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e) + { + if (textEditorTextSid != null) + { + Text = NUIApplication.MultilingualResourceManager?.GetString(textEditorTextSid, new CultureInfo(e.Value.Replace("_", "-"))); + } + if (textEditorPlaceHolderTextSid != null) + { + PlaceholderText = NUIApplication.MultilingualResourceManager?.GetString(textEditorPlaceHolderTextSid, new CultureInfo(e.Value.Replace("_", "-"))); + } + } /// Text property. ///
public string Text diff --git a/src/Tizen.NUI/src/public/BaseComponents/TextField.cs b/src/Tizen.NUI/src/public/BaseComponents/TextField.cs index bcf1a09..21fabfe 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/TextField.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/TextField.cs @@ -13,19 +13,23 @@ * limitations under the License. * */ - +extern alias TizenSystemSettings; +using TizenSystemSettings.Tizen.System; namespace Tizen.NUI.BaseComponents { using System; using System.Runtime.InteropServices; - + using System.Globalization; /// /// A control which provides a single-line editable text field. /// public class TextField : View { private global::System.Runtime.InteropServices.HandleRef swigCPtr; + private string textFieldTextSid = null; + private string textFieldPlaceHolderTextSid = null; + private bool systemlangTextFlag = false; internal TextField(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.TextField_SWIGUpcast(cPtr), cMemoryOwn) { @@ -329,6 +333,81 @@ namespace Tizen.NUI.BaseComponents } /// + /// TranslatableText property.
+ /// The text can be set SID value.
+ ///
+ /// + /// ResourceManager about multilingual is null + /// + public string TranslatableText + { + get + { + return textFieldTextSid; + } + set + { + if (NUIApplication.MultilingualResourceManager == null) + { + throw new ArgumentNullException("ResourceManager about multilingual is null"); + } + textFieldTextSid = value; + Text = SetTranslatable(textFieldTextSid); + } + } + /// + /// TranslatablePlaceholderText property.
+ /// The text can be set SID value.
+ ///
+ /// + /// ResourceManager about multilingual is null + /// + public string TranslatablePlaceholderText + { + get + { + return textFieldPlaceHolderTextSid; + } + set + { + if (NUIApplication.MultilingualResourceManager == null) + { + throw new ArgumentNullException("ResourceManager about multilingual is null"); + } + textFieldPlaceHolderTextSid = value; + PlaceholderText = SetTranslatable(textFieldPlaceHolderTextSid); + } + } + private string SetTranslatable(string textFieldSid) + { + string translatableText = null; + translatableText = NUIApplication.MultilingualResourceManager?.GetString(textFieldSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-"))); + if (translatableText != null) + { + if (systemlangTextFlag == false) + { + SystemSettings.LocaleLanguageChanged += new WeakEventHandler(SystemSettings_LocaleLanguageChanged).Handler; + systemlangTextFlag = true; + } + return translatableText; + } + else + { + translatableText = ""; + return translatableText; + } + } + private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e) + { + if (textFieldTextSid != null) + { + Text = NUIApplication.MultilingualResourceManager?.GetString(textFieldTextSid, new CultureInfo(e.Value.Replace("_", "-"))); + } + if (textFieldPlaceHolderTextSid != null) + { + PlaceholderText = NUIApplication.MultilingualResourceManager?.GetString(textFieldPlaceHolderTextSid, new CultureInfo(e.Value.Replace("_", "-"))); + } + } /// Text property. /// public string Text diff --git a/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs b/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs index 7390f4f..f10a7e6 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs @@ -14,8 +14,10 @@ * */ +extern alias TizenSystemSettings; +using TizenSystemSettings.Tizen.System; using System; - +using System.Globalization; namespace Tizen.NUI.BaseComponents { @@ -26,7 +28,8 @@ namespace Tizen.NUI.BaseComponents public class TextLabel : View { private global::System.Runtime.InteropServices.HandleRef swigCPtr; - + private string textLabelSid = null; + private bool systemlangTextFlag = false; internal TextLabel(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.TextLabel_SWIGUpcast(cPtr), cMemoryOwn) { swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); @@ -139,6 +142,47 @@ namespace Tizen.NUI.BaseComponents if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } + /// + /// TranslatableText property.
+ /// The text can be set SID value.
+ ///
+ /// + /// ResourceManager about multilingual is null + /// + public string TranslatableText + { + get + { + return textLabelSid; + } + set + { + if (NUIApplication.MultilingualResourceManager == null) + { + throw new ArgumentNullException("ResourceManager about multilingual is null"); + } + string translatableText = null; + textLabelSid = value; + translatableText = NUIApplication.MultilingualResourceManager?.GetString(textLabelSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-"))); + if (translatableText != null) + { + Text = translatableText; + if (systemlangTextFlag == false) + { + SystemSettings.LocaleLanguageChanged += new WeakEventHandler(SystemSettings_LocaleLanguageChanged).Handler; + systemlangTextFlag = true; + } + } + else + { + Text = ""; + } + } + } + private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e) + { + Text = NUIApplication.MultilingualResourceManager?.GetString(textLabelSid, new CultureInfo(e.Value.Replace("_", "-"))); + } /// /// Text property.
diff --git a/src/Tizen.NUI/src/public/NUIApplication.cs b/src/Tizen.NUI/src/public/NUIApplication.cs index b5bdacb..1caf135 100755 --- a/src/Tizen.NUI/src/public/NUIApplication.cs +++ b/src/Tizen.NUI/src/public/NUIApplication.cs @@ -27,7 +27,11 @@ namespace Tizen.NUI /// Represents an application that have UI screen. The NUIApplication class has a default stage. ///
public class NUIApplication : CoreApplication - { + { + /// + /// The instance of ResourceManager. + /// + private static System.Resources.ResourceManager resourceManager = null; /// /// The default constructor. /// @@ -175,6 +179,7 @@ namespace Tizen.NUI Opaque = 0, Transparent = 1 } +<<<<<<< HEAD internal Application ApplicationHandle @@ -185,5 +190,21 @@ namespace Tizen.NUI } } +======= + /// + /// ResourceManager to handle multilingual + /// + public static System.Resources.ResourceManager MultilingualResourceManager + { + get + { + return resourceManager; + } + set + { + resourceManager = value; + } + } +>>>>>>> 23f9e83... Add translatable text in TextLabel, TextField, TextEditor } }