using System.Runtime.InteropServices;
using Tizen.Applications;
+/// <summary>
+/// Interoperability support class for Tizen APIs
+/// </summary>
internal static partial class Interop
{
+ /// <summary>
+ /// Interoperability support class for the attach panel APIs
+ /// </summary>
internal static partial class AttachPanel
{
internal enum ErrorCode : int
+/// <summary>
+/// Interoperability support class for the attach panel APIs
+/// </summary>
internal static partial class Interop
{
+ /// <summary>
+ /// Interoperability support class for the API library
+ /// </summary>
internal static partial class Libraries
{
public const string AttachPanel = "libattach-panel.so.0.1.0";
</PropertyGroup>
<ItemGroup>
+ <ProjectReference Include="..\ElmSharp\ElmSharp.csproj" />
<ProjectReference Include="..\Tizen.Applications.Common\Tizen.Applications.Common.csproj" />
</ItemGroup>
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26430.12
+VisualStudioVersion = 15.0.26730.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.AttachPanel", "Tizen.Applications.AttachPanel.csproj", "{C8C93D46-CACE-4BF1-8B50-6A6A00967045}"
+ ProjectSection(ProjectDependencies) = postProject
+ {AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C} = {AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C}
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Common", "..\Tizen.Applications.Common\Tizen.Applications.Common.csproj", "{D2B5F854-4FE1-473C-A8E3-53ABB0A966AA}"
EndProject
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{AFF3D5BA-42DA-40CE-BC57-0DC1E92673B9}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElmSharp", "..\ElmSharp\ElmSharp.csproj", "{AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
{AFF3D5BA-42DA-40CE-BC57-0DC1E92673B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFF3D5BA-42DA-40CE-BC57-0DC1E92673B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFF3D5BA-42DA-40CE-BC57-0DC1E92673B9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AF2CEEB1-B3B2-4E2D-8854-A54871CD0D1C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {7169FEAE-EE0D-4B29-B710-F504A6B82E8C}
+ EndGlobalSection
EndGlobal
+using ElmSharp;
using System;
namespace Tizen.Applications.AttachPanel
/// <param name="conformant">The caller's conformant</param>
/// <exception cref="OutOfMemoryException">Thrown when an attempt to allocate memory fails.</exception>
/// <exception cref="InvalidOperationException">Thrown when the AttachPanel is already exist or the <paramref name="conformant"/> is not a conformant object</exception>
- public AttachPanel(IntPtr conformant)
+ public AttachPanel(EvasObject conformant)
{
if (conformant == IntPtr.Zero)
{
throw new ArgumentNullException("Use the value property, not null value");
}
+
+ IntPtr candidateAttachPanel = new IntPtr();
+ Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.CreateAttachPanel(conformant, ref candidateAttachPanel);
+ CheckException(err);
+
+ Tizen.Log.Debug("AttachPanelSharp", "Success to create an AttachPanel Instance");
+ isCreationSucceed = true;
+ _attachPanel = candidateAttachPanel;
+
+ if (_eventEventHandler == null)
+ {
+ StateEventListenStart();
+ }
+
+ if (_resultEventHandler == null)
+ {
+ ResultEventListenStart();
+ }
+ }
+
+ /// <summary>
+ /// Represents immutable class for attach panel.
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ /// <param name="conformant">The caller's conformant</param>
+ /// <exception cref="OutOfMemoryException">Thrown when an attempt to allocate memory fails.</exception>
+ /// <exception cref="InvalidOperationException">Thrown when the AttachPanel is already exist or the <paramref name="conformant"/> is not a conformant object</exception>
+ public AttachPanel(Conformant conformant)
+ {
+ if (conformant == IntPtr.Zero)
+ {
+ throw new ArgumentNullException("Use the value property, not null value");
+ }
+
IntPtr candidateAttachPanel = new IntPtr();
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.CreateAttachPanel(conformant, ref candidateAttachPanel);
- checkException(err);
+ CheckException(err);
Tizen.Log.Debug("AttachPanelSharp", "Success to create an AttachPanel Instance");
isCreationSucceed = true;
_attachPanel != IntPtr.Zero)
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.DestroyAttachPanel(_attachPanel);
- checkException(err);
+ CheckException(err);
_attachPanel = IntPtr.Zero;
}
}
/// Gets the state of the AttachPanel.
/// </summary>
/// <value>The AttachPanel window state</value>
- public int State
+ public StateType State
{
get
{
- int state;
- Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.GetState(_attachPanel, out state);
- checkException(err);
+ int interopState;
+ Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.GetState(_attachPanel, out interopState);
+ CheckException(err);
+ StateType state = (StateType)Enum.ToObject(typeof(StateType), interopState);
return state;
}
}
/// Gets the value that indicates whether the AttachPanel is visible.
/// </summary>
/// <value>visible value of AttachPanel state</value>
- public int Visible
+ public bool Visible
{
get
{
int visible;
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.GetVisibility(_attachPanel, out visible);
- checkException(err);
- return visible;
+ CheckException(err);
+ return (visible == 1);
}
}
{
bundle = extraData.SafeBundleHandle.DangerousGetHandle();
}
+
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.AddCategory(_attachPanel, (int)category, bundle);
- checkException(err);
+ CheckException(err);
}
/// <summary>
public void RemoveCategory(ContentCategory category)
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.RemoveCategory(_attachPanel, (int)category);
- checkException(err);
+ CheckException(err);
}
/// <summary>
/// <exception cref="OutOfMemoryException">Thrown when an attempt to allocate memory fails.</exception>
public void SetExtraData(ContentCategory category, Bundle extraData)
{
- if(extraData == null)
+ if (extraData == null)
{
- checkException(Interop.AttachPanel.ErrorCode.InvalidParameter);
+ CheckException(Interop.AttachPanel.ErrorCode.InvalidParameter);
}
IntPtr bundle = IntPtr.Zero;
{
bundle = extraData.SafeBundleHandle.DangerousGetHandle();
}
+
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.SetExtraData(_attachPanel, (int)category, bundle);
- checkException(err);
+ CheckException(err);
}
/// <summary>
public void Show()
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.Show(_attachPanel);
- checkException(err);
+ CheckException(err);
}
/// <summary>
/// Shows the attach panel and selects whether or not to animate
/// </summary>
+ /// <param name="animation">A flag which turn on or turn off the animation while attach panel showing.</param>
/// <exception cref="InvalidOperationException">Thrown when the AttachPanel is destroyed</exception>
public void Show(bool animation)
{
if (animation)
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.Show(_attachPanel);
- checkException(err);
+ CheckException(err);
}
else
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.ShowWithoutAnimation(_attachPanel);
- checkException(err);
+ CheckException(err);
}
}
public void Hide()
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.Hide(_attachPanel);
- checkException(err);
+ CheckException(err);
}
/// <summary>
/// Hides the attach panel and selects whether or not to animate
/// </summary>
+ /// <param name="animation">A flag which turn on or turn off the animation while attach panel hiding.</param>
/// <exception cref="InvalidOperationException">Thrown when the AttachPanel is destroyed</exception>
public void Hide(bool animation)
{
if (animation)
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.Hide(_attachPanel);
- checkException(err);
+ CheckException(err);
}
else
{
Interop.AttachPanel.ErrorCode err = Interop.AttachPanel.HideWithoutAnimation(_attachPanel);
- checkException(err);
+ CheckException(err);
}
}
{
StateEventListenStart();
}
+
_eventEventHandler += value;
}
+
remove
{
_eventEventHandler -= value;
{
ResultEventListenStart();
}
+
_resultEventHandler += value;
}
+
remove
{
_resultEventHandler -= value;
namespace Tizen.Applications.AttachPanel
{
+ /// <summary>
+ /// Attach panel internal implementation
+ /// </summary>
public partial class AttachPanel
{
private static IntPtr _attachPanel;
SetEventListener = (attachPanel, eventType, eventInfo, userData) =>
{
- _eventEventHandler?.Invoke(null, new StateEventArgs(attachPanel, (EventType)eventType, eventInfo, userData));
+ _eventEventHandler?.Invoke(null, new StateEventArgs((EventType)eventType));
};
err = Interop.AttachPanel.SetEventCb(_attachPanel, SetEventListener, IntPtr.Zero);
- checkException(err);
+ CheckException(err);
}
+
private void StateEventListenStop()
{
Interop.AttachPanel.ErrorCode err = 0;
- err = Interop.AttachPanel.UnsetEventCb(_attachPanel);
- checkException(err);
+ err = Interop.AttachPanel.UnsetEventCb(_attachPanel);
+ CheckException(err);
}
private void ResultEventListenStart()
{
SafeAppControlHandle handle = new SafeAppControlHandle(resulthandler, false);
AppControl result = new AppControl(handle);
- _resultEventHandler?.Invoke(null, new ResultEventArgs(attachPanel, (ContentCategory)category, result, (AppControlReplyResult)resultCode, userData));
+ _resultEventHandler?.Invoke(null, new ResultEventArgs((ContentCategory)category, result, (AppControlReplyResult)resultCode));
};
err = Interop.AttachPanel.SetResultCb(_attachPanel, SetResultListener, IntPtr.Zero);
- checkException(err);
+ CheckException(err);
}
private void ResultEventListenStop()
{
Interop.AttachPanel.ErrorCode err = 0;
err = Interop.AttachPanel.UnsetResultCb(_attachPanel);
- checkException(err);
+ CheckException(err);
}
- internal static void checkException(Interop.AttachPanel.ErrorCode err)
+ internal static void CheckException(Interop.AttachPanel.ErrorCode err)
{
switch (err)
{
/// </summary>
public class ResultEventArgs : EventArgs
{
- private readonly IntPtr _attachPanel;
private readonly ContentCategory _category;
private readonly AppControl _result;
private readonly AppControlReplyResult _resultCode;
- private readonly IntPtr _userData;
- internal ResultEventArgs(IntPtr attachPanel, ContentCategory category, AppControl result, AppControlReplyResult resultCode, IntPtr userData)
+ internal ResultEventArgs(ContentCategory category, AppControl result, AppControlReplyResult resultCode)
{
- _attachPanel = attachPanel;
_category = category;
_result = result;
_resultCode = resultCode;
- _userData = userData;
}
/// <summary>
- /// Property for attach panel object.
- /// </summary>
- public IntPtr AttachPanel { get { return _attachPanel; } }
-
- /// <summary>
/// Results are from the content category.
/// </summary>
- public ContentCategory Category { get { return _category; } }
+ public ContentCategory Category
+ {
+ get
+ {
+ return _category;
+ }
+ }
/// <summary>
/// Property for result
/// The caller app has to use ExtraData property to get received data.
/// </summary>
- public AppControl Result { get { return _result; } }
+ public AppControl Result
+ {
+ get
+ {
+ return _result;
+ }
+ }
/// <summary>
/// Property for result of AppControl
/// </summary>
- public AppControlReplyResult ResultCode { get { return _resultCode; } }
-
- /// <summary>
- /// Property for user data
- /// </summary>
- public IntPtr UserData { get { return _userData; } }
+ public AppControlReplyResult ResultCode
+ {
+ get
+ {
+ return _resultCode;
+ }
+ }
}
}
/// </summary>
public class StateEventArgs : EventArgs
{
- private readonly IntPtr _attachPanel;
private readonly EventType _eventType;
- private readonly IntPtr _eventInfo;
- private readonly IntPtr _userData;
- internal StateEventArgs(IntPtr attachPanel, EventType eventType, IntPtr eventInfo, IntPtr userData)
+ internal StateEventArgs(EventType eventType)
{
- _attachPanel = attachPanel;
_eventType = eventType;
- _eventInfo = eventInfo;
- _userData = userData;
}
/// <summary>
- /// Property for attach panel object
- /// </summary>
- public IntPtr AttachPanel { get { return _attachPanel; } }
-
- /// <summary>
/// Property for event type.
/// </summary>
- public EventType EventType { get { return _eventType; } }
-
- /// <summary>
- /// Additional event information.
- /// This can be NULL if there are no necessary information.
- /// </summary>
- public IntPtr EventInfo { get { return _eventInfo; } }
-
- /// <summary>
- /// Property for user data.
- /// </summary>
- public IntPtr UserData { get { return _userData; } }
+ public EventType EventType
+ {
+ get
+ {
+ return _eventType;
+ }
+ }
}
}
/// <summary>
/// Gets or sets the icon of notification.
- /// You should set an absolute path for an image file.
+ /// You should set an absolute path for an image file.
/// </summary>
public string Icon { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the sub icon of notification.
/// This SubIcon is displayed in Icon you set.
- /// You should set an absolute path for an image file.
+ /// You should set an absolute path for an image file.
/// </summary>
public string SubIcon { get; set; } = string.Empty;
}
}
+ /// <summary>
+ /// Gets or sets a value indicating whether the notification is Onging or not.
+ /// Default value is false.
+ /// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public bool IsOngoing { get; set; } = false;
return state;
}
+ /// <summary>
+ /// Make a NotificationSafeHandle from Notification.
+ /// </summary>
+ /// <param name="notification">The Notification class.</param>
+ /// <returns>The NotificationSafeHandle class.</returns>
+ /// <exception cref="ArgumentException">Thrown when an argument is invalid.</exception>
[EditorBrowsable(EditorBrowsableState.Never)]
public static NotificationSafeHandle MakeNotificationSafeHandle(Notification notification)
{
return notification.Handle;
}
+ /// <summary>
+ /// Make a Notification from NotificationSafeHandle.
+ /// </summary>
+ /// <param name="handle">The NotificationSafeHandle class.</param>
+ /// <returns>The Notification class.</returns>
+ /// <exception cref="ArgumentException">Thrown when an argument is invalid.</exception>
[EditorBrowsable(EditorBrowsableState.Never)]
public static Notification MakeNotification(NotificationSafeHandle handle)
{
using System.ComponentModel;
using System.Runtime.InteropServices;
+ /// <summary>
+ /// This class manages the notification handle resources.
+ /// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public sealed class NotificationSafeHandle : SafeHandle
{
+ /// <summary>
+ /// Initializes a new instance of the NotificationSafeHandle class.
+ /// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public NotificationSafeHandle()
: base(IntPtr.Zero, true)
get { return this.DangerousGetHandle() == IntPtr.Zero; }
}
+ /// <summary>
+ /// Executes the code required to free the NotificationSafeHandle.
+ /// </summary>
+ /// <returns></returns>
protected override bool ReleaseHandle()
{
Interop.Notification.Destroy(this.handle);
/// </summary>
public string Tag { get; internal set; }
+ /// <summary>
+ /// Gets a value indicating whether the notification is Onging or not.
+ /// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public bool IsOngoing { get; internal set; } = false;
/// </summary>
public bool IsVisible { get; internal set; } = true;
+ /// <summary>
+ /// Gets the event flag.
+ /// If this flag is true, you can do SendEvent.
+ /// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public bool HasEventFlag { get; internal set; } = false;
/// </summary>
public partial class NotificationEventArgs
{
+ /// <summary>
+ /// An object can get a rich notification style to a notification object.
+ /// </summary>
public abstract class StyleArgs
{
internal abstract string Key { get; }
return list;
}
+ /// <summary>
+ /// Sends occured event from viewer application to the notification owner.
+ /// </summary>
+ /// <param name="uniqueNumber">The unique number of the notification.</param>
+ /// <param name="type">Event type on notification.</param>
+ /// <exception cref="ArgumentException">Thrown in case of an invalid parameter.</exception>
+ /// <exception cref="UnauthorizedAccessException"> Thrown in case of a permission is denied.</exception>
+ /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception>
+ /// <privilege>http://tizen.org/privilege/notification</privilege>
[EditorBrowsable(EditorBrowsableState.Never)]
public static void SendEvent(int uniqueNumber, UserEventType type)
{
{
internal IntPtr Handle;
internal string Id;
- protected static readonly string LogTag = typeof(WidgetBase).Namespace;
+ private const string LogTag = "Tizen.Applications.WidgetBase";
/// <summary>
/// Window object for this widget instance.
/// </summary>
public class WidgetControl : IDisposable
{
- protected static readonly string LogTag = "WidgetControl";
+ private const string LogTag = "Tizen.Applications.WidgetControl";
/// <summary>
/// Class for the widget instance.
/// </summary>
[DllImport(Libraries.MediaContent, EntryPoint = "image_meta_get_date_taken", CallingConvention = CallingConvention.Cdecl)]
internal static extern MediaContentError GetDateTaken(IntPtr handle, out IntPtr dateTaken);
- [DllImport(Libraries.MediaContent, EntryPoint = "image_meta_get_burst_id", CallingConvention = CallingConvention.Cdecl)]
- internal static extern MediaContentError GetBurstId(IntPtr handle, out IntPtr burstId);
-
[DllImport(Libraries.MediaContent, EntryPoint = "image_meta_get_exposure_time", CallingConvention = CallingConvention.Cdecl)]
internal static extern MediaContentError GetExposureTime(IntPtr handle, out IntPtr exposureTime);
[DllImport(Libraries.MediaContent, EntryPoint = "image_meta_get_model", CallingConvention = CallingConvention.Cdecl)]
internal static extern MediaContentError GetModel(IntPtr handle, out IntPtr model);
- [DllImport(Libraries.MediaContent, EntryPoint = "image_meta_is_burst_shot", CallingConvention = CallingConvention.Cdecl)]
- internal static extern MediaContentError IsBurstShot(IntPtr handle, out bool isBurstShot);
-
[DllImport(Libraries.MediaContent, EntryPoint = "image_meta_get_media_id", CallingConvention = CallingConvention.Cdecl)]
internal static extern MediaContentError GetMediaId(IntPtr handle, out IntPtr mediaId);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void InsertCompletedCallback(MediaContentError error, IntPtr userData);
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- internal delegate void InsertBurstShotCompletedCallback(MediaContentError error, IntPtr userData);
-
[DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_to_db")]
internal static extern MediaContentError Insert(string filePath, out MediaInfoHandle info);
internal static extern MediaContentError BatchInsert(string[] filePathArray, int arrayLength,
InsertCompletedCallback callback, IntPtr userData = default(IntPtr));
- [DllImport(Libraries.MediaContent, EntryPoint = "media_info_insert_burst_shot_to_db")]
- internal static extern MediaContentError BurstShotInsert(string[] filePathArray, int arrayLength,
- InsertBurstShotCompletedCallback callback, IntPtr userData = default(IntPtr));
-
[DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_from_db")]
internal static extern MediaContentError Delete(string mediaId);
- [DllImport(Libraries.MediaContent, EntryPoint = "media_info_delete_batch_from_db")]
- internal static extern MediaContentError BatchDelete(FilterHandle filter);
-
[DllImport(Libraries.MediaContent, EntryPoint = "media_info_destroy")]
internal static extern MediaContentError Destroy(IntPtr handle);
[DllImport(Libraries.MediaContent, EntryPoint = "media_info_cancel_thumbnail")]
internal static extern MediaContentError CancelThumbnail(MediaInfoHandle mediaInformationHandle);
-
[DllImport(Libraries.MediaContent, EntryPoint = "media_info_start_face_detection")]
internal static extern MediaContentError StartFaceDetection(MediaInfoHandle handle,
FaceDetectionCompletedCallback callback, IntPtr userData = default(IntPtr));
public static string Orientation => "MEDIA_ORIENTATION";
/// <summary>
- /// Gets the column name for the burst ID of media.
- /// </summary>
- /// <value>The column name for the burst ID of media.</value>
- /// <remarks>
- /// The value type is string.
- /// </remarks>
- /// <seealso cref="ImageInfo.BurstId"/>
- public static string BurstId => "BURST_ID";
-
- /// <summary>
/// Gets the column name for the rating of media.
/// </summary>
/// <value>The column name for the rating of media.</value>
/// <seealso cref="MediaInfo.Category"/>
public static string Category => "MEDIA_CATEGORY";
-
/// <summary>
/// Gets the column name for the location tag of media.
/// </summary>
public static string Model => "MEDIA_MODEL";
}
-
/// <summary>
/// Provides the folder column names that can be used for Select and Count commands.
/// </summary>
Orientation = InteropHelper.GetValue<Orientation>(imageHandle, Interop.ImageInfo.GetOrientation);
DateTaken = InteropHelper.GetString(imageHandle, Interop.ImageInfo.GetDateTaken);
- BurstId = InteropHelper.GetString(imageHandle, Interop.ImageInfo.GetBurstId);
ExposureTime = InteropHelper.GetString(imageHandle, Interop.ImageInfo.GetExposureTime);
FNumber = InteropHelper.GetValue<double>(imageHandle, Interop.ImageInfo.GetFNumber);
Model = InteropHelper.GetString(imageHandle, Interop.ImageInfo.GetModel);
- IsBurstShot = InteropHelper.GetValue<bool>(imageHandle, Interop.ImageInfo.IsBurstShot);
-
}
finally
{
public string DateTaken { get; }
/// <summary>
- /// Gets the burst shot ID.
- /// </summary>
- /// <value>The burst shot ID if it is a burst shot, otherwise an empty string.</value>
- /// <seealso cref="IsBurstShot"/>
- public string BurstId { get; }
-
- /// <summary>
/// Gets the exposure time from EXIF.
/// </summary>
/// <value>The exposure time from EXIF.</value>
/// <summary>
/// Gets the FNumber from EXIF.
/// </summary>
- /// <value>The FNumber from exif.</value>
+ /// <value>The FNumber from EXIF.</value>
public double FNumber { get; }
/// <summary>
/// </summary>
/// <value>The model from EXIF.</value>
public string Model { get; }
-
- /// <summary>
- /// Gets the value indicating whether the media is a burst shot image.
- /// </summary>
- /// <value>true if the media is a burst shot image, otherwise false.</value>
- public bool IsBurstShot { get; }
}
}
}
}
-
private static readonly Interop.Content.MediaContentDBUpdatedCallback _folderUpdatedCb = (
MediaContentError error, int pid, ItemType updateItem, OperationType updateType,
MediaType mediaType, string uuid, string filePath, string mimeType, IntPtr _) =>
/// </summary>
Altitude,
/// <summary>
- /// Burst shot.
- /// </summary>
- BurstImage,
- /// <summary>
/// Rating.
/// </summary>
Rating = 20,
Bookmark.FromHandle);
}
-
/// <summary>
/// Retrieves the number of the face information added to or detected from the media.
/// </summary>
Tag.FromHandle);
}
-
/// <summary>
/// Retrieves the number of the media information.
/// </summary>
}
}
- /// <summary>
- /// Adds burst shot images into the media database.
- /// </summary>
- /// <param name="paths">The paths of the burst shot images to add.</param>
- /// <returns>A task that represents the asynchronous add operation.</returns>
- /// <remarks>
- /// The paths that already exist in the database.\n
- /// At most 300 items can be added at once.
- /// \n
- /// If you want to access internal storage, you should add privilege http://tizen.org/privilege/mediastorage.\n
- /// If you want to access external storage, you should add privilege http://tizen.org/privilege/externalstorage.
- /// </remarks>
- /// <privilege>http://tizen.org/privilege/content.write</privilege>
- /// <privilege>http://tizen.org/privilege/mediastorage</privilege>
- /// <privilege>http://tizen.org/privilege/externalstorage</privilege>
- /// <exception cref="InvalidOperationException">The <see cref="MediaDatabase"/> is disconnected.</exception>
- /// <exception cref="ObjectDisposedException">The <see cref="MediaDatabase"/> has already been disposed of.</exception>
- /// <exception cref="MediaDatabaseException">An error occurred while executing the command.</exception>
- /// <exception cref="ArgumentNullException"><paramref name="paths"/> is null.</exception>
- /// <exception cref="ArgumentException">
- /// <paramref name="paths"/> contains null.\n
- /// -or-\n
- /// <paramref name="paths"/> contains the invalid path.\n
- /// -or-\n
- /// The number of <paramref name="paths"/> is 300 or more items.
- /// </exception>
- /// <exception cref="FileNotFoundException"><paramref name="paths"/> contains a path that does not exist.</exception>
- /// <exception cref="UnauthorizedAccessException">The caller has no required privilege.</exception>
- public async Task AddBurstShotImagesAsync(IEnumerable<string> paths)
- {
- ValidateDatabase();
-
- ValidatePaths(paths);
-
- var tcs = new TaskCompletionSource<bool>(TaskContinuationOptions.RunContinuationsAsynchronously);
- string[] pathArray = paths.ToArray();
-
- Interop.MediaInfo.InsertBurstShotCompletedCallback callback = (error, _) =>
- {
- if (error == MediaContentError.None)
- {
- tcs.TrySetResult(true);
- }
- else
- {
- tcs.TrySetException(error.AsException("Failed to add burst shot images"));
- }
- };
-
- using (ObjectKeeper.Get(callback))
- {
- Interop.MediaInfo.BurstShotInsert(pathArray, pathArray.Length, callback).
- ThrowIfError("Failed to add burst shots to db");
-
- await tcs.Task;
- }
- }
-
private static void SetUpdateValue<T>(Interop.MediaInfoHandle handle, T value,
Func<Interop.MediaInfoHandle, T, MediaContentError> func)
{
}
}
-
private static void SetUpdateValue<T>(Interop.MediaInfoHandle handle, Nullable<T> value,
Func<Interop.MediaInfoHandle, T, MediaContentError> func) where T : struct
{
_deviceHandle = handle;
}
+ /// <summary>
+ /// MtpDevice destructor.
+ /// </summary>
~MtpDevice()
{
Dispose(false);
}
+ /// <summary>
+ /// Dispose
+ /// </summary>
public void Dispose()
{
Dispose(true);
/// <since_tizen> 5 </since_tizen>
public enum MtpError
{
+ /// <summary>
+ /// Successful.
+ /// </summary>
None = ErrorCode.None,
+ /// <summary>
+ /// I/O Error.
+ /// </summary>
IoError = ErrorCode.IoError,
+ /// <summary>
+ /// Invalid Parameter.
+ /// </summary>
InvalidParameterError = ErrorCode.InvalidParameter,
+ /// <summary>
+ /// Out of memory.
+ /// </summary>
OutOfMemoryError = ErrorCode.OutOfMemory,
+ /// <summary>
+ /// Permission Denied.
+ /// </summary>
PermissionDeniedError = ErrorCode.PermissionDenied,
+ /// <summary>
+ /// Not Supported.
+ /// </summary>
NotSupportedError = ErrorCode.NotSupported,
-
+ /// <summary>
+ /// Not available communication with Mtp framework.
+ /// </summary>
CommunicationError = MtpErrorValue.Base | 0x01,
+ /// <summary>
+ /// Controller Error.
+ /// </summary>
ControllerError = MtpErrorValue.Base | 0x02,
+ /// <summary>
+ /// No device.
+ /// </summary>
NoDeviceError = MtpErrorValue.Base | 0x03,
+ /// <summary>
+ /// Not Initialized.
+ /// </summary>
NotInitializedError = MtpErrorValue.Base | 0x04,
+ /// <summary>
+ /// Not Activated.
+ /// </summary>
NotActivatedError = MtpErrorValue.Base | 0x05,
+ /// <summary>
+ /// Not Activated Communication.
+ /// </summary>
NotActivatedCommunicationError = MtpErrorValue.Base | 0x06,
+ /// <summary>
+ /// Plugin Fail.
+ /// </summary>
PluginFailError = MtpErrorValue.Base | 0x07
}
_objectHandle = objectHandle;
}
+ /// <summary>
+ /// MtpObject destructor.
+ /// </summary>
~MtpObject()
{
Dispose(false);
}
+ /// <summary>
+ /// Dispose
+ /// </summary>
public void Dispose()
{
Dispose(true);
_storageHandle = storageHandle;
}
+ /// <summary>
+ /// MtpStorage destructor.
+ /// </summary>
~MtpStorage()
{
Dispose(false);
}
+ /// <summary>
+ /// Dispose
+ /// </summary>
public void Dispose()
{
Dispose(true);
}
[StructLayout(LayoutKind.Sequential)]
- internal struct sTEEC_SharedMemoryImp
+ internal class TEEC_SharedMemory
{
- public IntPtr context;
- public IntPtr context_imp;
+ public IntPtr buffer;
+ public UInt32 size;
public UInt32 flags;
- public UInt32 memid;
+ public IntPtr imp;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct TEEC_Value
+ {
+ public UInt32 a;
+ public UInt32 b;
}
[StructLayout(LayoutKind.Sequential)]
- internal struct TEEC_SharedMemory
+ internal struct TEEC_TempMemoryReference
{
public IntPtr buffer;
public UInt32 size;
- public UInt32 flags;
}
[StructLayout(LayoutKind.Sequential)]
+ internal struct TEEC_RegisteredMemoryReference
+ {
+ public TEEC_SharedMemory parent;
+ public UInt32 size;
+ public UInt32 offset;
+ }
+
+ [StructLayout(LayoutKind.Explicit)]
internal struct TEEC_Parameter
{
- public UInt32 a;
- public UInt32 b;
+ [FieldOffset(0)]
+ public TEEC_TempMemoryReference tmpref;
+ [FieldOffset(0)]
+ public TEEC_RegisteredMemoryReference memref;
+ [FieldOffset(0)]
+ public TEEC_Value value;
}
[StructLayout(LayoutKind.Sequential)]
/// This property represents the size of the buffer.
/// </summary>
/// <since_tizen> 3 </since_tizen>
- public uint Size { get; }
+ public uint Size { get; internal set; }
};
/// <summary>
/// This property represents the size (in bytes) of the shared memory.
/// </summary>
/// <since_tizen> 3 </since_tizen>
- public uint Size { get; }
+ public uint Size { get; internal set; }
/// <summary>
/// This property represents the offset (in bytes) from the start of the shared memory.
/// </summary>
/// This property represents an unsigned integer A.
/// </summary>
/// <since_tizen> 3 </since_tizen>
- public uint A { get; }
+ public uint A { get; internal set; }
/// <summary>
/// This property represents an unsigned integer B.
/// </summary>
/// <since_tizen> 3 </since_tizen>
- public uint B { get; }
+ public uint B { get; internal set; }
};
this.session = new Interop.TEEC_Session();
}
+ /// <summary>
+ /// Destructor of the class.
+ /// </summary>
~Session()
{
Close();
}
+ internal UInt32 InitParam(ref Interop.TEEC_Parameter dst, Parameter src)
+ {
+ switch (src.NativeType) {
+ case (int)TEFValueType.Input:
+ case (int)TEFValueType.Output:
+ case (int)TEFValueType.InOut:
+ dst.value.a = ((Value)src).A;
+ dst.value.b = ((Value)src).B;
+ break;
+
+ case (int)TEFTempMemoryType.Input:
+ case (int)TEFTempMemoryType.Output:
+ case (int)TEFTempMemoryType.InOut:
+ dst.tmpref.buffer = ((TempMemoryReference)src).Buffer;
+ dst.tmpref.size = ((TempMemoryReference)src).Size;
+ break;
+
+ case (int)TEFRegisteredMemoryType.Whole:
+ case (int)TEFRegisteredMemoryType.PartialInput:
+ case (int)TEFRegisteredMemoryType.PartialOutput:
+ case (int)TEFRegisteredMemoryType.PartialInOut:
+ dst.memref.parent = ((RegisteredMemoryReference)src).Parent.shm;
+ dst.memref.size = ((RegisteredMemoryReference)src).Size;
+ dst.memref.offset = ((RegisteredMemoryReference)src).Offset;
+ break;
+
+ default: return 0;
+ }
+ return src.NativeType;
+ }
+
+ internal void UpdateParam(Interop.TEEC_Parameter src, ref Parameter dst)
+ {
+ switch (dst.NativeType) {
+ case (int)TEFValueType.Input:
+ case (int)TEFValueType.Output:
+ case (int)TEFValueType.InOut:
+ ((Value)dst).A = src.value.a;
+ ((Value)dst).B = src.value.b;
+ break;
+
+ case (int)TEFTempMemoryType.Input:
+ case (int)TEFTempMemoryType.Output:
+ case (int)TEFTempMemoryType.InOut:
+ ((TempMemoryReference)dst).Size = src.tmpref.size;
+ break;
+
+ case (int)TEFRegisteredMemoryType.Whole:
+ case (int)TEFRegisteredMemoryType.PartialInput:
+ case (int)TEFRegisteredMemoryType.PartialOutput:
+ case (int)TEFRegisteredMemoryType.PartialInOut:
+ ((RegisteredMemoryReference)dst).Size = src.memref.size;
+ break;
+
+ default: break;
+ }
+ }
+
internal void Open(Guid destination, uint loginMethod, byte[] connectionData, Parameter[] paramlist)
{
Interop.TEEC_UUID uuid = Interop.TEEC_UUID.ToTeecUuid(destination);
Interop.TEEC_Operation op = new Interop.TEEC_Operation();
- uint ro;
+ op.started=0;
+ op.paramTypes=0;
+ for (int i=0; i < 4 && i < paramlist.Length; ++i) {
+ op.paramTypes |= InitParam(ref op.paramlist[i], paramlist[i]) << (4*i);
+ }
+
+ uint ro;
int ret = Interop.Libteec.OpenSession(ref context, ref session, ref uuid, loginMethod, connectionData, ref op, out ro);
//MAYBE map origin of return code to specyfic Exception
Interop.CheckNThrowException(ret, string.Format("OpenSession('{0}')", destination));
+ for (int i=0; i < 4 && i < paramlist.Length; ++i) {
+ UpdateParam(op.paramlist[i], ref paramlist[i]);
+ }
}
/// <summary>
Interop.TEEC_Operation op = new Interop.TEEC_Operation();
op.started=0;
op.paramTypes=0;
-
- for (int i=0; i < 4; ++i) {
- Parameter p = paramlist[i];
- //TODO fill TEEC_Operation struct
+ for (int i=0; i < 4 && i < paramlist.Length; ++i) {
+ op.paramTypes |= InitParam(ref op.paramlist[i], paramlist[i]) << (4*i);
}
uint ro;
int ret = Interop.Libteec.InvokeCommand(ref session, commandID, ref op, out ro);
//MAYBE map origin of return code to specific Exception
Interop.CheckNThrowException(ret, string.Format("InvokeCommand({0})", commandID));
+ for (int i=0; i < 4 && i < paramlist.Length; ++i) {
+ UpdateParam(op.paramlist[i], ref paramlist[i]);
+ }
}
/// <summary>
context = new Interop.TEEC_Context();
if (name != null && name.Length == 0)
name = null;
- int ret = Interop.Libteec.InitializeContext(name, ref context);
- Interop.CheckNThrowException(ret, string.Format("InititalizeContext('{0}')", name));
+ try {
+ int ret = Interop.Libteec.InitializeContext(name, ref context);
+ Interop.CheckNThrowException(ret, string.Format("InititalizeContext('{0}')", name));
+ }
+ catch (global::System.DllNotFoundException e)
+ {
+ unchecked {
+ Interop.CheckNThrowException((int)Interop.LibteecError.NotImplemented, "Not found: " + e.Message);
+ }
+ }
}
+ /// <summary>
+ /// Destructor of the class.
+ /// </summary>
~Context()
{
Dispose();
/// <privlevel>partner</privlevel>
/// <feature>http://tizen.org/feature/security.tee</feature>
public void Dispose() {
- Interop.Libteec.FinalizeContext(ref context);
- //context.imp = null;
+ try {
+ Interop.Libteec.FinalizeContext(ref context);
+ }
+ catch (global::System.DllNotFoundException) { }
}
/// <summary>
the format of the messages which pass over the channel, or the protocols used by specific
Trusted Applications.
+For security reasons, each device vendor usually uses their own TEE solution.
+If you intend your LibTeec application to be used on a real device,
+you must test your application on the TEE solution provided by the specific vendor.
+When developing and installing your trusted application, refer to the documentation provided by the vendor.
+
## Example
The following example demonstrates how to invoke command on Trused Application.
private const string LogTag = "Tizen.System.Feedback";
private readonly FeedbackPattern[] Pattern = new FeedbackPattern[39];
+
+ /// <summary>
+ /// Constructor of Feedback class
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ /// <exception cref="NotSupportedException">Thrown when failed becuase the device (haptic, sound) is not supported.</exception>
+ /// <exception cref="InvalidOperationException">Thrown when failed because of a system error.</exception>
+ /// <privilege>http://tizen.org/privilege/haptic</privilege>
+ /// <example>
+ /// <code>
+ /// Feedback feedback = new Feedback();
+ /// </code>
+ /// </example>
public Feedback()
{
Pattern[0].PatternNumber = 0;
}
}
+ /// <summary>
+ /// Finalizes an instance of the Feedback class.
+ /// </summary>
~Feedback()
{
Interop.Feedback.FeedbackError res = (Interop.Feedback.FeedbackError)Interop.Feedback.Deinitialize();
/// <summary>
/// EventArgs type for the IncomingCallRingtoneChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class IncomingCallRingtoneChangedEventArgs : EventArgs
{
private readonly string _incomingCallRingtone = null;
/// <summary>
/// EventArgs type for the WallpaperHomeScreenChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class WallpaperHomeScreenChangedEventArgs : EventArgs
{
private readonly string _wallpaperHomeScreen = null;
/// <summary>
/// EventArgs type for the WallpaperLockScreenChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class WallpaperLockScreenChangedEventArgs : EventArgs
{
private readonly string _wallpaperLockScreen = null;
/// <summary>
/// EventArgs type for the FontSizeChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class FontSizeChangedEventArgs : EventArgs
{
private readonly SystemSettingsFontSize _fontSize;
/// <summary>
/// EventArgs type for the FontTypeChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class FontTypeChangedEventArgs : EventArgs
{
private readonly string _fontType = null;
/// <summary>
/// EventArgs type for the MotionActivationChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class MotionActivationSettingChangedEventArgs : EventArgs
{
private readonly bool _motionActivation;
/// <summary>
/// EventArgs type for the EmailAlertRingtoneChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class EmailAlertRingtoneChangedEventArgs : EventArgs
{
private readonly string _emailAlertRingtone = null;
/// <summary>
/// EventArgs type for the UsbDebuggingSettingChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class UsbDebuggingSettingChangedEventArgs : EventArgs
{
private readonly bool _usbDebuggingEnabled;
/// <summary>
/// EventArgs type for the Data3GNetworkSettingChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class Data3GNetworkSettingChangedEventArgs : EventArgs
{
private readonly bool _data3GNetworkEnabled;
/// <summary>
/// EventArgs type for the LockscreenAppChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class LockscreenAppChangedEventArgs : EventArgs
{
private readonly string _lockscreenApp = null;
/// <summary>
/// EventArgs type for the LocaleCountryChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class LocaleCountryChangedEventArgs : EventArgs
{
private readonly string _localeCountry = null;
/// <summary>
/// EventArgs type for the LocaleLanguageChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class LocaleLanguageChangedEventArgs : EventArgs
{
private readonly string _localeLanguage = null;
/// <summary>
/// EventArgs type for the LocaleTimeFormat24HourChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class LocaleTimeFormat24HourSettingChangedEventArgs : EventArgs
{
private readonly bool _localeTimeFormat24Hour;
/// <summary>
/// EventArgs type for the LocaleTimeZoneChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class LocaleTimeZoneChangedEventArgs : EventArgs
{
private readonly string _localeTimeZone = null;
/// <summary>
/// EventArgs type for the TimeChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class TimeChangedEventArgs : EventArgs
{
private readonly int _time;
/// <summary>
/// EventArgs type for the SoundLockChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class SoundLockSettingChangedEventArgs : EventArgs
{
private readonly bool _soundLock;
/// <summary>
/// EventArgs type for the SoundSilentModeChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class SoundSilentModeSettingChangedEventArgs : EventArgs
{
private readonly bool _soundSilentMode;
/// <summary>
/// EventArgs type for the SoundTouchChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class SoundTouchSettingChangedEventArgs : EventArgs
{
private readonly bool _soundTouch;
/// <summary>
/// EventArgs type for the DisplayScreenRotationAutoChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class DisplayScreenRotationAutoSettingChangedEventArgs : EventArgs
{
private readonly bool _displayScreenRotationAuto;
/// <summary>
/// EventArgs type for the DeviceNameChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class DeviceNameChangedEventArgs : EventArgs
{
private readonly string _deviceName = null;
/// <summary>
/// EventArgs type for the MotionSettingChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class MotionSettingChangedEventArgs : EventArgs
{
private readonly bool _motionEnabled;
/// <summary>
/// EventArgs type for the NetworkWifiNotificationChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class NetworkWifiNotificationSettingChangedEventArgs : EventArgs
{
private readonly bool _networkWifiNotification;
/// <summary>
/// EventArgs type for the NetworkFlightModeChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class NetworkFlightModeSettingChangedEventArgs : EventArgs
{
private readonly bool _networkFlightMode;
/// <summary>
/// EventArgs type for the ScreenBacklightTimeChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class ScreenBacklightTimeChangedEventArgs : EventArgs
{
private readonly int _screenBacklightTime;
/// <summary>
/// EventArgs type for the SoundNotificationChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class SoundNotificationChangedEventArgs : EventArgs
{
private readonly string _soundNotification = null;
/// <summary>
/// EventArgs type for the SoundNotificationRepetitionPeriodChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class SoundNotificationRepetitionPeriodChangedEventArgs : EventArgs
{
private readonly int _soundNotificationRepetitionPeriod;
/// <summary>
/// EventArgs type for the LockStateChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class LockStateChangedEventArgs : EventArgs
{
private readonly SystemSettingsIdleLockState _lockState;
/// <summary>
/// EventArgs type for the AdsIdChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class AdsIdChangedEventArgs : EventArgs
{
private readonly string _adsId = null;
/// <summary>
/// EventArgs type for the UltraDataSaveChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class UltraDataSaveChangedEventArgs : EventArgs
{
private readonly SystemSettingsUdsState _ultraDataSave = SystemSettingsUdsState.UdsOff;
/// <summary>
/// EventArgs type for the UltraDataSavePackageListChanged event.
/// </summary>
+ /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+ /// <privlevel>platform</privlevel>
public class UltraDataSavePackageListChangedEventArgs : EventArgs
{
private readonly string _ultraDataSavePackageList = null;
Entry entry3 = new Entry(window)
{
- AlignmentX = -1,
- AlignmentY = 0,
- WeightX = 1,
- WeightY = 1,
IsSingleLine = true,
Scrollable = true,
};
entry3.SetPartText("guide", "<span color=#808080FF font_size=28 align=left valign=top wrap=mixed>Enter a System.Double</span>");
- //entry3.Geometry = new Rect(0, 163, 720, 37);
+ entry3.Geometry = new Rect(0, 100, 720, 37);
entry3.Show();
var capital1 = new Entry(window)
box.PackEnd(entry1);
box.PackEnd(entry2);
- box.PackEnd(entry3);
box.PackEnd(capital1);
box.PackEnd(capital2);
box.PackEnd(capital3);
entry1.Show();
entry2.Show();
- entry3.Show();
capital1.Show();
capital2.Show();
capital3.Show();