use pkgconfig to improve pkg dependency mgmt.
[platform/framework/native/appwidget-service.git] / inc / FShell_AppContext.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_AppContext.h
19  * @brief       This is the header file for the _AppContext class.
20  *
21  * This header file contains the declarations of the _AppContext class.
22  */
23
24 #ifndef _FSHELL_INTERNAL_APP_CONTEXT_H_
25 #define _FSHELL_INTERNAL_APP_CONTEXT_H_
26
27 #include <FAppTypes.h>
28 #include <FBaseColArrayListT.h>
29
30 namespace Tizen { namespace Base  { namespace Collection
31 {
32 class HashMap;
33 class IList;
34 }}}
35
36 namespace Tizen { namespace Shell  { namespace App
37 {
38
39 enum _ConnectionState
40 {
41         CONNECTION_STATE_NONE = 0,
42         CONNECTION_STATE_CONNECTING,
43         CONNECTION_STATE_CONNECTED,
44         CONNECTION_STATE_DISCONNECTED
45 };
46
47 class _AppWidgetContext;
48
49 /**
50  * @class       _AppContext
51  * @brief       Context of a AppWidget provider application.
52  */
53 class _AppContext
54         :public Tizen::Base::Object
55 {
56
57 public:
58         _AppContext(const Tizen::App::AppId& appId);
59         ~_AppContext(void);
60
61         result AddAppWidget(const Tizen::Base::String& userInfo, const Tizen::Base::String& providerId, const Tizen::Base::String& instanceId, int width, int height, int period, int priority);
62         result UpdateAppWidget(const Tizen::Base::String& instanceId);
63         result DestroyAppWidget(const Tizen::Base::String& instanceId, bool isTriggeredByViewer = true);
64         result ResizeAppWidget(const Tizen::Base::String& instanceId, int width, int height);
65
66         result CreateAppWidgetPopup(const Tizen::Base::String& instanceId, double x, double y, int width, int height);
67         result DestroyAppWidgetPopup(const Tizen::Base::String& instanceId);
68
69         result OnAppWidgetBackground(const Tizen::Base::String& instanceId);
70         result OnAppWidgetForeground(const Tizen::Base::String& instanceId);
71         result OnAppWidgetBackgroundAll(void);
72         result OnAppWidgetForegroundAll(void);
73
74         result RequestUpdate(const Tizen::Base::String& providerName, const Tizen::Base::String& argument);
75         result RequestUpdateAllInactiveted(void);
76         result SendRequestToApp(const Tizen::App::AppId& providerAppId, const Tizen::Base::String& operation, Tizen::Base::Collection::HashMap* pArgs);
77         result SendPendingEvent(void);
78
79         void OnIpcConnected(int clientId);
80         void OnIpcDisconnected(void);
81         _ConnectionState GetConnectionState(void) const;
82         bool GetWaitingStatus(void) const;
83         Tizen::App::AppId GetAppId(void) const;
84         int GetClientId(void) const;
85
86         _AppWidgetContext* FindAppWidget(const Tizen::Base::String& instanceId) const;
87         int GetProviderCount(void) const;
88
89         result RequestUpdateInstance(const Tizen::Base::String& instanceId, const Tizen::Base::String& argument);
90         result AcquireRemoteBuffer(const Tizen::Base::String& instanceId, int width, int height, int& bufferId);
91         result AcquireRemoteBufferForPD(const Tizen::Base::String& instanceId, int width, int height, int& bufferId);
92         result SyncRemoteBuffer(const Tizen::Base::String& instanceId, int width, int height);
93         result SyncRemoteBufferForPD(const Tizen::Base::String& instanceId);
94         result SendAccessStatus(const Tizen::Base::String& instanceId, int accessStatus);
95         void HandleUserEvent(Tizen::Base::Collection::IList* pArgs);
96
97 private:
98         void SetConnectionState(_ConnectionState state);
99         void SetWaitingStatus(bool status);
100         _AppWidgetContext* FindInvalidAppWidget(void) const;
101
102 private:
103         struct PendingEvent
104         {
105                 PendingEvent(const Tizen::Base::String& operation, Tizen::Base::Collection::HashMap* pHashMap)
106                  : operation(operation), pArg(pHashMap) {  }
107
108                 Tizen::Base::String operation;
109                 Tizen::Base::Collection::HashMap* pArg;
110         };
111
112         const Tizen::App::AppId __appId;
113         bool __isWaitingResult;
114         int __ipcClientId;
115         _ConnectionState __connectionState;
116         Tizen::Base::Collection::HashMapT<Tizen::Base::String, _AppWidgetContext*> __appWidgetContextList;
117         Tizen::Base::Collection::ArrayListT<PendingEvent*>* __pPendingEventList;
118 };
119
120 }}} // Tizen::Shell::App
121
122 #endif // _FSHELL_INTERNAL_APP_CONTEXT_H_