Tizen 2.0 Release
[apps/home/wrt-setting.git] / webapp-detail / detailview.h
1 /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
4   * Licensed under the Flora License, Version 1.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://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 #ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_
18 #define WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_
19
20 #include <Evas.h>
21 #include <ui-gadget.h>
22
23 #undef None
24 #include <dpl/wrt-dao-rw/widget_dao.h>
25 #include <dpl/scoped_ptr.h>
26
27 #include "view.h"
28
29 namespace WebAppDetailSetting {
30
31 class AdvancedView;
32
33 typedef struct {
34     std::string license;
35     std::string href;
36     Evas_Object* evasObj;
37 } LicenseInfo;
38
39 class DetailView : public View
40 {
41     enum WebkitVersion {
42         WEBKIT_VERSION_WK1,
43         WEBKIT_VERSION_WK2,
44         WEBKIT_VERSION_UNKNOWN
45     };
46
47     Evas_Object *m_naviframe;
48     Evas_Object *m_parent;
49     Evas_Object *m_bx;
50     Evas_Object *check_webkit;
51     Evas_Object *check_login;
52     Evas_Object *m_gl;
53     ui_gadget_h m_ug;
54     DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
55     WrtDB::WidgetLocalizedInfo m_localizedInfo;
56     int m_appID;
57     LicenseInfo *m_licenseInfo;
58     DPL::ScopedPtr<AdvancedView> m_advancedView;
59
60     void getLocalizedInfo(void);
61
62     void addField(const char *title);
63     void addField(const char *title, const char *str);
64     void addDefInfo(void);
65     void addViewModes(void);
66     void addAuthorInfo(void);
67     void addLicense(void);
68     void addSaveLoginInfo();
69     void addClearData();
70     void addAdvancedSettings();
71     void addSeperator();
72
73     static void clearDataCallback(void *data,
74             Evas_Object *obj,
75             void* event_info );
76     static void viewlicenseCallback(void *data,
77              Evas_Object *obj,
78              void *event_info);
79     static void closeCallback(void* data,
80             Evas_Object* obj,
81             void* event_info);
82
83     static void _mouse_down(void *data,
84             Evas *e,
85             Evas_Object *obj,
86             void* event_info);
87     static void _mouse_move(void *data,
88             Evas *e,
89             Evas_Object *obj,
90             void* event_info);
91     static void _mouse_up_license(void *data,
92             Evas *e,
93             Evas_Object *obj,
94             void* event_info);
95     static void _mouse_up_save_login_info(void *data,
96             Evas *e,
97             Evas_Object *obj,
98             void *event_info);
99     static void _mouse_up_clear_data(void *data,
100             Evas *e,
101             Evas_Object *obj,
102             void *event_info);
103     static void _mouse_up_advanced_settings(void *data,
104             Evas *e,
105             Evas_Object *obj,
106             void *event_info);
107     static void clearDataPopupCallback(void *data,
108             Evas_Object *obj,
109             void *event_info);
110     static void advancedSettingsCallback(void* data,
111                                              Evas_Object* obj,
112                                              void* eventInfo);
113     static char *getText(void *data,
114                         Evas_Object *obj,
115                         const char *part);
116     static char *getTitle(void *data,
117                         Evas_Object *obj,
118                         const char *part);
119     void addDefInfo(Evas_Object *gl);
120     void addViewModes(Evas_Object *gl);
121     void addAuthorInfo(Evas_Object *gl);
122     void addDepth(Evas_Object *gl);
123     void addTitle(Evas_Object *gl, const char* title);
124     void addTitleText(
125         Evas_Object *gl, const char* title, const char* subtitle);
126     void addLicenseInfo(Evas_Object *gl, const char* title);
127     void addClearData(Evas_Object *gl, const char* title);
128     void addAdvancedSetting(Evas_Object *gl, const char* title);
129     static void onBackBtnClicked(void *data,
130                                     Evas_Object *obj,
131                                     void *event_info);
132     bool pushToNaviFrame(void);
133   public:
134     DetailView(Evas_Object* naviframe, ui_gadget_h ug, int appID);
135     ~DetailView(void);
136
137     Evas_Object *loadView(void);
138 };
139
140 class DetailData
141 {
142   public:
143     DetailView *m_detailView;
144     std::string m_title;
145     std::string m_subtitle;
146     int m_dataType;
147     DetailData(DetailView *detailView,
148               const char *title,
149               const char *subtitle) :
150         m_detailView(detailView),
151         m_title(title),
152         m_subtitle(subtitle) { };
153
154     ~DetailData(void) { };
155 };
156
157 } /* WebAppDetailSetting */
158
159 #endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_ */