new release for RSA
[apps/core/preloaded/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         service_h svc;
65         if(service_create(&svc))
66                 return;
67
68         service_set_operation(svc, APPSVC_OPERATION_VIEW);
69         service_set_uri(svc, DIVX_URL);
70         service_send_launch_request(svc, NULL, NULL);
71         if (service_destroy(svc)) {
72                 SETTING_TRACE_ERROR("bundle_free()");
73         }
74         //elm_win_lower(ad->win_main_layout);
75         return;
76 }
77 #endif
78
79 static int setting_phone_license_divx_mode_create(void *cb)
80 {
81         SETTING_TRACE_BEGIN;
82         /* error check */
83         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
84
85         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
86         char str[MAX_DISPLAY_NAME_LEN_ON_UI] = { 0, };
87         const char *desc = NULL;
88         const char *url = NULL;
89
90         if (ad->mode == SETTING_DIVX_MODE_REG) {
91                 int result;
92
93                 drm_code_info_s info;
94                 result = drm_get_data(DRM_DATA_TYPE_DIVX_REGISTRATION_CODE, NULL, &info);
95
96                 SETTING_TRACE_DEBUG
97                     ("%s*** regiString=%s, codeLength=%d, result=%d ***%s",
98                      SETTING_FONT_BGREEN, info.code, info.code_len, (int)result,
99                      SETTING_FONT_BLACK);
100
101                 if (result != 0 || '\0' == info.code[0]) {
102                         SETTING_TRACE_ERROR("%s*** [ERR] DRM_FALSE ***%s",
103                                             SETTING_FONT_RED,
104                                             SETTING_FONT_BLACK);
105                         ad->mode = SETTING_DIVX_MODE_DEREG;
106                         setting_create_popup_without_btn(ad, ad->win_get,
107                                              NULL, _(REGISTRATION_GET_FAILED),
108                                              NULL, POPUP_INTERVAL, FALSE, FALSE);
109                         snprintf(info.code, sizeof(info.code), "Unavailable");
110                 }
111                 safeStrNCat(str, _(REGISTRATION_INDICATOT), MAX_DISPLAY_NAME_LEN_ON_UI);
112                 safeStrNCat(str, info.code, MAX_DISPLAY_NAME_LEN_ON_UI);
113                 safeStrNCat(str, _(REGISTRATION_AT), MAX_DISPLAY_NAME_LEN_ON_UI);
114         } else {
115                 int result;
116
117                 drm_code_info_s info;
118                 result = drm_get_data(DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE, NULL, &info);
119
120                 SETTING_TRACE_DEBUG
121                     ("%s*** deregiString=%s, codeLength=%d, result=%d ***%s",
122                      SETTING_FONT_BGREEN, info.code, info.code_len, result,
123                      SETTING_FONT_BLACK);
124
125                 if (result != 0 || '\0' == info.code[0]) {
126                         SETTING_TRACE_ERROR("%s*** [ERR] DRM_FALSE ***%s",
127                                             SETTING_FONT_RED,
128                                             SETTING_FONT_BLACK);
129                         ad->mode = SETTING_DIVX_MODE_REG;
130                         setting_create_popup_without_btn(ad, ad->win_get,
131                                              NULL, _("IDS_ST_BODY_DE_REGISTRATION_CODE_NOT_FOUND"),
132                                              NULL, POPUP_INTERVAL, FALSE, FALSE);
133                         snprintf(info.code, sizeof(info.code), "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
134                 }
135                 safeStrNCat(str, _(DEREGISTRATION_INDICATOT), MAX_DISPLAY_NAME_LEN_ON_UI);
136                 safeStrNCat(str, info.code, MAX_DISPLAY_NAME_LEN_ON_UI);
137                 safeStrNCat(str, _(EREGISTRATION_AT), MAX_DISPLAY_NAME_LEN_ON_UI);
138         }
139
140         Evas_Object *scroller;
141
142         setting_push_layout_navi_bar_scroller(ad->win_main_layout,
143                                               setting_phone_license_divx_mode_get_title_str
144                                               (ad), _("IDS_COM_BODY_BACK"),
145                                               NULL,
146                                               setting_phone_license_divx_mode_click_softkey_back_cb,
147                                               NULL, ad, &scroller,
148                                               ad->navi_bar);
149         elm_genlist_mode_set(scroller, ELM_LIST_COMPRESS);
150
151
152         url = setting_customize_text("<underline=on><underline_color=#FF0000>"DIVX_URL"</underline_color></underline>", 0, "#FF0000", "center");
153         Evas_Object *outer_box = setting_create_client_bx(ad->win_main_layout);
154         #if SUPPORT_URL_OPEN
155         SETTING_TRACE_DEBUG("str : %s", str);
156         desc = setting_customize_text(str, 0, NULL, "center");
157
158         Evas_Object *ly_desc = setting_create_textbox(ad->win_main_layout, desc);
159         setting_disable_evas_object(ly_desc);
160         elm_box_pack_end(outer_box, ly_desc);
161
162         Evas_Object *ly_url = setting_create_textbox(ad->win_main_layout, url);
163         evas_object_event_callback_add(ly_url, EVAS_CALLBACK_MOUSE_DOWN, __url_mouse_down_cb, ad);
164         elm_box_pack_end(outer_box, ly_url);
165         #else
166         char tmp_str[MAX_COMMON_BUFFER_LEN] = { 0, };
167         snprintf(tmp_str, sizeof(tmp_str), "%s<br>%s", str, url);
168         desc = setting_customize_text(tmp_str, 0, NULL, "center");
169         Evas_Object *ly_desc = setting_create_textbox(ad->win_main_layout, desc);
170         setting_disable_evas_object(ly_desc);
171         elm_box_pack_end(outer_box, ly_desc);
172         #endif
173
174         elm_object_content_set(scroller, outer_box);
175
176         setting_view_phone_license_divx_mode.is_create = 1;
177         FREE(desc);
178         FREE(url);
179
180         return SETTING_RETURN_SUCCESS;
181 }
182
183 static int setting_phone_license_divx_mode_destroy(void *cb)
184 {
185         SETTING_TRACE_BEGIN;
186         /* error check */
187         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
188
189         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
190
191         elm_naviframe_item_pop(ad->navi_bar);
192         setting_view_phone_license_divx_mode.is_create = 0;
193
194         return SETTING_RETURN_SUCCESS;
195 }
196
197 static int setting_phone_license_divx_mode_update(void *cb)
198 {
199         SETTING_TRACE_BEGIN;
200         return SETTING_RETURN_SUCCESS;
201 }
202
203 static int setting_phone_license_divx_mode_cleanup(void *cb)
204 {
205         return setting_phone_license_divx_mode_destroy(cb);
206 }
207
208 /* ***************************************************
209  *
210  *general func
211  *
212  ***************************************************/
213
214 /* ***************************************************
215  *
216  *call back func
217  *
218  ***************************************************/
219
220 static void
221 setting_phone_license_divx_mode_click_softkey_back_cb(void *data,
222                                                       Evas_Object *obj,
223                                                       void *event_info)
224 {
225         SETTING_TRACE_BEGIN;
226         /* error check */
227         setting_retm_if(data == NULL, "Data parameter is NULL");
228
229         SettingPhoneUG *ad = (SettingPhoneUG *) data;
230
231         setting_view_change(&setting_view_phone_license_divx_mode,
232                             &setting_view_phone_license_divx_main, ad);
233 }