2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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
9 // http://floralicense.org/license/
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.
19 * @file FApp_ConditionHandler.h
20 * @brief This is the header file of the _ConditionHandler class.
22 * This header file contains the declarations of the _ConditionManagerService class.
25 #ifndef _FAPP_INTERNAL_CONDITION_HANDLER_H_
26 #define _FAPP_INTERNAL_CONDITION_HANDLER_H_
31 #include <FAppTypes.h>
33 #include <FApp_AppLaunchConditionHandlerBase.h>
34 #include "FApp_StringKeyHashMapUtil.h"
36 namespace Tizen { namespace Base { namespace Runtime { class Library; }}}
37 namespace Tizen { namespace App {
40 class _ConditionHandler;
43 * @class _ConditionPlugInInfo
44 * @brief Contains plugin info of registry.(ConditionHandlerPlugins.ini)
47 class _ConditionPlugInInfo :
48 public Tizen::Base::Object
51 const Tizen::Base::String typeString;
52 const Tizen::Base::String name; // or fileName
53 const _ConditionHandler* pHandler;
55 _ConditionPlugInInfo(const Tizen::Base::String _typeString, const Tizen::Base::String _name, const _ConditionHandler* _pHandler)
56 :typeString(_typeString), name(_name),pHandler(_pHandler) {}
58 }; //_ConditionPlugInInfo
60 typedef _AppLaunchConditionHandlerBase* (*create_plugin)(void);
61 typedef void (*destroy_plugin)(_AppLaunchConditionHandlerBase* p);
64 * @class _ConditionHandler
65 * @brief Manages each conditional operations and handler instance.
68 class _ConditionHandler
69 : public Tizen::Base::Object
70 , public Tizen::App::_IAppLaunchConditionEventListener
71 , virtual public Tizen::Base::Runtime::IEventListener
73 typedef Tizen::Base::Collection::MultiHashMapT<Tizen::Base::String, _AppLaunchCondition*> _AppLaunchConditions;
74 // typedef Tizen::Base::Collection::IMapEnumeratorT <Tizen::Base::String, _AppLaunchCondition*> _AppLaunchConditionEnumerator;
75 typedef Tizen::Base::Collection::IEnumeratorT <_AppLaunchCondition*> _AppLaunchConditionEnumerator;
78 _ConditionHandler(const Tizen::Base::String& fileName, const Tizen::Base::String& typesString);
79 virtual ~_ConditionHandler(void);
80 result Construct(void);
81 result AddCondition( _AppLaunchCondition& operation);
82 result RemoveCondition(const Tizen::Base::String& packageId, const Tizen::Base::String* pExecutableName, const Tizen::Base::String* pCondition);
83 _AppLaunchCondition* Find(const Tizen::Base::String& packageId, const Tizen::Base::String *pCondition);
84 result CreateUniqueId(Tizen::Base::String& uniqueId);
85 bool HasCondition(const Tizen::Base::String& packageId, const Tizen::Base::String& executableName, const Tizen::Base::String *pCondition) const ;
86 bool CanHandleType(const Tizen::Base::String& type ) const;
88 void Dump(void) const;
91 _AppLaunchCondition* FindItemBySectionName(const Tizen::Base::String& sectionName) const;
92 virtual void OnAppLaunchConditionMet(const _AppLaunchCondition& operation);
93 result LoadPlugin(void);
94 _ConditionHandler(const _ConditionHandler& value);
95 _ConditionHandler& operator =(const _ConditionHandler& source);
98 Tizen::Base::String __typesString;
99 Tizen::Base::String __pluginFileName;
100 _AppLaunchConditionHandlerBase* __pPluginInstance;
101 _AppLaunchConditions __conditionalOperations;
102 _StringComparerT __strComparer;
103 _StringHashMapProviderT __strHashMapProvider;
105 Tizen::Base::Runtime::Library* __pLib;
106 destroy_plugin __pfDestroyPlugin;
107 }; //_ConditionHandler
111 * @class _ConditionRegistryHelper
116 class _ConditionRegistryHelper
119 static result AddToRegistry(const Tizen::Base::String& sectionName, const Tizen::Base::String& packageId, const Tizen::Base::String& executableName, const Tizen::Base::String& condition, const Tizen::Base::Collection::IList *pArgs);
120 static result RemoveFromRegistry(const Tizen::Base::String& sectionName);
121 static result GetAllParamsN(const Tizen::Base::Collection::IMap& map, Tizen::Base::String& packageId, Tizen::Base::String& executableName, Tizen::Base::String& condition, Tizen::Base::Collection::ArrayList*& pArgs);
122 }; //_ConditionRegistryHelper
126 #endif // _FAPP_INTERNAL_CONDITION_HANDLER_H_