/* * Copyright(c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ using System; using Tizen.NUI.Binding; namespace Tizen.NUI { /// /// KeyValue class. /// public class KeyValue { /// /// Int key. /// public int? KeyInt = null; /// /// String key. /// public string KeyString = null; /// /// True value. /// public PropertyValue TrueValue = null; private string _key = null; private object _originalValue = null; private object _originalKey = null; /// /// Default Constructor. /// public KeyValue() { } /// /// Key property. /// public string Key { get { return _key; } set { _key = value; ParseKey(value); } } /// /// OriginalKey property. /// /// Thrown when value is null. public object OriginalKey { get { return _originalKey; } set { if (null == value) { throw new ArgumentNullException(nameof(value)); } _originalKey = value; if (value is int || value is Int32) { KeyInt = (int)value; } else if (value is string) { KeyString = value.ToString(); } else if (value.GetType().Equals(typeof(int)) || value.GetType().Equals(typeof(Int32))) { KeyInt = (int)value; } else if (value.GetType().Equals(typeof(string))) { KeyString = value.ToString(); } } } /// /// Value property. /// public object Value { get { return _originalValue; } set { _originalValue = value; TrueValue = PropertyValue.CreateFromObject(value); } } /// /// IntergerValue property. /// public int IntergerValue { get { if (TrueValue.Get(out int retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get IntergerValue from PropertyValue! Return ErrorValue(-1)!"); return -1; } set { TrueValue = new PropertyValue(value); } } /// /// BooleanValue property. /// public bool BooleanValue { get { if (TrueValue.Get(out bool retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get BooleanValue from PropertyValue! Return false!"); return false; } set { TrueValue = new PropertyValue(value); } } /// /// SingleValue property. /// public float SingleValue { get { if (TrueValue.Get(out float retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get SingleValue from PropertyValue! Return ErrorValue(-1)!"); return -1; } set { TrueValue = new PropertyValue(value); } } /// /// StringValue property. /// public string StringValue { get { if (TrueValue.Get(out string retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get SingleValue from PropertyValue! Return ErrorString(error to get StringValue)!"); return "error to get StringValue"; } set { TrueValue = new PropertyValue(value); } } /// /// Vector2Value property. /// public Vector2 Vector2Value { get { Vector2 retrivedValue = new Vector2(0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get Vector2Value from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// Vector3Value property. /// public Vector3 Vector3Value { get { Vector3 retrivedValue = new Vector3(0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get Vector3Value from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// Vector4Value property. /// public Vector4 Vector4Value { get { Vector4 retrivedValue = new Vector4(0, 0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get Vector4Value from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// PositionValue property. /// public Position PositionValue { get { Position retrivedValue = new Position(0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get PositionValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// Position2DValue property. /// public Position2D Position2DValue { get { Position2D retrivedValue = new Position2D(0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get Position2DValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// SizeValue property. /// public Size SizeValue { get { Size retrivedValue = new Size(0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get SizeValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// Size2DValue property. /// public Size2D Size2DValue { get { Size2D retrivedValue = new Size2D(0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get Size2DValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// ColorValue property. /// public Color ColorValue { get { Color retrivedValue = new Color(0, 0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get ColorValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// RectangleValue property. /// public Rectangle RectangleValue { get { Rectangle retrivedValue = new Rectangle(0, 0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get RectangleValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// RotationValue property. /// public Rotation RotationValue { get { Rotation retrivedValue = new Rotation(); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get RotationValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// RelativeVector2Value property. /// public RelativeVector2 RelativeVector2Value { get { RelativeVector2 retrivedValue = new RelativeVector2(0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get RelativeVector2Value from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// RelativeVector3Value property. /// public RelativeVector3 RelativeVector3Value { get { RelativeVector3 retrivedValue = new RelativeVector3(0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get RelativeVector3Value from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// RelativeVector4Value property. /// public RelativeVector4 RelativeVector4Value { get { RelativeVector4 retrivedValue = new RelativeVector4(0, 0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get RelativeVector4Value from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// ExtentsValue property. /// public Extents ExtentsValue { get { Extents retrivedValue = new Extents(0, 0, 0, 0); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get ExtentsValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// PropertyArrayValue property. /// public PropertyArray PropertyArrayValue { get { PropertyArray retrivedValue = new PropertyArray(); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get PropertyArrayValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } /// /// PropertyMapValue property. /// public PropertyMap PropertyMapValue { get { PropertyMap retrivedValue = new PropertyMap(); if (TrueValue.Get(retrivedValue)) { return retrivedValue; } NUILog.Error($"[ERROR] Fail to get PropertyMapValue from PropertyValue!"); return retrivedValue; } set { TrueValue = new PropertyValue(value); } } private void ParseKey(string key) { int v = -1; if (VisualExtension.KeyDictionary.ContainsKey(key)) { VisualExtension.KeyDictionary.TryGetValue(key, out v); KeyInt = v; } else { KeyString = Key; } } } }