sync with tizen_2.0
[platform/framework/native/appfw.git] / src / app / FApp_AppControlRegistry.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_AppControlRegistry.h
20  * @brief       This is the header file of the _AppControlRegistry class.
21  */
22
23 #ifndef _FAPP_INTERNAL_APP_CONTROL_REGISTRY_H_
24 #define _FAPP_INTERNAL_APP_CONTROL_REGISTRY_H_
25
26 #include <bundle.h>
27
28 #include <FBaseObject.h>
29 #include <FBaseColArrayListT.h>
30 #include <FBaseColHashMapT.h>
31 #include <FBaseColMultiHashMapT.h>
32 #include <FAppTypes.h>
33
34 namespace Tizen { namespace App
35 {
36
37 class AppControl;
38
39 struct BundleDeleter
40 {
41         void operator()(bundle* pBundle)
42         {   
43                 if (pBundle)
44                 {
45                         bundle_free(pBundle);
46                 }
47         }
48 };
49
50 /**
51  * @class       _AppControlRegistry
52  * @brief       load & store AppControl information
53  * @since 2.1
54  */
55 class _AppControlRegistry
56         : public Tizen::Base::Object
57 {
58 public:
59         class _AppControlAliasEntry
60         {
61         public:
62                 _AppControlAliasEntry(const Tizen::Base::String& aId1,
63                                 const Tizen::Base::String& oId1,
64                                 const Tizen::Base::String& aId2,
65                                 const Tizen::Base::String& oId2)
66                 : provider(aId1)
67                 , operation(oId1)
68                 , provider2(aId2)
69                 , operation2(oId2)
70                 {
71                 }
72
73                 const Tizen::Base::String provider;
74                 const Tizen::Base::String operation;
75                 const Tizen::Base::String provider2;
76                 const Tizen::Base::String operation2;
77         };
78
79         typedef Tizen::Base::Collection::ArrayListT<AppControl*> AppControlList;
80         typedef Tizen::Base::Collection::MultiHashMapT<Tizen::Base::String, _AppControlAliasEntry*> AppControlAliasList;
81         typedef Tizen::Base::Collection::HashMapT<Tizen::Base::String, Tizen::Base::String> AliasMapType;
82
83         _AppControlRegistry(void);
84
85         virtual ~_AppControlRegistry(void);
86
87         static _AppControlRegistry* GetInstance(void);
88
89         AppControl* GetNativeAppControlN(const Tizen::Base::String& aId, const Tizen::Base::String& oId) const;
90
91         AppControl* GetSlpAppControlN(const Tizen::Base::String& packageName, const Tizen::Base::String& oId) const;
92
93         AppControl* GetAliasAppControlN(const Tizen::Base::String& aId, const Tizen::Base::String& oId) const;
94
95         AppControl* GetAppControlN(const Tizen::Base::String& appId, const Tizen::Base::String& operationId) const;
96
97         Tizen::Base::Collection::ArrayList* FindAppControlListN(const Tizen::Base::String* pOid, const Tizen::Base::String* pUri, const Tizen::Base::String* pMimeType, const Tizen::Base::String* pCategory) const;
98
99         Tizen::Base::String GetAliasedOperation(const Tizen::Base::String& operation) const;
100
101         _AppControlAliasEntry* GetAppControlAliasEntry(const Tizen::Base::String& aId, const Tizen::Base::String& oId) const;
102
103         _AppControlAliasEntry* GetReverseAppControlAliasEntry(const Tizen::Base::String& aId, const Tizen::Base::String& oId) const;
104
105         AppId GetReverseAliasAppId(const AppId& appId) const;
106
107 private:
108         _AppControlRegistry(const _AppControlRegistry& rhs);
109
110         _AppControlRegistry& operator =(const _AppControlRegistry& rhs);
111
112         result LoadRegistry(void);
113
114         result LoadLegacyList(void);
115
116         result LoadAliasList(void);
117
118 private:
119         AppControlList __nativeList;
120
121         AppControlAliasList __aliasList;
122
123         AliasMapType __aliasOperation;
124
125         AliasMapType __aliasAppId;
126
127         static _AppControlRegistry* __pSelf;
128 }; // _AppControlRegistry
129
130 } } // Tizen::App
131
132 #endif // _FAPP_INTERNAL_APP_CONTROL_REGISTRY_H_