8753d823a602323620a555a4579eb24b7d4f34e1
[platform/framework/native/appfw.git] / src / app / inc / FApp_AppArg.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file        FApp_AppArg.h
20  * @brief       This is the header file of the _AppArg class.
21  *
22  * This header file contains the declarations of the _AppArg class.
23  */
24
25 #ifndef _FAPP_INTERNAL_APP_ARG_H_
26 #define _FAPP_INTERNAL_APP_ARG_H_
27
28 #include <bundle.h>
29
30 #include <FBaseObject.h>
31 #include <FAppTypes.h>
32
33 #include "FApp_Types.h"
34
35 namespace Tizen { namespace Base { namespace Collection {
36 class ArrayList;
37 class IList;
38 class HashMap;
39 }}}
40
41 namespace Tizen { namespace App
42 {
43
44 class _AppControlImpl;
45 class _SqlDataControlImpl;
46 class _MapDataControlImpl;
47
48 enum _DataControlRequestType
49 {
50         _DATACONTROL_REQUEST_TYPE_UNDEFINED = 0,
51         _DATACONTROL_REQUEST_TYPE_SQL_QUERY,
52         _DATACONTROL_REQUEST_TYPE_SQL_INSERT,
53         _DATACONTROL_REQUEST_TYPE_SQL_UPDATE,
54         _DATACONTROL_REQUEST_TYPE_SQL_DELETE,
55         _DATACONTROL_REQUEST_TYPE_MAP_QUERY,
56         _DATACONTROL_REQUEST_TYPE_MAP_INSERT,
57         _DATACONTROL_REQUEST_TYPE_MAP_UPDATE,
58         _DATACONTROL_REQUEST_TYPE_MAP_DELETE
59 };
60
61 #define OSP_K_LAUNCH_TYPE   "__OSP_LAUNCH_TYPE__"
62 #define OSP_K_ARG           "__OSP_ARGS__"
63 #define OSP_K_COND          "__OSP_COND_NAME__"
64 #define OSP_K_APPID         "__OSP_APPID__"
65 #define OSP_K_REQUEST_ID    "__OSP_REQUEST_ID__"
66 #define OSP_K_APPCONTROL_INTERNAL_OPERATION "__OSP_APPCONTROL_INTERNAL_INTERNAL_OPERATION__"
67 #define OSP_K_DATACONTROL_PROVIDER      "__OSP_DATACONTROL_PROVIDER__"
68 #define OSP_K_DATACONTROL_REQUEST_TYPE  "__OSP_DATACONTROL_REQUEST_TYPE__"
69
70 /**
71  * @class        _AppArg
72  * @brief
73  * @since 2.1
74  */
75 class _OSP_EXPORT_ _AppArg
76 {
77 public:
78         _AppArg(void);
79
80         ~_AppArg(void);
81
82         result Construct(const Tizen::Base::String& argText);
83
84         result Construct(const Tizen::Base::Collection::IList* pList);
85
86         result Construct(const Tizen::Base::String* pUri, const Tizen::Base::String* pMime, const Tizen::Base::Collection::IMap* pMap);
87
88         result Construct(const _AppControlImpl& ac, const Tizen::Base::Collection::IList* pList);
89
90         result Construct(const _AppControlImpl& ac, const Tizen::Base::String* pUri, const Tizen::Base::String* pMime, const Tizen::Base::Collection::IMap* pMap);
91
92         result Construct(const _SqlDataControlImpl& dc, _DataControlRequestType requestType, const Tizen::Base::Collection::IList* pList);
93
94         result Construct(const _MapDataControlImpl& dc, _DataControlRequestType requestType, const Tizen::Base::Collection::IList* pList);
95
96         result ConstructResult(const _AppArg& arg, const Tizen::Base::Collection::IList* pList);
97
98         result ConstructResult(const _AppArg& arg, const Tizen::Base::Collection::IMap* pMap);
99
100         result Construct(bundle* b);
101
102         result ConstructForAppLaunchCondition(const Tizen::Base::String& condition, const Tizen::Base::Collection::IList* pList);
103         result ConstructForAppLaunchCondition(const Tizen::Base::String& condition, const Tizen::Base::Collection::IList* pList, const Tizen::Base::Collection::IMap* pMap);
104
105         Tizen::Base::Collection::ArrayList* GetArgListN(int num) const;
106
107         Tizen::Base::Collection::ArrayList* GetArgListN(void) const;
108
109         Tizen::Base::Collection::HashMap* GetArgMapN(void) const;
110
111         Tizen::Base::String GetValue(const char* key) const;
112
113         bundle* GetBundle(void) const
114         {
115                 return __pBundle;
116         }
117
118         _AppHandler GetHandler(void) const
119         {
120                 return GetHandler(__pBundle);
121         }
122
123         AppId GetCallerAppId(void) const;
124
125         int GetCallerPid(void) const
126         {
127                 return GetCallerPid(__pBundle);
128         }
129
130         AppId GetCalleeAppId(void) const;
131
132         void Print() const
133         {
134                 Print(__pBundle);
135         }
136
137         void UpdateAppId(const AppId& appId)
138         {
139                 UpdateAppId(__pBundle, appId);
140         }
141
142         void UpdateRequestId(int reqId)
143         {
144                 UpdateRequestId(__pBundle, reqId);
145         }
146
147         result UpdateWindowHandle(long handle)
148         {
149                 return UpdateWindowHandle(__pBundle, handle);
150         }
151
152         static int GetCallerPid(bundle* b);
153
154         static void Print(bundle* b);
155
156         static void PrintSvcHandle(void* svc);
157
158         static _AppHandler GetHandler(bundle* b);
159
160         static bundle* GetBundleFromSvc(void* svc);
161
162         static Tizen::Base::String GetRequestId(int num);
163
164         static int GetRequestId(const Tizen::Base::String& id);
165
166         static void UpdateAppId(bundle* b, const AppId& appid);
167
168         static int GetRequestIdFromBundle(bundle* p);
169
170         static void UpdateRequestId(bundle* b, int reqId);
171
172         static result UpdateWindowHandle(bundle* b, long handle);
173
174         static Tizen::Base::Collection::ArrayList* GetListN(bundle* b, const char* key);
175
176         static result AddStrMap(bundle* b, const Tizen::Base::Collection::IMap* pMap);
177
178         static result FillMapFromList(Tizen::Base::Collection::IMap* pMap, const Tizen::Base::Collection::IList* pList);
179
180         static result FillLegacyAppControlResult(Tizen::Base::Collection::IList& list, int res, const Tizen::Base::Collection::IMap* pMap, const Tizen::Base::String& aId);
181 private:
182         _AppArg(const _AppArg& value);
183
184         _AppArg& operator =(const _AppArg& source);
185
186         static result CreateLaunchArg(bundle* b, const Tizen::Base::String& arg);
187
188         static result CreateLaunchArg(bundle* b, const Tizen::Base::Collection::IList* pList);
189
190         static result CreateAppControlArg(bundle* b, const _AppControlImpl& ac, const Tizen::Base::Collection::IList* pList);
191
192         static result CreateAppControlArg(bundle* b, const _AppControlImpl& ac, const Tizen::Base::String* pUri, const Tizen::Base::String* pMime, const Tizen::Base::Collection::IMap* pList);
193
194         static result CreateSqlDataControlArg(bundle* b, const _SqlDataControlImpl& dc, _DataControlRequestType requestType, const Tizen::Base::Collection::IList* pList);
195
196         static result CreateMapDataControlArg(bundle* b, const _MapDataControlImpl& dc, _DataControlRequestType requestType, const Tizen::Base::Collection::IList* pList);
197
198         static result CreateAppLaunchConditionArg(bundle* b, const Tizen::Base::String& condition, const Tizen::Base::Collection::IList* pList);
199
200         static result CreateResultArg(bundle* b, const Tizen::Base::Collection::IList* pList);
201
202         static result CreateResultArg(bundle* b, const Tizen::Base::Collection::IMap* pList);
203
204         static result AddStrArray(bundle* b, const char* key, const Tizen::Base::Collection::IList* pList);
205
206         static result AddStrArray(bundle* b, const Tizen::Base::String& key, const Tizen::Base::Collection::IList* pList);
207
208         static bundle* CreateBundleFromSvc(void* svc);
209
210         static inline void AddListFromBundle(Tizen::Base::Collection::ArrayList* pList, bundle* b, const char* key);
211
212         static result SetArgList(bundle* pBundle, Tizen::Base::Collection::ArrayList* pList);
213
214         static result SetArgMap(bundle* pBundle, Tizen::Base::Collection::HashMap* pList);
215
216 private:
217         bundle* __pBundle;
218 }; // _AppArg
219
220 } } // Tizen::App
221
222 #endif //_FAPP_INTERNAL_APP_ARG_H_