3 * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 #include <ode/external-encryption.h>
21 #include <ode/internal-encryption.h>
23 char *confirm_button_text[] = {
25 "IDS_ST_BUTTON_ENCRYPT_ABB2",
26 "IDS_ST_BUTTON_DECRYPT_DEVICE"
28 extern char *encrypt_header_text[];
29 static int sdcard_option_selected = 0;
30 static int device_full_encryption_state = 0;
32 #define sdcard_option_num 2
33 static void _confirm_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
36 appdata_s *ad = (appdata_s *) data;
37 dlog_print(DLOG_DEBUG, LOG_TAG, "_confirm_btn_clicked_cb start");
39 switch (ad->view_type) {
41 dlog_print(DLOG_DEBUG, LOG_TAG, "encrypt device confirm");
42 ret = ode_internal_encryption_encrypt("tizen", 0);
44 dlog_print(DLOG_DEBUG, LOG_TAG, "internal encryption failed");
49 dlog_print(DLOG_DEBUG, LOG_TAG, "decrypt device confirm");
50 ret = ode_internal_encryption_decrypt("tizen");
52 dlog_print(DLOG_DEBUG, LOG_TAG, "internal decryption failed");
57 dlog_print(DLOG_DEBUG, LOG_TAG, "encrypt sd card confrim");
59 create_progress_view("Encrypting", "External");
60 ret = ode_external_encryption_encrypt(ad->entry_data, 0);
62 dlog_print(DLOG_DEBUG, LOG_TAG, "external encryption failed");
66 dlog_print(DLOG_DEBUG, LOG_TAG, "decrypt sd card confrim");
68 create_progress_view("Decrypting", "External");
69 ret = ode_external_encryption_decrypt(ad->entry_data);
71 dlog_print(DLOG_DEBUG, LOG_TAG, "external decryption failed");
77 static char *confirm_multiline_text_get(void *data, Evas_Object *obj, const char *part)
79 char *genlist_text[] = {
80 "IDS_ST_MBODY_FULL_ENCRYPTION",
81 "IDS_ST_SBODY_ENCRYPT_NOT_ONLY_THE_USED_PHONE_STORAGE_BUT_ALSO_ANY_EMPTY_SPACE_THIS_WILL_TAKE_MORE_TIME"
84 if (!strcmp(part, "elm.text"))
85 return strdup(__(genlist_text[0]));
86 else if (!strcmp(part, "elm.text.multiline"))
87 return strdup(__(genlist_text[1]));
92 void device_encrypt_option_changed_cb(void *data, Evas_Object *obj, void *event_info)
94 dlog_print(DLOG_INFO, LOG_TAG, "The value has changed \n");
95 if (elm_check_state_get(obj) == EINA_TRUE)
96 device_full_encryption_state = 1;
98 device_full_encryption_state = 0;
101 static Evas_Object *device_encrypt_content_get(void *data, Evas_Object *obj, const char *part)
103 if (!strcmp(part, "elm.swallow.end")) {
104 Evas_Object *check = elm_check_add(obj);
105 elm_object_style_set(check, "default");
106 elm_check_state_set(check, EINA_FALSE);
107 evas_object_smart_callback_add(check, "changed", device_encrypt_option_changed_cb, data);
114 static void _prev_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
116 appdata_s *ad = (appdata_s *)data;
117 elm_naviframe_item_pop(ad->navi_bar);
120 static void set_confirm_two_btn_layout(Evas_Object *layout, appdata_s *ad, int text_idx)
122 Evas_Object *btn_layout;
123 Evas_Object *prev_btn, *next_btn;
125 btn_layout = ode_create_layout(layout, ad->edj_path, "two_button_layout");
127 prev_btn = ode_create_button(layout, __(confirm_button_text[0]), "bottom");
128 elm_object_part_content_set(btn_layout, "prev_button", prev_btn);
129 evas_object_smart_callback_add(prev_btn, "clicked", _prev_btn_clicked_cb, ad);
131 next_btn = ode_create_button(layout, __(confirm_button_text[text_idx]), "bottom");
132 elm_object_part_content_set(btn_layout, "next_button", next_btn);
134 evas_object_smart_callback_add(next_btn, "clicked", _confirm_next_btn_clicked_cb, ad);
135 elm_object_part_content_set(layout, "bottom_layout", btn_layout);
139 static char *sd_confirm_multiline_text_get(void *data, Evas_Object *obj, const char *part)
141 char *genlist_text[2][2] = {
143 "IDS_ST_MBODY_ENCRYPT_ALL_FILES",
144 "IDS_ST_SBODY_ENCRYPT_ALL_FILES_SAVED_ON_THE_SD_CARD_NEW_FILES_WILL_ALSO_BE_ENCRYPTED"
147 "IDS_ST_MBODY_ENCRYPT_NEW_FILES",
148 "IDS_ST_BODY_ENCRYPT_ALL_NEW_FILES_SAVED_ON_THIS_SD_CARD_EXISTING_FILES_WILL_NOT_BE_ENCRYPTED"
152 char **text = genlist_text[(intptr_t)data];
154 if (!strcmp(part, "elm.text"))
155 return strdup(__(text[0]));
156 else if (!strcmp(part, "elm.text.multiline"))
157 return strdup(__(text[1]));
161 void radio_changed_cb(void *data, Evas_Object *obj, void *event_info)
163 dlog_print(DLOG_INFO, LOG_TAG, "The value has changed %d\n", (intptr_t)data);
164 sdcard_option_selected = (intptr_t)data;
166 dlog_print(DLOG_INFO, LOG_TAG, "sdcard_option_selected is %d\n", sdcard_option_selected);
169 static Evas_Object *sd_confirm_content_get(void *data, Evas_Object *obj, const char *part)
171 static Evas_Object *group = NULL;
172 int idx = (intptr_t)data;
174 if (!strcmp(part, "elm.swallow.end")) {
176 dlog_print(DLOG_DEBUG, LOG_TAG, "radio group null");
177 group = elm_radio_add(obj);
178 elm_radio_state_value_set(group, 0);
179 elm_radio_value_set(group, 0);
182 dlog_print(DLOG_DEBUG, LOG_TAG, "radio group not null");
183 Evas_Object *radio = elm_radio_add(obj);
184 elm_radio_state_value_set(radio, idx);
186 if (idx == sdcard_option_selected) {
187 elm_radio_state_value_set(radio, idx);
190 elm_radio_group_add(radio, group);
191 evas_object_propagate_events_set(radio, EINA_FALSE);
192 evas_object_repeat_events_set(radio, EINA_FALSE);
194 evas_object_smart_callback_add(radio, "changed", radio_changed_cb, data);
200 static Eina_Bool sdcard_encrypt_view_pop_cb(void *data, Elm_Object_Item *it)
202 sdcard_option_selected = 0;
206 static Eina_Bool device_encrypt_view_pop_cb(void *data, Elm_Object_Item *it)
208 appdata_s *ad = (appdata_s *)data;
210 if (ad->view_type == ENCRYPT_DEVICE)
211 device_full_encryption_state = 0;
216 void ode_confirm_encrypt_device_create_view(appdata_s *ad)
218 Evas_Object *naviframe = ad->navi_bar;
219 Evas_Object *base_layout = NULL;
220 Evas_Object *confirm_msg = NULL;
221 Evas_Object *confirm_layout = NULL;
223 Evas_Object *genlist = NULL;
224 Elm_Genlist_Item_Class *itc;
225 Elm_Object_Item *item;
227 dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_device_create_view");
229 char string[PATH_MAX] = "";
230 char *confirm_text[2][3] = {
232 "IDS_ST_BODY_TAP_ENCRYPT_TO_START_THE_ENCRYPTION_PROCESS",
233 "IDS_ST_BODY_THE_ENCRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_MSG",
234 "IDS_ST_HEADER_ENCRYPTION_OPTIONS_ABB"
237 "IDS_ST_BODY_TAP_DECRYPT_TO_START_THE_DECRYPTION_PROCESS",
238 "IDS_ST_BODY_THE_DECRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_THE_DECRYPTION_MSG",
243 char **text = confirm_text[ad->view_type];
245 if (naviframe == NULL) {
246 dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null");
250 base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout");
251 confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout");
252 text = confirm_text[ad->view_type];
253 snprintf(string, sizeof(string), "%s<br><br>%s", __(text[0]), __(text[1]));
254 confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE);
255 elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg);
257 if (ad->view_type == ENCRYPT_DEVICE) {
258 /* add group index */
259 genlist = elm_genlist_add(confirm_layout);
260 elm_object_style_set(genlist, "solid/default");
261 elm_layout_content_set(confirm_layout, "genlist_base", genlist);
262 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
264 itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL);
265 ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, text[2]);
267 itc = ode_create_genlist_item_class("multiline", confirm_multiline_text_get, device_encrypt_content_get);
268 ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, NULL);
271 elm_object_part_content_set(base_layout, "content_layout", confirm_layout);
273 set_confirm_two_btn_layout(base_layout, ad, (ad->view_type + 1));
274 item = elm_naviframe_item_push(naviframe, __(encrypt_header_text[ad->view_type]), NULL, NULL, base_layout, NULL);
275 elm_naviframe_item_pop_cb_set(item, device_encrypt_view_pop_cb, ad);
278 void ode_confirm_encrypt_sd_card_create_view(appdata_s *ad)
280 Evas_Object *naviframe = ad->navi_bar;
281 Evas_Object *base_layout = NULL;
282 Evas_Object *confirm_msg = NULL;
283 Evas_Object *confirm_layout = NULL;
285 Evas_Object *genlist = NULL;
286 Elm_Genlist_Item_Class *itc;
287 Elm_Object_Item *item;
289 dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_sd_card_create_view");
291 char string[PATH_MAX] = "";
292 char *confirm_text[] = {
293 "IDS_ST_BODY_TAP_ENCRYPT_SD_CARD_TO_START_THE_ENCRYPTION_PROCESS",
294 "IDS_ST_BODY_ALL_OPEN_FILES_ON_SD_CARD_WILL_BE_CLOSED",
295 "IDS_ST_BODY_THE_ENCRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_THE_MSG",
296 "IDS_ST_HEADER_ENCRYPTION_OPTIONS_ABB"
299 if (naviframe == NULL) {
300 dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null");
304 base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout");
305 confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout");
307 snprintf(string, sizeof(string), "%s<br><br>%s%s", __(confirm_text[0]), __(confirm_text[1]), __(confirm_text[2]));
308 confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE);
309 elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg);
311 genlist = elm_genlist_add(confirm_layout);
312 elm_object_style_set(genlist, "solid/default");
313 elm_layout_content_set(confirm_layout, "genlist_base", genlist);
314 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
316 itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL);
317 ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, confirm_text[3]);
320 itc = ode_create_genlist_item_class("multiline", sd_confirm_multiline_text_get, sd_confirm_content_get);
322 for (index = 0; index < sdcard_option_num; index++) {
323 item = elm_genlist_item_append(genlist, itc, (void*)(intptr_t)index, NULL, ELM_GENLIST_ITEM_NONE , NULL, NULL);
324 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE);
327 elm_object_part_content_set(base_layout, "content_layout", confirm_layout);
328 set_confirm_two_btn_layout(base_layout, ad, 1);
329 item = elm_naviframe_item_push(naviframe, __(encrypt_header_text[2]), NULL, NULL, base_layout, NULL);
330 elm_naviframe_item_pop_cb_set(item, sdcard_encrypt_view_pop_cb, NULL);
333 void ode_confirm_decrypt_sd_card_create_view(appdata_s *ad)
335 Evas_Object *naviframe = ad->navi_bar;
336 Evas_Object *base_layout = NULL;
337 Evas_Object *confirm_msg = NULL;
338 Evas_Object *confirm_layout = NULL;
340 dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_decrypt_sd_card_create_view");
342 char string[PATH_MAX] = "";
343 char *confirm_text[] = {
344 "IDS_ST_BODY_TAP_ENCRYPT_SD_CARD_TO_START_THE_ENCRYPTION_PROCESS",
345 "IDS_ST_BODY_ALL_OPEN_FILES_ON_SD_CARD_WILL_BE_CLOSED",
346 "IDS_ST_BODY_THE_DECRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_MSG"
349 if (naviframe == NULL) {
350 dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null");
354 base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout");
355 confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout");
357 snprintf(string, sizeof(string), "%s<br><br>%s%s", __(confirm_text[0]), __(confirm_text[1]), __(confirm_text[2]));
358 confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE);
359 elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg);
361 elm_object_part_content_set(base_layout, "content_layout", confirm_layout);
362 set_confirm_two_btn_layout(base_layout, ad, 2);
363 elm_naviframe_item_push(naviframe, __(encrypt_header_text[3]), NULL, NULL, base_layout, NULL);