Remove widget handle
[platform/framework/web/wrt.git] / src / domain / widget_model.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (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://www.apache.org/licenses/LICENSE-2.0
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  * @file    widget_model.h
18  * @author  Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
19  * @version 1.0
20  * @brief   Header file for widget model
21  */
22 #ifndef SRC_DOMAIN_WIDGET_MODEL_H
23 #define SRC_DOMAIN_WIDGET_MODEL_H
24
25 #include <dpl/event/model.h>
26 #include <dpl/event/property.h>
27 #include <dpl/optional.h>
28 #include <string>
29
30 #include "widget_data_types.h"
31
32 #include <dpl/wrt-dao-ro/wrt_db_types.h> // definition of WidgetHandle
33
34 /**
35  * @brief Widget model
36  *
37  * Widget model is the core object that hold information about
38  * properties of widget. After wrt launch each widget contained in database is
39  * mapped to WidgetModel.
40  *
41  * Widget model is a type of MVC model, so it is possible to listen for it's
42  * changes.
43  *
44  */
45 class WidgetModel : public DPL::Event::Model
46 {
47   public:
48
49     /**
50      * @brief Tizen id
51      */
52     DPL::String TizenId;
53
54     /**
55      * @brief Widget type
56      *
57      * Note: This is a readonly property
58      */
59     DPL::Event::Property<WrtDB::WidgetType,
60     DPL::Event::PropertyReadOnly,
61     DPL::Event::PropertyStorageDynamicCached> Type;
62
63     /**
64      * @brief Current widget actual size
65      */
66     DPL::Event::Property<WidgetSize> ActualSize;
67
68     /**
69      * @brief Current widget preferred size
70      */
71     DPL::Event::Property<WidgetSize,
72                   DPL::Event::PropertyReadOnly,
73                   DPL::Event::PropertyStorageDynamicCached> PreferredSize;
74
75     /**
76      * @brief Start URL for widget
77      */
78     DPL::Event::Property<DPL::OptionalString> StartURL;
79
80     /**
81      * @brief Start URL information for widget
82      */
83     DPL::Event::Property<OptionalWidgetStartFileInfo> StartFileInfo;
84
85     /**
86      * @brief Prefix URL for widget
87      *
88      * This is a prefix address of html file that widget is displaying.
89      * The whole address is PrefixURL + StartURL.
90      */
91     DPL::Event::Property<DPL::String, DPL::Event::PropertyReadOnly> PrefixURL;
92
93     /**
94      * @brief Install path for widget
95      *
96      * Gets path in which files of widget are being kept
97      */
98     DPL::Event::Property<DPL::String,
99                   DPL::Event::PropertyReadOnly,
100                   DPL::Event::PropertyStorageDynamicCached> InstallPath;
101
102     /**
103      * @brief Path to widget's persistent storage.
104      *
105      * Gets path in which widget may store its persistent private data.
106      */
107     DPL::Event::Property<DPL::String, DPL::Event::PropertyReadOnly> PersistentStoragePath;
108
109     /**
110      * @brief Path to widget's temporary storage.
111      *
112      * Gets path in which widget may store its temporary private data.
113      */
114     DPL::Event::Property<DPL::String, DPL::Event::PropertyReadOnly> TemporaryStoragePath;
115
116     /**
117      * @brief Widget GUID
118      */
119     DPL::Event::Property<WrtDB::WidgetGUID,
120                   DPL::Event::PropertyReadOnly,
121                   DPL::Event::PropertyStorageDynamicCached> GUID;
122
123     /**
124      * @brief Widget defaultlocale
125      */
126     DPL::Event::Property<DPL::OptionalString,
127                   DPL::Event::PropertyReadOnly,
128                   DPL::Event::PropertyStorageDynamicCached> defaultlocale;
129
130     /**
131      * @brief Widget version
132      */
133     DPL::Event::Property<OptionalWidgetVersion,
134                   DPL::Event::PropertyReadOnly,
135                   DPL::Event::PropertyStorageDynamicCached> Version;
136
137     /**
138      * @brief Widget name
139      */
140     DPL::Event::Property<DPL::OptionalString> Name;
141
142     /**
143      * @brief Widget short name
144      */
145     DPL::Event::Property<DPL::OptionalString> ShortName;
146
147     /**
148      * @brief Widget description
149      */
150     DPL::Event::Property<DPL::OptionalString> Description;
151
152     /**
153      * @brief Widget license
154      */
155     DPL::Event::Property<DPL::OptionalString> License;
156
157     /**
158      * @brief Widget license href
159      */
160     DPL::Event::Property<DPL::OptionalString> LicenseHref;
161
162     /**
163      * @brief Widget icon
164      */
165     DPL::Event::Property<OptionalWidgetIcon> Icon;
166
167     /**
168      * @brief Widget splash image src
169      */
170     DPL::Event::Property<DPL::OptionalString,
171                   DPL::Event::PropertyReadOnly,
172                   DPL::Event::PropertyStorageDynamicCached> SplashImg;
173
174     /**
175      * @brief window mode
176      */
177     DPL::Event::Property<WrtDB::WindowModeList,
178                   DPL::Event::PropertyReadOnly,
179                   DPL::Event::PropertyStorageDynamic> WindowModes;
180
181     /**
182      * @brief Minimum of the WAC Engine Standard required to run widget.
183      */
184     DPL::Event::Property<WidgetStandard,
185                   DPL::Event::PropertyReadOnly,
186                   DPL::Event::PropertyStorageDynamicCached> Standard;
187
188     /**
189      * @brief How much space application and its storage takes.
190      */
191     DPL::Event::Property<WidgetStorageSize,
192                   DPL::Event::PropertyReadOnly,
193                   DPL::Event::PropertyStorageDynamicCached> ApplicationStorage;
194     //    /**
195     //     * @brief Value of network element.
196     //     */
197     //    DPL::Event::Property<bool,
198     //                  DPL::Event::PropertyReadOnly> AccessNetwork;
199
200     //    /**
201     //     * @brief Does widget contain WARP definitions.
202     //     */
203     //    DPL::Event::Property<bool> WarpDefinitionEmpty;
204
205     /**
206      * @brief Is back supported
207      */
208     DPL::Event::Property<bool,
209                   DPL::Event::PropertyReadOnly,
210                   DPL::Event::PropertyStorageDynamicCached> BackSupported;
211
212     /**
213      * @brief Widget access list
214      */
215     DPL::Event::Property<WidgetAccessList> AccessList;
216
217     /**
218      * @brief Is this DeveloperWidget
219      */
220     DPL::Event::Property<bool,
221                   DPL::Event::PropertyReadOnly,
222                   DPL::Event::PropertyStorageDynamicCached> IsTestWidget;
223
224
225     DPL::Event::Property<WidgetSettingList> SettingList;
226
227     /**
228      * @brief Widget Application Service list
229      */
230     DPL::Event::Property<WidgetApplicationServiceList> AppServiceList;
231
232     WidgetModel(const std::string &tizenId);
233
234   private:
235     // Custom read write delegates
236     static WidgetStandard        readStandard(DPL::Event::Model *model);
237     static OptionalWidgetVersion readVersion(DPL::Event::Model *model);
238     static WidgetStorageSize     getApplicationStorage(DPL::Event::Model *model);
239     static DPL::String           getTimestamp();
240
241     DPL::String getTizenId() const;
242 };
243
244 #endif // SRC_DOMAIN_WIDGET_MODEL_H