/*
* 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;
}
}
}
}