await SaveSemaphore.WaitAsync();
try
{
- await DependencyService.Get<IDeserializer>().SerializePropertiesAsync(Properties);
+ await DependencyService.Get<IDeserializer>()?.SerializePropertiesAsync(Properties);
}
finally
{
// Callback for Application BatteryLowSignal
private void OnNUIApplicationBatteryLow(BatteryStatus status)
{
+ lock (this)
+ {
NUIApplicationBatteryLowEventArgs e = new NUIApplicationBatteryLowEventArgs();
// Populate all members of "e" (NUIApplicationBatteryLowEventArgs) with real data
e.BatteryStatus = status;
_applicationBatteryLowEventHandler?.Invoke(this, e);
}
+ }
/**
* @brief Event for MemoryLow signal which can be used to subscribe/unsubscribe the event handler
// Callback for Application MemoryLowSignal
private void OnNUIApplicationMemoryLow(MemoryStatus status)
{
+ lock (this)
+ {
NUIApplicationMemoryLowEventArgs e = new NUIApplicationMemoryLowEventArgs();
// Populate all members of "e" (NUIApplicationMemoryLowEventArgs) with real data
e.MemoryStatus = status;
_applicationMemoryLowEventHandler?.Invoke(this, e);
}
+ }
/**
* @brief Event for AppControl signal which can be used to subscribe/unsubscribe the event handler
[global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint = "CSharp_Dali_new_FrameBufferImage__SWIG_1")]
public static extern global::System.IntPtr new_FrameBufferImage__SWIG_1(global::System.Runtime.InteropServices.HandleRef jarg1);
-
[global::System.Runtime.InteropServices.DllImport("libdali-csharp-binder.so", EntryPoint = "CSharp_Dali_FrameBufferImage_Assign")]
public static extern global::System.IntPtr FrameBufferImage_Assign(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
/// <summary>
/// Event arguments that passed via the webview signal.
/// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
public class WebViewEventArgs : EventArgs
{
private WebView _webView;
/// <summary>
/// The view for displaying webpages.
/// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
public WebView WebView
{
get
/// <summary>
/// The url string of current webpage.
/// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
public string PageUrl
{
get
{
// Modify the namespace
var propname =
- parameter.CustomAttributes.First(ca => ca.AttributeType.FullName == "Tizen.NUI.Binding.ParameterAttribute")
+ parameter.CustomAttributes.First(ca => ca.AttributeType.FullName == "Tizen.NUI.Binding.ParameterAttribute")?
.ConstructorArguments.First()
.Value as string;
if (!node.Properties.ContainsKey(new XmlName("", propname)))
ci.GetParameters().Length != 0 && ci.IsPublic &&
ci.GetParameters().All(pi => pi.CustomAttributes.Any(attr => attr.AttributeType == typeof (ParameterAttribute))));
object[] arguments = CreateArgumentsArray(node, ctorInfo);
- return ctorInfo.Invoke(arguments);
+ return ctorInfo?.Invoke(arguments);
}
public object CreateFromFactory(Type nodeType, IElementNode node)
{
var parameter = ctorInfo.GetParameters()[i];
var propname =
- parameter.CustomAttributes.First(attr => attr.AttributeType == typeof (ParameterAttribute))
+ parameter?.CustomAttributes?.First(attr => attr.AttributeType == typeof (ParameterAttribute))?
.ConstructorArguments.First()
.Value as string;
var name = new XmlName("", propname);
return null;
var rootTargetPath = XamlResourceIdAttribute.GetPathForType(rootObjectType);
var resourcePath = ResourceDictionary.RDSourceTypeConverter.GetResourcePath(Source, rootTargetPath);
- var resString = DependencyService.Get<IResourcesLoader>().GetResource(resourcePath, rootObjectType.GetTypeInfo().Assembly, lineInfo);
+ var resString = DependencyService.Get<IResourcesLoader>()?.GetResource(resourcePath, rootObjectType.GetTypeInfo().Assembly, lineInfo);
return StyleSheet.FromString(resString);
}
continue;
if (!propertyName.Equals(XamlParser.McUri, "Ignorable"))
continue;
- (parentNode.IgnorablePrefixes ?? (parentNode.IgnorablePrefixes = new List<string>())).AddRange(propertyValue.Split(','));
+ (parentNode.IgnorablePrefixes ?? (parentNode.IgnorablePrefixes = new List<string>()))?.AddRange(propertyValue.Split(','));
}
foreach (var propertyKvp in node.Properties.ToList())
node = new ElementNode(new XmlType(elementNsUri, elementName, typeArguments), elementNsUri,
reader as IXmlNamespaceResolver, elementXmlInfo.LineNumber, elementXmlInfo.LinePosition);
((IElementNode)node).Properties.AddRange(attributes);
- (node.IgnorablePrefixes ?? (node.IgnorablePrefixes = new List<string>())).AddRange(prefixes);
+ (node.IgnorablePrefixes ?? (node.IgnorablePrefixes = new List<string>()))?.AddRange(prefixes);
ParseXamlElementFor((IElementNode)node, reader);
nodes.Add(node);
NavigationProxy = new NavigationImpl(this);
SetCurrentApplication(this);
- SystemResources = DependencyService.Get<ISystemResourcesProvider>().GetSystemResources();
+ SystemResources = DependencyService.Get<ISystemResourcesProvider>()?.GetSystemResources();
SystemResources.ValuesChanged += OnParentResourcesChanged;
_platformConfigurationRegistry = new Lazy<PlatformConfigurationRegistry<Application>>(() => new PlatformConfigurationRegistry<Application>(this));
}
await SaveSemaphore.WaitAsync();
try
{
- await DependencyService.Get<IDeserializer>().SerializePropertiesAsync(Properties);
+ await DependencyService.Get<IDeserializer>()?.SerializePropertiesAsync(Properties);
}
finally
{
if (e.OldStartingIndex == -1 || e.OldItems?.Count > 1)
goto case NotifyCollectionChangedAction.Reset;
- var removedItem = e.OldItems[0] as TRestrict;
+ var removedItem = e.OldItems?[0] as TRestrict;
if (removedItem == null || !removedItem.Owned)
break;
if (e.NewStartingIndex == -1 || e.OldStartingIndex == -1 || e.NewItems?.Count > 1)
goto case NotifyCollectionChangedAction.Reset;
- var newReplaceItem = e.NewItems[0] as TRestrict;
+ var newReplaceItem = e.NewItems?[0] as TRestrict;
var oldReplaceItem = e.OldItems?[0] as TRestrict;
if ((newReplaceItem == null || !newReplaceItem.Owned) && (oldReplaceItem == null || !oldReplaceItem.Owned))
if (ve != null && ve.IsResourcesCreated)
{
resources = resources ?? new Dictionary<string, object>();
+ if (ve.XamlResources != null)
+ {
foreach (KeyValuePair<string, object> res in ve.XamlResources.MergedResources)
if (!resources.ContainsKey(res.Key))
resources.Add(res.Key, res.Value);
resources[res.Key] = mergedClassStyles;
}
}
+ }
var app = element as Application;
if (app != null && app.SystemResources != null)
{
while (element != null)
{
var ve = element as IResourcesProvider;
- if (ve != null && ve.IsResourcesCreated && ve.XamlResources.TryGetValue(key, out value))
+ if (ve != null && ve.IsResourcesCreated && ve.XamlResources != null && ve.XamlResources.TryGetValue(key, out value))
+ {
return true;
+ }
var app = element as Application;
if (app != null && app.SystemResources != null && app.SystemResources.TryGetValue(key, out value))
+ {
return true;
+ }
element = element.Parent;
}
() =>
(MemberInfo)Property.DeclaringType.GetRuntimeProperty(Property.PropertyName) ?? (MemberInfo)Property.DeclaringType.GetRuntimeMethod("Get" + Property.PropertyName, new[] { typeof(BindableObject) });
- object value = valueconverter.Convert(Value, Property.ReturnType, minforetriever, serviceProvider);
+ object value = valueconverter?.Convert(Value, Property.ReturnType, minforetriever, serviceProvider);
Value = value;
return this;
}
{
public static IEnumerable<StyleSheet> GetStyleSheets(this IResourcesProvider resourcesProvider)
{
+ if (resourcesProvider == null)
+ {
+ yield break;
+ }
if (!resourcesProvider.IsResourcesCreated)
+ {
yield break;
- if (resourcesProvider.XamlResources.StyleSheets == null)
+ }
+ if (resourcesProvider.XamlResources == null || resourcesProvider.XamlResources.StyleSheets == null)
+ {
yield break;
+ }
foreach (var styleSheet in resourcesProvider.XamlResources.StyleSheets)
+ {
yield return styleSheet;
+ }
}
}
}
\ No newline at end of file
/*
- * Copyright(c) 2018 Samsung Electronics Co., Ltd.
+ * 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.
public static readonly BindableProperty HorizontalAlignmentProperty = BindableProperty.Create(nameof(HorizontalAlignment), typeof(HorizontalAlignment), typeof(TextField), HorizontalAlignment.Begin, propertyChanged: (bindable, oldValue, newValue) =>
{
var textField = (TextField)bindable;
- string valueToString = "";
if (newValue != null)
{
- switch ((HorizontalAlignment)newValue)
- {
- case HorizontalAlignment.Begin:
- {
- valueToString = "BEGIN";
- break;
- }
- case HorizontalAlignment.Center:
- {
- valueToString = "CENTER";
- break;
- }
- case HorizontalAlignment.End:
- {
- valueToString = "END";
- break;
- }
- default:
- {
- valueToString = "BEGIN";
- break;
- }
- }
Tizen.NUI.Object.SetProperty(textField.swigCPtr, TextField.Property.HORIZONTAL_ALIGNMENT, new Tizen.NUI.PropertyValue((int)newValue));
}
},
public static readonly BindableProperty VerticalAlignmentProperty = BindableProperty.Create(nameof(TextField.VerticalAlignment), typeof(VerticalAlignment), typeof(TextField), VerticalAlignment.Bottom, propertyChanged: (bindable, oldValue, newValue) =>
{
var textField = (TextField)bindable;
- string valueToString = "";
if (newValue != null)
{
- switch ((VerticalAlignment)newValue)
- {
- case VerticalAlignment.Top: { valueToString = "TOP"; break; }
- case VerticalAlignment.Center: { valueToString = "CENTER"; break; }
- case VerticalAlignment.Bottom: { valueToString = "BOTTOM"; break; }
- default: { valueToString = "BOTTOM"; break; }
- }
Tizen.NUI.Object.SetProperty(textField.swigCPtr, TextField.Property.VERTICAL_ALIGNMENT, new Tizen.NUI.PropertyValue((int)newValue));
}
},
/*
- * Copyright(c) 2018 Samsung Electronics Co., Ltd.
+ * 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.
}
}
+ /// <summary>
/// Downcasts a handle to textLabel handle
/// </summary>
/// <param name="handle"></param>
/*
- * Copyright(c) 2018 Samsung Electronics Co., Ltd.
+ * 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.
{
case "NORMAL": return DrawModeType.Normal;
case "OVERLAY_2D": return DrawModeType.Overlay2D;
+#pragma warning disable CS0618 // Disable deprecated warning as we do need to use the deprecated API here.
case "STENCIL": return DrawModeType.Stencil;
+#pragma warning restore CS0618
default: return DrawModeType.Normal;
}
});
{
if (!BaseHandle.ReferenceEquals(x, null) || !BaseHandle.ReferenceEquals(y, null))
{
- if (x.HasBody())
+ if (x != null && x.HasBody())
{
return x;
}
- if (y.HasBody())
+ if (y != null && y.HasBody())
{
return y;
}
/// ImfManager keyboard type changed.
/// </summary>
/// <since_tizen> 4 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
public event EventHandler<KeyboardTypeChangedEventArgs> KeyboardTypeChanged
{
add
/*
- * Copyright(c) 2018 Samsung Electronics Co., Ltd.
+ * 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.
public enum LayerBehavior
{
/// <summary>
- /// UI control rendering mode.
- /// </summary>
- /// <since_tizen> 3 </since_tizen>
- [Obsolete("Please do not use! This will be deprecated! Please use LayerUI property instead!")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- Layer2D,
- /// <summary>
/// UI control rendering mode (default mode).
/// This mode is designed for UI controls that can overlap. In this
/// mode renderer order will be respective to the tree hierarchy of
/// traversal, the actors would interleave).<br />
/// </summary>
/// <since_tizen> 3 </since_tizen>
- LayerUI = Layer2D,
+ LayerUI,
+
+ /// <summary>
+ /// UI control rendering mode.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ [Obsolete("Please do not use! This will be deprecated! Please use LayerUI property instead!")]
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Layer2D = LayerUI,
+
/// <summary>
/// Layer will use depth test.
/// This mode is designed for a 3 dimensional scene where actors in front
/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * 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.
}
/// <summary>
- /// Graphics BackendType
+ /// Graphics Backend Type.
/// </summary>
- [Obsolete("Please do not use! This will be deprecated!")]
[EditorBrowsable(EditorBrowsableState.Never)]
+ [Obsolete("Please do not use! This will be deprecated!")]
public class Graphics
{
+ /// <summary>
+ /// Graphics Backend Type.
+ /// </summary>
public enum BackendType
{
+ /// <summary>
+ /// The GLES backend.
+ /// </summary>
Gles,
+ /// <summary>
+ /// The Vulkan backend.
+ /// </summary>
Vulkan
}
+
+ /// <summary>
+ /// The backend used by the NUIApplication.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
public static BackendType Backend = BackendType.Gles;
+
internal const string GlesCSharpBinder = "libdali-csharp-binder.so";
internal const string VulkanCSharpBinder = "libdali-csharp-binder-vk.so";
}
/// <since_tizen> 3 </since_tizen>
public Layer GetLayer(uint depth)
{
- if (depth < LayersChildren.Count)
+ if (depth < LayersChildren?.Count)
{
Layer ret = LayersChildren[Convert.ToInt32(depth)];
return ret;
NDalicPINVOKE.Stage_Add(stageCPtr, Layer.getCPtr(layer));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- LayersChildren.Add(layer);
+ LayersChildren?.Add(layer);
}
/// <summary>
NDalicPINVOKE.Stage_Remove(stageCPtr, Layer.getCPtr(layer));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- LayersChildren.Remove(layer);
+ LayersChildren?.Remove(layer);
}
/// <summary>
NDalicPINVOKE.Stage_Add(stageCPtr, Layer.getCPtr(layer));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- LayersChildren.Add(layer);
+ LayersChildren?.Add(layer);
}
internal void Remove(Layer layer)
NDalicPINVOKE.Stage_Remove(stageCPtr, Layer.getCPtr(layer));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- LayersChildren.Remove(layer);
+ LayersChildren?.Remove(layer);
}
internal Vector2 GetSize()
{
_rootLayer = new Layer(NDalicPINVOKE.Stage_GetRootLayer(stageCPtr), true);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- LayersChildren.Add(_rootLayer);
+ LayersChildren?.Add(_rootLayer);
}
return _rootLayer;
}
if (type != null)
_mergedInstance = s_instances.GetValue(type, (key) => (ResourceDictionary)Activator.CreateInstance(key));
else
- _mergedInstance = DependencyService.Get<IResourcesLoader>().CreateFromResource<ResourceDictionary>(resourcePath, assembly, lineInfo);
+ _mergedInstance = DependencyService.Get<IResourcesLoader>()?.CreateFromResource<ResourceDictionary>(resourcePath, assembly, lineInfo);
OnValuesChanged(_mergedInstance.ToArray());
}