Revert "Corresponding to TizenIVI3.0 M14.3, GENIVI-LayerManagement was used instead...
[profile/ivi/ico-uxf-homescreen.git] / lib / common / CicoSystemConfig.h
1 /*
2  * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
3  *
4  * This program is licensed under the terms and conditions of the
5  * Apache License, version 2.0.  The full text of the Apache License is at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  *
8  */
9
10 //==========================================================================
11 /**
12  *  @file   CicoSystemConfig.h
13  *
14  *  @brief  This file is definition of CicoSystemConfig class
15  */
16 //==========================================================================
17 #ifndef __CICO_SYSTEM_CONFIG_H__
18 #define __CICO_SYSTEM_CONFIG_H__
19
20 #include <boost/property_tree/ptree.hpp>
21 #include <boost/property_tree/xml_parser.hpp>
22 #include <boost/foreach.hpp>
23 #include <boost/lexical_cast.hpp>
24
25 #include <string>
26 #include <map>
27 #include <vector>
28 using namespace std;
29 using namespace boost;
30 using namespace boost::property_tree;
31
32 //==========================================================================
33 //  Forward declaration
34 //==========================================================================
35 #ifndef __CICO_SC_CONF_H__
36 class CicoSCNodeConf;
37 class CicoSCLayerConf;
38 class CicoSCDisplayZoneConf;
39 class CicoSCDisplayConf;
40 class CicoSCSoundZoneConf;
41 class CicoSCSoundConf;
42 class CicoSCCategoryConf;
43 class CicoSCAppKindConf;
44 class CicoSCSwitchConf;
45 class CicoSCInputDevConf;
46 class CicoSCDefaultConf;
47 class CicoSCResourceConf;
48 class CicoSCUserConf;
49 class CicoSCVehicleInfoConf;
50 class CicoSCRoleConf;
51 class CicoSCPositionOSConf;
52 #endif
53
54 //==========================================================================
55 /**
56  *  @brief  This class has function of access to system config information
57  */
58 //==========================================================================
59 class CicoSystemConfig
60 {
61 public:
62     static CicoSystemConfig* getInstance(void);
63
64     bool load(const string & confFile);
65
66     const vector<CicoSCNodeConf*> &    getNodeConfList(void) const;
67     const vector<CicoSCDisplayConf*> & getDisplayConfList(void) const;
68     const vector<CicoSCSoundConf*> &   getSoundConfList(void) const;
69     const vector<CicoSCInputDevConf*> &  getInputDevConfList(void) const;
70     const vector<CicoSCCategoryConf*> & getCategoryConfList(void) const;
71     const vector<CicoSCAppKindConf*> &  getAppKindConfList(void) const;
72
73     const CicoSCNodeConf* findNodeConfbyName(const string & name);
74     const CicoSCDisplayConf* findDisplayConfbyName(const string & name);
75     const CicoSCDisplayConf* findDisplayConfbyName(const string& ECU,
76                                                    const string& name);
77     const CicoSCDisplayConf* findDisplayConfbyId(int id);
78
79     const CicoSCLayerConf* findLayerConfbyName(const string & displayName,
80                                                const string & layerName);
81     const CicoSCLayerConf* findLayerConfbyName(const string& ECU,
82                                                const string& display,
83                                                const string& layer,
84                                                const string& layout,
85                                                const string& area);
86     const CicoSCLayerConf*  findLayerConfbyIdx(int displayid, int idx);
87
88     const CicoSCDisplayZoneConf* findDisplayZoneConfbyName(const string & displayName,
89                                                        const string & zoneName);
90     const CicoSCSoundConf* findSoundConfbyName(const string & name);
91     const CicoSCSoundZoneConf* findSoundZoneConfbyName(const string & soundName,
92                                                        const string & zoneName);
93     const CicoSCInputDevConf* findInputDevConfbyName(const string & name);
94     const CicoSCSwitchConf* findSwitchConfbyName(const string & inputDevName,
95                                                  const string & switchName);
96
97     const CicoSCAppKindConf* findAppKindConfbyName(const string & name);
98     const CicoSCCategoryConf* findCategoryConfbyName(const string & name);
99
100     const CicoSCDisplayZoneConf* findDisplayZoneConfbyId(int id);
101
102     const CicoSCSoundZoneConf* findSoundZoneConfbyId(int id);
103     const CicoSCCategoryConf* findCategoryConfbyId(int id);
104     const CicoSCAppKindConf* findAppKindConfbyId(int id);
105
106     const CicoSCDefaultConf* getDefaultConf(void);
107
108     int getNodeIdbyName(const string & name);
109     int getDisplayIdbyName(const string & name);
110     int getDisplayIdbyNo(int no);
111     int getDisplayIdbyType(int type);
112     int getNumberofDisplay(void);
113     int getLayerIdfbyName(const string & displayName,
114                           const string & layerName);
115     int getLayerIdfbyName(const string& ECU,
116                           const string& display,
117                           const string& layer,
118                           const string& layout,
119                           const string& area);
120     int getDizplayZoneIdbyName(const string & displayName,
121                                const string & zoneName);
122     int getDizplayZoneIdbyFullName(const string & zoneFullName);
123     int getSoundIdbyName(const string & name);
124
125     int getSoundZoneIdbyName(const string & soundName,
126                              const string & zoneName);
127     int getSoundZoneIdbyFullName(const string & zoneFullName);
128     int getInputDevIdbyName(const string & name);
129     int getSwitchIdbyName(const string & inputDevName,
130                           const string & switchName);
131     int getAppKindIdbyName(const string & name);
132     int getCategoryIdbyName(const string & name);
133     const CicoSCResourceConf* getResourceConf() const
134     {
135         return m_resourceConf;
136     };
137     const CicoSCCategoryConf* getCategoryObjbyCaategoryID(int id);
138
139     const CicoSCUserConf* getUserConf() const
140     {
141         return m_userConf;
142     };
143
144     CicoSCVehicleInfoConf* getVehicleInfoConf(void);
145     short getRoleStt(const string& key);
146     const CicoSCRoleConf* getRoleConf() const
147     {
148         return m_roleConf;
149     };
150     const CicoSCPositionOSConf* positionOSConf() const
151     {
152         return m_positionOSConf;
153     };
154 private:
155     // default constructor
156     CicoSystemConfig();
157
158     // destructor
159     ~CicoSystemConfig();
160
161     // assignment operator
162     CicoSystemConfig& operator=(const CicoSystemConfig &object);
163
164     // copy constructor
165     CicoSystemConfig(const CicoSystemConfig &object);
166
167     void createNodeConfList(const ptree & root);
168     void createDisplayConfList(const ptree & root);
169     void createLayoutConfContainedArea(const ptree::value_type& layout,
170                                        const optional<int>& layer_id,
171                                        const optional<string>& layer_name,
172                                        const optional<int>& layout_id,
173                                        const optional<string>& layout_name,
174                                        CicoSCDisplayConf* displayConf);
175     void createLayerConfContainedLayout(const ptree::value_type& layer,
176                                         const optional<int>& layer_id,
177                                         const optional<string>& layer_name,
178                                         CicoSCDisplayConf* displayConf);
179     void createLayerConf(const ptree::value_type & child,
180                          CicoSCDisplayConf* displayConf);
181     void createDisplayZoneConf(const ptree::value_type & child,
182                                CicoSCDisplayConf* displayConf);
183
184     void createSoundConfList(const ptree & root);
185     void createSoundZoneConf(const ptree::value_type & child,
186                              CicoSCSoundConf* soundConf);
187     void createPortConf(const ptree & root);
188     void createCategoryConf(const ptree & root);
189     void createAppKindConf(const ptree & root);
190     void createInputDevList(const ptree & root);
191     void createSwitchList(const ptree::value_type & child,
192                           CicoSCInputDevConf* inputDevConf);
193     void createDefaultConf(const ptree & root);
194     void createResourceConf(const ptree & root);
195     void createUserConf(const ptree & root);
196     void createVehicleInfoConf(const ptree & root);
197
198     int calcGeometryExpr(const string & expr, CicoSCDisplayConf* conf);
199     void createRoleConf(const ptree& root);
200     void createPositionOSConf(const ptree& root);
201
202 private:
203     static CicoSystemConfig* ms_myInstance;
204     string m_confFile;
205     map<string,int> m_typeTable;
206     map<string,int> m_displayTypeTable;
207     map<string,int> m_categoryTalbe;
208     map<string,int> m_privilegeTable;
209     vector<CicoSCNodeConf*> m_nodeConfList;
210     vector<CicoSCDisplayConf*> m_displayConfList;
211     vector<CicoSCSoundConf*> m_soundConfList;
212     vector<CicoSCInputDevConf*> m_inputDevConfList;
213     vector<CicoSCCategoryConf*> m_categoryConfList;
214     vector<CicoSCAppKindConf*> m_appKindConfList;
215     int m_sysconPort;
216     int m_soundPluginPort;
217     CicoSCDefaultConf *m_defaultConf;
218     CicoSCResourceConf *m_resourceConf;
219     CicoSCUserConf *m_userConf;
220     CicoSCVehicleInfoConf *m_vehicleInfoConf;
221     CicoSCRoleConf *m_roleConf;
222     CicoSCPositionOSConf *m_positionOSConf;
223     int     numDisplay;
224 };
225 #endif  // __CICO_SYSTEM_CONFIG_H__
226 // vim:set expandtab ts=4 sw=4: