Adding a function to get the provider count
[platform/framework/native/shell.git] / src / inc / FShell_AppWidgetProviderManagerImpl.h
1 //
2 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file        FShell_AppWidgetManagerImpl.h
19  * @brief       This is the header file for the _AppWidgetProviderManagerImpl class.
20  *
21  * This header file contains the declarations of the _AppWidgetProviderManagerImpl class.
22  */
23
24 #ifndef FShell_APPWIDGET_PROVIDER_MANAGERIMPL_H_
25 #define FShell_APPWIDGET_PROVIDER_MANAGERIMPL_H_
26
27 #include <unique_ptr.h>
28 #include <FBaseObject.h>
29 #include <FBaseColHashMapT.h>
30 #include <FBaseColIMap.h>
31 #include <FAppTypes.h>
32 #include <FAppIAppControlProviderEventListener.h>
33 #include <FApp_IAppEventListener.h>
34
35 namespace Tizen { namespace Shell {
36
37 class AppWidgetFrame;
38 class AppWidgetPopup;
39
40 class IAppWidgetProviderFactory;
41 class IAppWidgetPopupProviderFactory;
42 class AppWidgetProvider;
43 class AppWidgetPopupProvider;
44 class _IAppWidgetTouchEventListener;
45 class _AppWidgetManagerProxy;
46
47 _OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_ADD[];
48 _OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_REMOVE[];
49 _OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_UPDATE[];
50 _OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_RESIZE[];
51 _OSP_EXPORT_ extern const wchar_t APPWIDGET_ON_TOUCH[];
52 _OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_ON_CREATE[];
53 _OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_ON_DESTROY[];
54 _OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_ON_TOUCH[];
55 _OSP_EXPORT_ extern const wchar_t APPWIDGET_POPUP_PREFIX[];
56
57 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_INSTANCE_ID;
58 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_PROVIDER_NAME;
59 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_USER_INFO;
60 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_X;
61 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_Y;
62 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_WIDTH;
63 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_HEIGHT;
64 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_POPUP_WIDTH;
65 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_POPUP_HEIGHT;
66 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_ARGUMENT;
67 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_EVENT_TYPE;
68 _OSP_EXPORT_ extern const Tizen::Base::String ARG_KEY_TIME_STAMP;
69
70 class _OSP_EXPORT_ _AppWidgetProviderManagerImpl
71         : public Tizen::Base::Object
72         , public Tizen::App::IAppControlProviderEventListener
73         , public Tizen::App::_IAppEventListener
74 {
75 public:
76         static _AppWidgetProviderManagerImpl* GetInstance();
77
78         // public APIs
79         result SetAppWidgetProviderFactory(IAppWidgetProviderFactory& factory);
80         result SetAppWidgetPopupProviderFactory(IAppWidgetPopupProviderFactory& factory);
81         result RequestUpdate(const Tizen::App::AppId& appId, const Tizen::Base::String& providerName, const Tizen::Base::String& argument);
82         result AddAppWidget(const Tizen::App::AppId& providerAppId, const Tizen::Base::String& providerName, const Tizen::Base::String& text, const Tizen::Base::String& userInfo);
83
84         // internal APIs
85         result RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument = L"");
86         result RequestSharedMemoryId(const Tizen::Base::String& instanceId, int width, int height, int& shmId);
87         result RequestSharedMemoryIdForPD(const Tizen::Base::String& instanceId, int width, int height, int& shmId);
88         result RequestSyncSharedMemory(const Tizen::Base::String& instanceId, int width, int height);
89         result RequestSyncSharedMemoryForPD(const Tizen::Base::String& instanceId);
90         result RequestReleaseSharedMemory(const Tizen::Base::String& instanceId);
91         result RequestReleaseSharedMemoryForPD(const Tizen::Base::String& instanceId);
92         result RequestProviderCount(const Tizen::Base::String& instanceId, int& providerCount);
93         result SendResult(const Tizen::Base::String& instanceId, bool isSucceeded);
94         result SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus);
95
96         // internal
97         result SetAppWidgetTouchEventListener(const Tizen::Base::String& instanceId, _IAppWidgetTouchEventListener& listener);
98         result SetAppWidgetPopupEventListener(_IAppWidgetTouchEventListener& listener);
99
100         result ForwardTouchEvent(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y);
101         result ForwardTouchEventForPD(const Tizen::Base::String& instanceId, int eventType, double timeStamp, double x, double y);
102
103         result HandleRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs);
104         result HandleAppWidgetRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs, bool isConnected = false);
105
106         // helper
107         static result ValidateApplicationAttribute(void);
108
109 private:
110         _AppWidgetProviderManagerImpl();
111         virtual ~_AppWidgetProviderManagerImpl();
112         result Construct();
113
114         result CreateAppWidget(const Tizen::Base::String& instanceId, const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs);
115         result CreateAppWidget(const Tizen::Base::String& name, const Tizen::Base::String& instanceId, int width, int height, const Tizen::Base::String& userInfo);
116         result UpdateAppWidget(const Tizen::Base::String& instanceId, int width, int height, const Tizen::Base::String& argument);
117         result ResizeAppWidget(const Tizen::Base::String& instanceId, int width, int height);
118         result RemoveAppWidget(const Tizen::Base::String& instanceId, bool terminateIfFinished);
119         result RemoveAppWidget(const Tizen::Base::String& instanceId, int providerCount);
120         result CreateAppWidgetPopupProvider(const Tizen::Base::String& instanceId, const Tizen::Base::String& providerName,  const Tizen::Base::String& userInfo, double x, double y, int width, int height);
121         result DestroyAppWidgetPopupProvider(const Tizen::Base::String& instanceId);
122
123         bool  ContainsAppWidget(const Tizen::Base::String& instanceId) const;
124
125         virtual void OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData, const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData);
126
127         result HandleAppWidgetPopupRequest(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pArgs);
128
129         static result CheckCertificate(const Tizen::App::AppId& localAppId, const Tizen::App::AppId& remoteAppId);
130         static bool IsSamePackage(const Tizen::App::AppId& appId1, const Tizen::App::AppId& appId2);
131         static bool IsPackagedWithTPK(const Tizen::App::AppId& appId);
132
133         virtual void OnApplicationLaunched(const Tizen::App::AppId& appId, int pid) {}
134         virtual void OnApplicationTerminated(const Tizen::App::AppId& appId, int pid);
135
136 private:
137         // for AppWidget
138         IAppWidgetProviderFactory* __pAppWidgetFactory;
139         Tizen::Base::Collection::HashMapT<Tizen::Base::String, AppWidgetProvider*> __appwidgetProviders;
140         Tizen::Base::Collection::HashMapT<Tizen::Base::String, _IAppWidgetTouchEventListener*> __touchEventListeners;
141
142         // for AppWidgetPopup
143         IAppWidgetPopupProviderFactory* __pAppWidgetPopupProviderFactory;
144         AppWidgetPopupProvider* __pAppWidgetPopupProvider;
145         _IAppWidgetTouchEventListener* __AppWidgetPopupTouchEventListener;
146 };
147
148 }} // Tizen::Shell
149 #endif /* FShell_APPWIDGET_PROVIDER_MANAGERIMPL_H_ */