tizen 2.3.1 release
[apps/home/settings.git] / setting-phone / src / setting-phone-license-divx-mode.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-phone-license-divx-mode.h>
22 #include <appsvc.h>
23
24 #define SUPPORT_URL_OPEN        1
25 #define DIVX_URL "http://vod.divx.com"
26 #define SET_DVIX_REGISTRSTION_CODE_LEN 10
27 #define SET_DVIX_DEREGISTRSTION_CODE_LEN 8
28
29 static int setting_phone_license_divx_mode_create(void *cb);
30 static int setting_phone_license_divx_mode_destroy(void *cb);
31 static int setting_phone_license_divx_mode_update(void *cb);
32 static int setting_phone_license_divx_mode_cleanup(void *cb);
33
34 setting_view setting_view_phone_license_divx_mode = {
35         .create = setting_phone_license_divx_mode_create,
36         .destroy = setting_phone_license_divx_mode_destroy,
37         .update = setting_phone_license_divx_mode_update,
38         .cleanup = setting_phone_license_divx_mode_cleanup,
39 };
40
41 /* ***************************************************
42  *
43  *basic func
44  *
45  ***************************************************/
46
47 static char *setting_phone_license_divx_mode_get_title_str(void *cb)
48 {
49         retv_if(cb == NULL, NULL);
50         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
51         if (ad->mode == SETTING_DIVX_MODE_REG) {
52                 return _("IDS_ST_BODY_DIVX_REGISTRATION");
53         } else {
54                 return _("IDS_ST_BODY_DIVX_DEREGISTRATION");
55         }
56 }
57
58 #if SUPPORT_URL_OPEN
59 static void __url_mouse_down_cb(void *data, Evas *e, Evas_Object *eo, void *event_info)
60 {
61         SETTING_TRACE_BEGIN;
62         ret_if(!event_info || !data);
63
64         app_control_h svc;
65         if (app_control_create(&svc)) {
66                 return;
67         }
68
69         app_control_set_operation(svc, APPSVC_OPERATION_VIEW);
70         app_control_set_uri(svc, DIVX_URL);
71         app_control_send_launch_request(svc, NULL, NULL);
72         if (app_control_destroy(svc)) {
73                 SETTING_TRACE_ERROR("bundle_free()");
74         }
75         /*elm_win_lower(ad->win_main_layout); */
76         return;
77 }
78 #endif
79
80 static int setting_phone_license_divx_mode_create(void *cb)
81 {
82         SETTING_TRACE_BEGIN;
83         /* error check */
84         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
85
86         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
87         char str[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0, };
88         const char *desc = NULL;
89         const char *url = NULL;
90
91         if (ad->mode == SETTING_DIVX_MODE_REG) {
92                 int result;
93
94                 drm_code_info_s info;
95                 result = drm_get_data(DRM_DATA_TYPE_DIVX_REGISTRATION_CODE, NULL, &info);
96
97                 SETTING_TRACE_DEBUG
98                 ("%s*** regiString=%s, codeLength=%d, result=%d ***%s",
99                  SETTING_FONT_BGREEN, info.code, info.code_len, (int)result,
100                  SETTING_FONT_BLACK);
101
102                 if (result != 0 || '\0' == info.code[0]) {
103                         SETTING_TRACE_ERROR("%s*** [ERR] DRM_FALSE ***%s",
104                                             SETTING_FONT_RED,
105                                             SETTING_FONT_BLACK);
106                         ad->mode = SETTING_DIVX_MODE_DEREG;
107                         setting_create_popup_without_btn(ad, ad->win_get,
108                                                          NULL, _(REGISTRATION_GET_FAILED),
109                                                          NULL, POPUP_INTERVAL, FALSE, FALSE);
110                         snprintf(info.code, sizeof(info.code), _("IDS_CALL_POP_UNAVAILABLE_T_DIAL"));
111                 }
112                 safeStrNCat(str, "<br><br><br>", MAX_DISPLAY_NAME_LEN_ON_UI);
113                 char tmp[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0, };
114                 snprintf(tmp, sizeof(tmp), _(REGISTRATION_INDICATOT), "<br><br>");
115                 safeStrNCat(str, tmp, MAX_DISPLAY_NAME_LEN_ON_UI);
116                 safeStrNCat(str, info.code, MAX_DISPLAY_NAME_LEN_ON_UI);
117                 safeStrNCat(str, "<br><br><br>", MAX_DISPLAY_NAME_LEN_ON_UI);
118                 safeStrNCat(str, _(REGISTRATION_AT), MAX_DISPLAY_NAME_LEN_ON_UI);
119         } else {
120                 int result;
121
122                 drm_code_info_s info;
123                 result = drm_get_data(DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE, NULL, &info);
124
125                 SETTING_TRACE_DEBUG
126                 ("%s*** deregiString=%s, codeLength=%d, result=%d ***%s",
127                  SETTING_FONT_BGREEN, info.code, info.code_len, result,
128                  SETTING_FONT_BLACK);
129
130                 if (result != 0 || '\0' == info.code[0]) {
131                         SETTING_TRACE_ERROR("%s*** [ERR] DRM_FALSE ***%s",
132                                             SETTING_FONT_RED,
133                                             SETTING_FONT_BLACK);
134                         ad->mode = SETTING_DIVX_MODE_REG;
135                         setting_create_popup_without_btn(ad, ad->win_get,
136                                                          NULL, _("IDS_ST_BODY_DE_REGISTRATION_CODE_NOT_FOUND"),
137                                                          NULL, POPUP_INTERVAL, FALSE, FALSE);
138                         snprintf(info.code, sizeof(info.code), "%s", _("IDS_CALL_POP_UNAVAILABLE_T_DIAL"));
139                 }
140                 safeStrNCat(str, _(DEREGISTRATION_INDICATOT), MAX_DISPLAY_NAME_LEN_ON_UI);
141                 safeStrNCat(str, info.code, MAX_DISPLAY_NAME_LEN_ON_UI);
142                 safeStrNCat(str, _(EREGISTRATION_AT), MAX_DISPLAY_NAME_LEN_ON_UI);
143         }
144
145         Evas_Object *scroller;
146
147         setting_push_layout_navi_bar_scroller(ad->win_main_layout,
148                                               setting_phone_license_divx_mode_get_title_str
149                                               (ad), _("IDS_COM_BODY_BACK"),
150                                               NULL,
151                                               setting_phone_license_divx_mode_click_softkey_back_cb,
152                                               NULL, ad, &scroller,
153                                               ad->navi_bar);
154         /*elm_genlist_mode_set(scroller, ELM_LIST_COMPRESS); */
155
156
157         url = setting_customize_text("<underline=on><underline_color=#FF0000>"DIVX_URL"</underline_color></underline>", 0, "#FF0000", "center");
158         Evas_Object *outer_box = setting_create_client_bx(ad->win_main_layout);
159 #if SUPPORT_URL_OPEN
160         SETTING_TRACE_DEBUG("str : %s", str);
161         desc = setting_customize_text(str, 0, NULL, "center");
162
163         Evas_Object *ly_desc = setting_create_textbox(ad->win_main_layout, desc);
164         setting_disable_evas_object(ly_desc);
165         elm_box_pack_end(outer_box, ly_desc);
166
167         Evas_Object *ly_url = setting_create_textbox(ad->win_main_layout, url);
168         evas_object_event_callback_add(ly_url, EVAS_CALLBACK_MOUSE_DOWN, __url_mouse_down_cb, ad);
169         elm_box_pack_end(outer_box, ly_url);
170 #else
171         char tmp_str[MAX_COMMON_BUFFER_LEN] = { 0, };
172         snprintf(tmp_str, sizeof(tmp_str), "%s<br>%s", str, url);
173         desc = setting_customize_text(tmp_str, 0, NULL, "center");
174         Evas_Object *ly_desc = setting_create_textbox(ad->win_main_layout, desc);
175         setting_disable_evas_object(ly_desc);
176         elm_box_pack_end(outer_box, ly_desc);
177 #endif
178
179         elm_object_content_set(scroller, outer_box);
180
181         setting_view_phone_license_divx_mode.is_create = 1;
182         FREE(desc);
183         FREE(url);
184
185         return SETTING_RETURN_SUCCESS;
186 }
187
188 static int setting_phone_license_divx_mode_destroy(void *cb)
189 {
190         SETTING_TRACE_BEGIN;
191         /* error check */
192         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
193
194         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
195
196         elm_naviframe_item_pop(ad->navi_bar);
197         setting_view_phone_license_divx_mode.is_create = 0;
198
199         return SETTING_RETURN_SUCCESS;
200 }
201
202 static int setting_phone_license_divx_mode_update(void *cb)
203 {
204         SETTING_TRACE_BEGIN;
205         return SETTING_RETURN_SUCCESS;
206 }
207
208 static int setting_phone_license_divx_mode_cleanup(void *cb)
209 {
210         return setting_phone_license_divx_mode_destroy(cb);
211 }
212
213 /* ***************************************************
214  *
215  *general func
216  *
217  ***************************************************/
218
219 /* ***************************************************
220  *
221  *call back func
222  *
223  ***************************************************/
224
225 static void
226 setting_phone_license_divx_mode_click_softkey_back_cb(void *data,
227                                                       Evas_Object *obj,
228                                                       void *event_info)
229 {
230         SETTING_TRACE_BEGIN;
231         /* error check */
232         setting_retm_if(data == NULL, "Data parameter is NULL");
233
234         SettingPhoneUG *ad = (SettingPhoneUG *) data;
235
236         setting_view_change(&setting_view_phone_license_divx_mode,
237                             &setting_view_phone_license_divx_main, ad);
238 }