/
ReceivedAppControl.cs
152 lines (146 loc) · 5.84 KB
/
ReceivedAppControl.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* 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;
namespace Tizen.Applications
{
/// <summary>
/// Represents the received AppControl.
/// </summary>
/// <example>
/// <code>
/// public class ReceivedAppControlExample : UIApplication
/// {
/// // ...
/// protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
/// {
/// ReceivedAppControl control = e.ReceivedAppControl;
/// if (control.Operation == AppControlOperations.Pick)
/// {
/// Log.Debug(LogTag, "Received AppControl is Pick");
/// }
/// if (control.IsReplyRequest)
/// {
/// AppControl replyRequest = new AppControl();
/// replyRequest.ExtraData.Add("myKey", "I'm replying");
/// control.ReplyToLaunchRequest(replyRequest, AppControlReplyResult.Succeeded);
/// }
/// }
/// }
/// </code>
/// </example>
/// <since_tizen> 3 </since_tizen>
public class ReceivedAppControl : AppControl
{
private const string LogTag = "Tizen.Applications";
/// <summary>
/// Initializes a ReceivedAppControl class.
/// </summary>
/// <param name="handle">App control handle</param>
/// <since_tizen> 3 </since_tizen>
public ReceivedAppControl(SafeAppControlHandle handle) : base(handle)
{
}
/// <summary>
/// Gets the application ID of the caller from the launch request.
/// </summary>
/// <value>
/// The application ID of the caller.
/// </value>
/// <example>
/// <code>
/// protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
/// {
/// ReceivedAppControl control = e.ReceivedAppControl;
/// string caller = control.CallerApplicationId;
/// }
/// </code>
/// </example>
/// <since_tizen> 3 </since_tizen>
public string CallerApplicationId
{
get
{
string value = String.Empty;
Interop.AppControl.ErrorCode err = Interop.AppControl.GetCaller(SafeAppControlHandle, out value);
if (err != Interop.AppControl.ErrorCode.None)
{
Log.Warn(LogTag, "Failed to get the caller application id from the AppControl. Err = " + err);
}
return value;
}
}
/// <summary>
/// Checks whether the caller is requesting a reply from the launch request.
/// </summary>
/// <value>
/// If true, this ReceivedAppControl is requested by the caller, otherwise false
/// </value>
/// <example>
/// <code>
/// protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
/// {
/// ReceivedAppControl control = e.ReceivedAppControl;
/// bool isReply = control.IsReplyRequest;
/// }
/// </code>
/// </example>
/// <since_tizen> 3 </since_tizen>
public bool IsReplyRequest
{
get
{
bool value = false;
Interop.AppControl.ErrorCode err = Interop.AppControl.IsReplyRequested(SafeAppControlHandle, out value);
if (err != Interop.AppControl.ErrorCode.None)
{
Log.Warn(LogTag, "Failed to check the reply of the AppControl is requested. Err = " + err);
}
return value;
}
}
/// <summary>
/// Replies to the launch request sent by the caller.
/// If the caller application sends the launch request to receive the result, the callee application can return the result back to the caller.
/// </summary>
/// <param name="replyRequest">The AppControl in which the results of the callee are contained.</param>
/// <param name="result">The result code of the launch request.</param>
/// <example>
/// <code>
/// protected override void OnAppControlReceived(AppControlReceivedEventArgs e)
/// {
/// ReceivedAppControl control = e.ReceivedAppControl;
/// if (control.IsReplyRequest)
/// {
/// AppControl replyRequest = new AppControl();
/// replyRequest.ExtraData.Add("myKey", "I'm replying");
/// control.ReplyToLaunchRequest(replyRequest, AppControlReplyResult.Succeeded);
/// }
/// }
/// </code>
/// </example>
/// <since_tizen> 3 </since_tizen>
public void ReplyToLaunchRequest(AppControl replyRequest, AppControlReplyResult result)
{
if (replyRequest == null)
{
throw new ArgumentNullException("replyRequest");
}
Interop.AppControl.ErrorCode err = Interop.AppControl.ReplyToLaunchRequest(replyRequest.SafeAppControlHandle, this.SafeAppControlHandle, (int)result);
if (err != Interop.AppControl.ErrorCode.None)
throw new InvalidOperationException("Failed to reply. Err = " + err);
}
}
}