From 0580d11b1801074b9480f0ecd438fdd1ada61d65 Mon Sep 17 00:00:00 2001 From: yeji01kim Date: Wed, 22 Feb 2017 19:17:08 +0900 Subject: [PATCH] Refactor ode application Change-Id: I6083137d4712f5d97a7b527c3ab63948499327c9 Signed-off-by: yeji01kim --- tools/apps/ode/CMakeLists.txt | 18 +- tools/apps/ode/include/ode-app.h | 47 +- .../res/edc_resource/encryption_device.edc | 0 tools/apps/ode/src/battery.c | 86 ++ tools/apps/ode/src/external-decrypt/confirm.c | 67 ++ tools/apps/ode/src/external-decrypt/main.c | 70 ++ tools/apps/ode/src/external-encrypt/check.c | 207 ++++ tools/apps/ode/src/external-encrypt/confirm.c | 158 +++ tools/apps/ode/src/external-encrypt/main.c | 62 ++ tools/apps/ode/src/internal-decrypt/confirm.c | 69 ++ tools/apps/ode/src/internal-decrypt/main.c | 134 +++ tools/apps/ode/src/internal-encrypt/check.c | 210 ++++ tools/apps/ode/src/internal-encrypt/confirm.c | 139 +++ tools/apps/ode/src/internal-encrypt/main.c | 61 ++ tools/apps/ode/src/locktype.c | 125 +++ tools/apps/ode/src/ode-app-common.c | 172 ++++ tools/apps/ode/src/ode-app-confirm.c | 368 ------- tools/apps/ode/src/ode-app-main.c | 929 ------------------ tools/apps/ode/src/ode-app.c | 21 +- tools/apps/ode/src/password/confirm-popup.c | 3 +- tools/apps/ode/src/password/entry-popup.c | 3 +- tools/apps/ode/src/password/password.c | 24 +- tools/apps/ode/src/sdcard.c | 55 ++ 23 files changed, 1703 insertions(+), 1325 deletions(-) mode change 100644 => 100755 tools/apps/ode/res/edc_resource/encryption_device.edc create mode 100755 tools/apps/ode/src/battery.c create mode 100755 tools/apps/ode/src/external-decrypt/confirm.c create mode 100755 tools/apps/ode/src/external-decrypt/main.c create mode 100755 tools/apps/ode/src/external-encrypt/check.c create mode 100755 tools/apps/ode/src/external-encrypt/confirm.c create mode 100755 tools/apps/ode/src/external-encrypt/main.c create mode 100755 tools/apps/ode/src/internal-decrypt/confirm.c create mode 100755 tools/apps/ode/src/internal-decrypt/main.c create mode 100755 tools/apps/ode/src/internal-encrypt/check.c create mode 100755 tools/apps/ode/src/internal-encrypt/confirm.c create mode 100755 tools/apps/ode/src/internal-encrypt/main.c create mode 100755 tools/apps/ode/src/locktype.c create mode 100755 tools/apps/ode/src/ode-app-common.c delete mode 100755 tools/apps/ode/src/ode-app-confirm.c delete mode 100755 tools/apps/ode/src/ode-app-main.c create mode 100755 tools/apps/ode/src/sdcard.c diff --git a/tools/apps/ode/CMakeLists.txt b/tools/apps/ode/CMakeLists.txt index 1d621d2..7ac6c12 100755 --- a/tools/apps/ode/CMakeLists.txt +++ b/tools/apps/ode/CMakeLists.txt @@ -17,15 +17,27 @@ LINK_DIRECTORIES(${EFL_APP_LIBRARY_DIRS} ${tools_pkgs_LIBRARY_DIRS}) SET(PKG_NAME "${ODE_TARGET}") SET(PKG_SRC ./src/ode-app.c ./src/ode-app-widget.c - ./src/ode-app-main.c - ./src/ode-app-confirm.c + ./src/ode-app-common.c ./src/ode-app-progress.c ./src/insert-sdcard.c ./src/reset-sdcard.c + ./src/battery.c + ./src/locktype.c + ./src/sdcard.c ./src/password/password.c ./src/password/message-popup.c ./src/password/confirm-popup.c - ./src/password/entry-popup.c) + ./src/password/entry-popup.c + ./src/internal-encrypt/main.c + ./src/internal-encrypt/check.c + ./src/internal-encrypt/confirm.c + ./src/internal-decrypt/main.c + ./src/internal-decrypt/confirm.c + ./src/external-encrypt/main.c + ./src/external-encrypt/check.c + ./src/external-encrypt/confirm.c + ./src/external-decrypt/main.c + ./src/external-decrypt/confirm.c) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") diff --git a/tools/apps/ode/include/ode-app.h b/tools/apps/ode/include/ode-app.h index 779bd7c..4bb5699 100755 --- a/tools/apps/ode/include/ode-app.h +++ b/tools/apps/ode/include/ode-app.h @@ -48,7 +48,7 @@ #define PACKAGE "org.tizen.ode" #endif -typedef struct dpm_encryption_info { +typedef struct ode_encryption_info { int battery_status; int charger_status; int locktype_status; @@ -60,7 +60,7 @@ typedef struct dpm_encryption_info { char* sdcard_pw; Evas_Object *next_button; -} dpm_encryption_info_s; +} ode_encryption_info_s; typedef enum { ENCRYPT_DEVICE, @@ -68,12 +68,12 @@ typedef enum { ENCRYPT_SD_CARD, DECRYPT_SD_CARD, SD_CARD_PASSWORD, -} dpm_encryption_viewtype; +} ode_viewtype; typedef enum { ICON_CHECK, ICON_BAR, -} dpm_encryption_icontype; +} ode_icontype; typedef struct appdata { Evas_Object* win; @@ -81,9 +81,9 @@ typedef struct appdata { Evas_Object* nf; Evas_Object* base; Evas_Object* navi_bar; - Evas_Object* dpm_encryption_layout; + Evas_Object* encryption_layout; Evas_Object* sdcard_pw_layout; - dpm_encryption_info_s device_info; + ode_encryption_info_s device_info; char* edj_path; char* icon_check_path; @@ -102,12 +102,19 @@ typedef struct appdata { #define SUB_TITLE_STYLE_W "DEFAULT='font=Tizen:style=Regular font_size=40 color=#ffffff wrap=mixed align=center'" #define SUB_CONTENT_STYLE_W "DEFAULT='font=Tizen:style=Regular font_size=32 color=#ffffff wrap=mixed align=center'" +#define APP_SETTING_LOCKTYPE "org.tizen.setting-locktype" +#define APP_SETTING_PASSWORD "org.tizen.setting-password" +#define APP_ODE_PASSWORD "org.tizen.ode-password" + +#define sdcard_option_num 2 + void ode_encrypt_device_create_view(appdata_s* ad); -void ode_check_encrypt_device_create_view(appdata_s* ad); void ode_encrypt_sd_card_create_view(appdata_s* ad); void ode_decrypt_sd_card_create_view(appdata_s* ad); void ode_confirm_encrypt_device_create_view(appdata_s* ad); +void ode_confirm_decrypt_device_create_view(appdata_s *ad); +void ode_check_decrypt_device_create_view(appdata_s *ad); void ode_check_encrypt_sd_card_create_view(appdata_s* ad); void ode_confirm_encrypt_sd_card_create_view(appdata_s* ad); void ode_confirm_decrypt_sd_card_create_view(appdata_s* ad); @@ -119,4 +126,30 @@ void battery_changed_cb(device_callback_e type, void* value, void* user_data); void create_base_window(); void create_progress_view(const char *type, const char *target); +void set_next_btn(Evas_Object *layout, const char* edj_path, const char *btn_text, Evas_Smart_Cb callback, const void* data); +void set_icon(appdata_s *ad, int type, char *part); +void set_two_btn(Evas_Object *layout, appdata_s *ad, Evas_Smart_Cb callback, const void* data); + +void _prev_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info); +void sw_back_btn_set(Evas_Object *obj, const char *title_label, Evas_Object *content); +void set_confirm_two_btn(Evas_Object *layout, const char *edj_path, int text_idx, Evas_Smart_Cb callback, const void* data); +void ode_check_encrypt_device_create_view(appdata_s *ad); + +/* battery */ +int battery_icon_status_update(appdata_s *ad); +int battery_cb_register(runtime_info_changed_cb charger_callback, device_changed_cb capacity_callback, void *user_data); + +void enc_battery_changed_cb(device_callback_e type, void *value, void *user_data); + +/* locktype */ +void new_launch_locktype_ug(void); +int locktype_cb_register(vconf_callback_fn callback, void* user_data); +int locktype_icon_status_update(appdata_s *ad); + +/* sdcard */ +int sdcard_icon_status_update(appdata_s *ad); +int sdcard_cb_register(vconf_callback_fn callback, void* user_data); + +void set_change_pw_btn(Evas_Object *layout, const char *edj_path, const char *btn_text, Evas_Smart_Cb callback, const void* data); + #endif /* __ODE_H__ */ diff --git a/tools/apps/ode/res/edc_resource/encryption_device.edc b/tools/apps/ode/res/edc_resource/encryption_device.edc old mode 100644 new mode 100755 diff --git a/tools/apps/ode/src/battery.c b/tools/apps/ode/src/battery.c new file mode 100755 index 0000000..135638d --- /dev/null +++ b/tools/apps/ode/src/battery.c @@ -0,0 +1,86 @@ +/* + * Tizen ODE application + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +int battery_icon_status_update(appdata_s *ad) +{ + bool connected; + int battery_pct, ret; + dlog_print(DLOG_DEBUG, LOG_TAG, "battery_icon_status_update start "); + + if (ad->encryption_layout == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); + return -1; + } + + /* get battery percent info */ + ret = device_battery_get_percent(&battery_pct); + if (ret != DEVICE_ERROR_NONE) { + dlog_print(DLOG_ERROR, LOG_TAG, "device_battery_get_percent failed %d", ret); + return -1; + } + + if (battery_pct > NEEDED_BATTERY_PERCENT) { + set_icon(ad, ICON_CHECK, "battery_icon"); + ad->device_info.battery_status = 1; + } else { + set_icon(ad, ICON_BAR, "battery_icon"); + ad->device_info.battery_status = 0; + } + + /* get charger connected info */ + ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_CHARGER_CONNECTED, &connected); + if (ret != RUNTIME_INFO_ERROR_NONE) { + dlog_print(DLOG_ERROR, LOG_TAG, "get runtime info fail"); + return -1; + } + if (connected) { + set_icon(ad, ICON_CHECK, "charge_icon"); + ad->device_info.charger_status = 1; + } else { + set_icon(ad, ICON_BAR, "charge_icon"); + ad->device_info.charger_status = 0; + } + + return 0; +} + +int battery_cb_register(runtime_info_changed_cb charger_callback, device_changed_cb capacity_callback, void *user_data) +{ + int ret; + + /* register runtime callback : connected charger */ + ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_CHARGER_CONNECTED, charger_callback, user_data); + if (ret != RUNTIME_INFO_ERROR_NONE) { + dlog_print(DLOG_ERROR, LOG_TAG, "runtime_info_set_changed_cb failed: %d", ret); + return -1; + } + + /* register runtime callback : battery percent */ + ret = device_add_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, capacity_callback, user_data); + if (ret != DEVICE_ERROR_NONE) { + dlog_print(DLOG_ERROR, LOG_TAG, "device_add_callback failed: %d", ret); + return -1; + } + + return 0; +} + diff --git a/tools/apps/ode/src/external-decrypt/confirm.c b/tools/apps/ode/src/external-decrypt/confirm.c new file mode 100755 index 0000000..448066a --- /dev/null +++ b/tools/apps/ode/src/external-decrypt/confirm.c @@ -0,0 +1,67 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" +#include + +static void _external_decrypt_confirm_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = (appdata_s *) data; + int ret; + + create_base_window(); + create_progress_view("Decrypting", "External"); + ret = ode_external_encryption_decrypt(ad->entry_data); + if (ret != 0) { + dlog_print(DLOG_DEBUG, LOG_TAG, "external decryption failed"); + } +} + +void ode_confirm_decrypt_sd_card_create_view(appdata_s *ad) +{ + Evas_Object *naviframe = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *confirm_msg = NULL; + Evas_Object *confirm_layout = NULL; + + dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_decrypt_sd_card_create_view"); + + char string[PATH_MAX] = ""; + char *confirm_text[] = { + "IDS_ST_BODY_TAP_ENCRYPT_SD_CARD_TO_START_THE_ENCRYPTION_PROCESS", + "IDS_ST_BODY_ALL_OPEN_FILES_ON_SD_CARD_WILL_BE_CLOSED", + "IDS_ST_BODY_THE_DECRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_MSG" + }; + + if (naviframe == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); + return; + } + + base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); + confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); + + snprintf(string, sizeof(string), "%s

%s%s", __(confirm_text[0]), __(confirm_text[1]), __(confirm_text[2])); + confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); + + elm_object_part_content_set(base_layout, "content_layout", confirm_layout); + set_confirm_two_btn(base_layout, ad->edj_path, 2, _external_decrypt_confirm_next_btn_clicked_cb, ad); + elm_naviframe_item_push(naviframe, __("IDS_ST_HEADER_DECRYPT_SD_CARD"), NULL, NULL, base_layout, NULL); +} diff --git a/tools/apps/ode/src/external-decrypt/main.c b/tools/apps/ode/src/external-decrypt/main.c new file mode 100755 index 0000000..1ed0f4b --- /dev/null +++ b/tools/apps/ode/src/external-decrypt/main.c @@ -0,0 +1,70 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" + +void _external_decrypt_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_external_decrypt_next_btn_clicked_cb start"); + appdata_s *ad = (appdata_s *) data; + ode_confirm_decrypt_sd_card_create_view(ad); +} + +static void _change_pw_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_INFO, LOG_TAG, "change password button click"); + appdata_s *ad = (appdata_s *)data; + on_change_password_popup(ad->base); + password_popup_set_result_callback(NULL, ad); +} + +void ode_decrypt_sd_card_create_view(appdata_s *ad) +{ + Evas_Object *navi_bar = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *encrypt_msg = NULL; + Evas_Object *decrypt_sd_card_layout = NULL; + + char string[PATH_MAX] = ""; + + char *encrypt_text[] = { + "IDS_ST_BODY_THE_DECRYPTION_PROCESS_MAY_TAKE_A_LONG_TIME_MSG" + }; + + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); + ui_app_exit(); + } + + base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); + decrypt_sd_card_layout = ode_create_layout(base_layout, ad->edj_path, "decrypt_sdcard_layout"); + ad->encryption_layout = decrypt_sd_card_layout; + + snprintf(string, sizeof(string), "%s", __(encrypt_text[0])); + encrypt_msg = ode_create_textblock(decrypt_sd_card_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(decrypt_sd_card_layout, "msg_content", encrypt_msg); + + set_change_pw_btn(decrypt_sd_card_layout, ad->edj_path, __("IDS_ST_BUTTON_CHANGE_PASSWORD_ABB2"), _change_pw_btn_clicked_cb, ad); + set_next_btn(base_layout, ad->edj_path, __("IDS_ST_BUTTON_NEXT"), _external_decrypt_next_btn_clicked_cb, ad); + + elm_object_part_content_set(base_layout, "content_layout", decrypt_sd_card_layout); + + snprintf(string, sizeof(string), "%s", __("IDS_ST_HEADER_DECRYPT_SD_CARD")); + sw_back_btn_set(navi_bar, string, base_layout); +} diff --git a/tools/apps/ode/src/external-encrypt/check.c b/tools/apps/ode/src/external-encrypt/check.c new file mode 100755 index 0000000..fd4cbd1 --- /dev/null +++ b/tools/apps/ode/src/external-encrypt/check.c @@ -0,0 +1,207 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" + +static void update_sdcard_pw_btn_status(void *data); + + +static void _external_encrypt_check_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_check_next_btn_clicked_cb start"); + + appdata_s *ad = (appdata_s *) data; + ode_confirm_encrypt_sd_card_create_view(ad); +} + + +static void update_external_encrypt_next_button_status(appdata_s *ad) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "update_next_button_status start"); + if (ad->device_info.next_button == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "[Encrypt Device] next button is null"); + return; + } + + if (ad->device_info.sdcard_status && ad->device_info.sdcard_pw_status == 1) { + elm_object_disabled_set(ad->device_info.next_button, EINA_FALSE); + } else { + elm_object_disabled_set(ad->device_info.next_button, EINA_TRUE); + } +} + +void sdcard_status_changed_cb(keynode_t *node, void *data) +{ + appdata_s *ad = (appdata_s *) data; + sdcard_icon_status_update(ad); + update_external_encrypt_next_button_status(ad); +} + +static void _sdcardpw_create_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_ERROR, LOG_TAG, "sdcardpw create btn cb start"); + appdata_s *ad = (appdata_s *)data; + + on_create_password_popup(ad->base); + password_popup_set_result_callback(update_sdcard_pw_btn_status, ad); +} + +static void _sdcardpw_change_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_ERROR, LOG_TAG, "sdcardpw change btn cb start"); + appdata_s *ad = (appdata_s *)data; + + on_change_password_popup(ad->base); + password_popup_set_result_callback(update_sdcard_pw_btn_status, ad); +} + +static void _sdcardpw_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_ERROR, LOG_TAG, "sdcardpw delete btn cb start"); + appdata_s *ad = (appdata_s *)data; + + on_delete_password_popup(ad->base); + password_popup_set_result_callback(update_sdcard_pw_btn_status, ad); +} + +static void update_sdcard_pw_btn_status(void *data) +{ + Evas_Object *one_btn_layout, *two_btn_layout; + Evas_Object *createpw_btn, *changepw_btn, *deletepw_btn; + appdata_s *ad = (appdata_s *)data; + + char *btn_text[] = { + "IDS_ST_BUTTON_CREATE_PASSWORD", + "IDS_ST_BUTTON_CHANGE_PW_ABB", + "IDS_ST_BUTTON_DELETE_PW_ABB", + }; + + if (ad->device_info.sdcard_pw_status == 0) { + /* set create pw button */ + one_btn_layout = ode_create_layout(ad->encryption_layout, ad->edj_path, "one_button_layout"); + createpw_btn = ode_create_button(one_btn_layout, __(btn_text[0]), "default"); + elm_object_part_content_set(one_btn_layout, "button_base", createpw_btn); + evas_object_smart_callback_add(createpw_btn, "clicked", _sdcardpw_create_btn_clicked_cb, ad); + elm_object_part_content_set(ad->encryption_layout, "button_base", one_btn_layout); + set_icon(ad, ICON_BAR, "charge_icon"); + } else if (ad->device_info.sdcard_pw_status == 1) { + /* set change pw / delete pw button */ + two_btn_layout = ode_create_layout(ad->encryption_layout, ad->edj_path, "two_button_layout"); + changepw_btn = ode_create_button(two_btn_layout, __(btn_text[1]), "default"); + deletepw_btn = ode_create_button(two_btn_layout, __(btn_text[2]), "default"); + elm_object_part_content_set(two_btn_layout, "prev_button", changepw_btn); + elm_object_part_content_set(two_btn_layout, "next_button", deletepw_btn); + evas_object_smart_callback_add(changepw_btn, "clicked", _sdcardpw_change_btn_clicked_cb, ad); + evas_object_smart_callback_add(deletepw_btn, "clicked", _sdcardpw_delete_btn_clicked_cb, ad); + elm_object_part_content_set(ad->encryption_layout, "button_base", two_btn_layout); + set_icon(ad, ICON_CHECK, "charge_icon"); + } + update_external_encrypt_next_button_status(ad); + return; +} + +static Eina_Bool external_encrypt_check_view_pop_cb(void *data, Elm_Object_Item *it) +{ + int ret; + + ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, sdcard_status_changed_cb); + if (ret != 0) + dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister sdcard callback"); + + return EINA_TRUE; +} + +void ode_check_encrypt_sd_card_create_view(appdata_s *ad) +{ + Evas_Object *navi_bar = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *check_msg = NULL; + Evas_Object *encryption_check_layout = NULL; + Evas_Object *genlist = NULL; + Elm_Object_Item *item; + Elm_Genlist_Item_Class *itc; + + dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_check_encrypt_sd_card_create_view"); + char string[PATH_MAX] = ""; + char *check_text[] = { + "IDS_ST_BODY_THE_ENCRYPTION_PROCESS_MAY_TAKE_A_LONG_TIME_DEPENDING_ON_THE_AMOUNT_OF_DATA_MSG", + "IDS_ST_BODY_MAKE_SURE_THAT_THE_BATTERY_IS_CHARGED_AND_KEEP_THE_PHONE_PLUGGED_IN_UNTIL_ENCRYPTION_IS_COMPLETE", + "IDS_ST_BODY_TO_ENCRYPT_YOUR_SD_CARD_C", + }; + + char *status_text[] = { + "IDS_ST_BODY_INSERT_THE_SD_CARD_ABB", + "IDS_ST_BODY_CREATE_AN_SD_CARD_PASSWORD" + }; + + int ret; + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); + return; + } + + base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); + encryption_check_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_check_layout"); + ad->encryption_layout = encryption_check_layout; + + snprintf(string, sizeof(string), "%s
%s", __(check_text[0]), __(check_text[1])); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "msg_content", check_msg); + + /* add group index */ + genlist = elm_genlist_add(encryption_check_layout); + elm_object_style_set(genlist, "solid/default"); + elm_layout_content_set(encryption_check_layout, "genlist_base", genlist); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); + ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, check_text[2]); + + set_two_btn(base_layout, ad, _external_encrypt_check_next_btn_clicked_cb, ad); + + /* get sdcard info */ + ret = sdcard_icon_status_update(ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "sdcard_status_update failed"); + return; + } + + /* register vconf notify callback : sdcard status */ + ret = sdcard_cb_register(sdcard_status_changed_cb, ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "locktype_cb_register failed"); + return; + } + + snprintf(string, sizeof(string), "%s", __(status_text[0])); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "battery_text", check_msg); + + update_sdcard_pw_btn_status(ad); + + snprintf(string, sizeof(string), "%s", __(status_text[1])); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "charge_text", check_msg); + elm_object_part_content_set(base_layout, "content_layout", encryption_check_layout); + + /* set bottom button */ + item = elm_naviframe_item_push(navi_bar, __("IDS_ST_HEADER_ENCRYPT_SD_CARD"), NULL, NULL, base_layout, NULL); + elm_naviframe_item_pop_cb_set(item, external_encrypt_check_view_pop_cb, ad); +} + diff --git a/tools/apps/ode/src/external-encrypt/confirm.c b/tools/apps/ode/src/external-encrypt/confirm.c new file mode 100755 index 0000000..c4a15cd --- /dev/null +++ b/tools/apps/ode/src/external-encrypt/confirm.c @@ -0,0 +1,158 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" +#include + +static int sdcard_option_selected = 0; + +static void _external_encrypt_confirm_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = (appdata_s *) data; + int ret; + + create_base_window(); + create_progress_view("Encrypting", "External"); + ret = ode_external_encryption_encrypt(ad->entry_data, 0); + if (ret != 0) { + dlog_print(DLOG_DEBUG, LOG_TAG, "external encryption failed"); + } +} + +static char *sd_confirm_multiline_text_get(void *data, Evas_Object *obj, const char *part) +{ + char *genlist_text[2][2] = { + { + "IDS_ST_MBODY_ENCRYPT_ALL_FILES", + "IDS_ST_SBODY_ENCRYPT_ALL_FILES_SAVED_ON_THE_SD_CARD_NEW_FILES_WILL_ALSO_BE_ENCRYPTED" + }, + { + "IDS_ST_MBODY_ENCRYPT_NEW_FILES", + "IDS_ST_BODY_ENCRYPT_ALL_NEW_FILES_SAVED_ON_THIS_SD_CARD_EXISTING_FILES_WILL_NOT_BE_ENCRYPTED" + } + }; + + char **text = genlist_text[(intptr_t)data]; + + if (!strcmp(part, "elm.text")) + return strdup(__(text[0])); + else if (!strcmp(part, "elm.text.multiline")) + return strdup(__(text[1])); + return NULL; +} + +void radio_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_INFO, LOG_TAG, "The value has changed %d\n", (intptr_t)data); + sdcard_option_selected = (intptr_t)data; + + dlog_print(DLOG_INFO, LOG_TAG, "sdcard_option_selected is %d\n", sdcard_option_selected); +} + +static Evas_Object *sd_confirm_content_get(void *data, Evas_Object *obj, const char *part) +{ + static Evas_Object *group = NULL; + int idx = (intptr_t)data; + + if (!strcmp(part, "elm.swallow.end")) { + if (idx == 0) { + dlog_print(DLOG_DEBUG, LOG_TAG, "radio group null"); + group = elm_radio_add(obj); + elm_radio_state_value_set(group, 0); + elm_radio_value_set(group, 0); + } + + dlog_print(DLOG_DEBUG, LOG_TAG, "radio group not null"); + Evas_Object *radio = elm_radio_add(obj); + elm_radio_state_value_set(radio, idx); + + if (idx == sdcard_option_selected) { + elm_radio_state_value_set(radio, idx); + } + + elm_radio_group_add(radio, group); + evas_object_propagate_events_set(radio, EINA_FALSE); + evas_object_repeat_events_set(radio, EINA_FALSE); + + evas_object_smart_callback_add(radio, "changed", radio_changed_cb, data); + return radio; + } + return NULL; +} + +static Eina_Bool sdcard_encrypt_view_pop_cb(void *data, Elm_Object_Item *it) +{ + sdcard_option_selected = 0; + return EINA_TRUE; +} + +void ode_confirm_encrypt_sd_card_create_view(appdata_s *ad) +{ + Evas_Object *naviframe = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *confirm_msg = NULL; + Evas_Object *confirm_layout = NULL; + + Evas_Object *genlist = NULL; + Elm_Genlist_Item_Class *itc; + Elm_Object_Item *item; + + dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_sd_card_create_view"); + + char string[PATH_MAX] = ""; + char *confirm_text[] = { + "IDS_ST_BODY_TAP_ENCRYPT_SD_CARD_TO_START_THE_ENCRYPTION_PROCESS", + "IDS_ST_BODY_ALL_OPEN_FILES_ON_SD_CARD_WILL_BE_CLOSED", + "IDS_ST_BODY_THE_ENCRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_THE_MSG", + "IDS_ST_HEADER_ENCRYPTION_OPTIONS_ABB" + }; + + if (naviframe == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); + return; + } + + base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); + confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); + + snprintf(string, sizeof(string), "%s

%s%s", __(confirm_text[0]), __(confirm_text[1]), __(confirm_text[2])); + confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); + + genlist = elm_genlist_add(confirm_layout); + elm_object_style_set(genlist, "solid/default"); + elm_layout_content_set(confirm_layout, "genlist_base", genlist); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); + ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, confirm_text[3]); + + int index; + itc = ode_create_genlist_item_class("multiline", sd_confirm_multiline_text_get, sd_confirm_content_get); + + for (index = 0; index < sdcard_option_num; index++) { + item = elm_genlist_item_append(genlist, itc, (void*)(intptr_t)index, NULL, ELM_GENLIST_ITEM_NONE , NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + + elm_object_part_content_set(base_layout, "content_layout", confirm_layout); + set_confirm_two_btn(base_layout, ad->edj_path, 1, _external_encrypt_confirm_next_btn_clicked_cb, ad); + item = elm_naviframe_item_push(naviframe, __("IDS_ST_HEADER_ENCRYPT_SD_CARD"), NULL, NULL, base_layout, NULL); + elm_naviframe_item_pop_cb_set(item, sdcard_encrypt_view_pop_cb, NULL); +} diff --git a/tools/apps/ode/src/external-encrypt/main.c b/tools/apps/ode/src/external-encrypt/main.c new file mode 100755 index 0000000..a5c4011 --- /dev/null +++ b/tools/apps/ode/src/external-encrypt/main.c @@ -0,0 +1,62 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +void _sd_card_encrypt_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_sd_card_encrypt_next_btn_clicked_cb start"); + + appdata_s *ad = (appdata_s *) data; + ode_check_encrypt_sd_card_create_view(ad); +} + +void ode_encrypt_sd_card_create_view(appdata_s *ad) +{ + Evas_Object *navi_bar = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *encrypt_msg = NULL; + Evas_Object *encrypt_device_layout = NULL; + + char string[PATH_MAX] = ""; + + char *encrypt_text[] = { + "IDS_ST_BODY_ENCRYPTING_YOUR_SD_CARD_WILL_PROTECT_ITS_DATA_IF_ITS_LOST_OR_STOLEN_ENCRYPTED_SD_CARDS_CAN_ONLY_MSG", + "IDS_ST_BODY_ONCE_THE_SD_CARD_IS_ENCRYPTED_A_PASSWORD_IS_REQUIRED_TO_USE_IT_THE_SAME_PASSWORD_MUST_MSG" + }; + + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); + ui_app_exit(); + } + + base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); + encrypt_device_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_first_layout"); + ad->encryption_layout = encrypt_device_layout; + + snprintf(string, sizeof(string), "%s

%s", __(encrypt_text[0]), __(encrypt_text[1])); + encrypt_msg = ode_create_textblock(encrypt_device_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encrypt_device_layout, "msg_content", encrypt_msg); + + set_next_btn(base_layout, ad->edj_path, __("IDS_ST_BUTTON_NEXT"), _sd_card_encrypt_next_btn_clicked_cb, ad); + + elm_object_part_content_set(base_layout, "content_layout", encrypt_device_layout); + + snprintf(string, sizeof(string), "%s", __("IDS_ST_HEADER_ENCRYPT_SD_CARD")); + sw_back_btn_set(navi_bar, string, base_layout); +} diff --git a/tools/apps/ode/src/internal-decrypt/confirm.c b/tools/apps/ode/src/internal-decrypt/confirm.c new file mode 100755 index 0000000..dcebd40 --- /dev/null +++ b/tools/apps/ode/src/internal-decrypt/confirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" +#include +#include + +popup_data_s dec_popup_data; /* for temporary */ + +static void _internal_decrypt_confirm_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = (appdata_s *) data; + dlog_print(DLOG_DEBUG, LOG_TAG, "_confirm_btn_clicked_cb start"); + + dlog_print(DLOG_DEBUG, LOG_TAG, "decrypt device confirm"); + dec_popup_data.parent = ad->base; + dec_popup_data.popup = NULL; + dec_popup_data.mode = INTERNAL_DECRYPT_PASSWORD; + create_confirm_password_popup(&dec_popup_data); +} + +void ode_confirm_decrypt_device_create_view(appdata_s *ad) +{ + Evas_Object *naviframe = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *confirm_msg = NULL; + Evas_Object *confirm_layout = NULL; + + dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_device_create_view"); + + char string[PATH_MAX] = ""; + char *confirm_text[] = { + "IDS_ST_BODY_TAP_DECRYPT_TO_START_THE_DECRYPTION_PROCESS", + "IDS_ST_BODY_THE_DECRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_THE_DECRYPTION_MSG" + }; + + if (naviframe == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); + return; + } + + base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); + confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); + + snprintf(string, sizeof(string), "%s

%s", __(confirm_text[0]), __(confirm_text[1])); + confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); + + elm_object_part_content_set(base_layout, "content_layout", confirm_layout); + /* set button */ + set_confirm_two_btn(base_layout, ad->edj_path, (ad->view_type + 1), _internal_decrypt_confirm_next_btn_clicked_cb, ad); + elm_naviframe_item_push(naviframe, __("IDS_ST_HEADER_DECRYPT_DEVICE"), NULL, NULL, base_layout, NULL); +} diff --git a/tools/apps/ode/src/internal-decrypt/main.c b/tools/apps/ode/src/internal-decrypt/main.c new file mode 100755 index 0000000..fab9ddb --- /dev/null +++ b/tools/apps/ode/src/internal-decrypt/main.c @@ -0,0 +1,134 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +void _internal_decrypt_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_internal_decrypt_next_btn_clicked_cb start"); + + appdata_s *ad = (appdata_s *) data; + ode_confirm_decrypt_device_create_view(ad); +} + +static void update_internal_decrypt_next_button_status(appdata_s *ad) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "update_internal_decrypt_next_button_status start"); + if (ad->device_info.next_button == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "[Encrypt Device] next button is null"); + return; + } + + if (ad->device_info.battery_status && ad->device_info.charger_status) { + elm_object_disabled_set(ad->device_info.next_button, EINA_FALSE); + } else { + elm_object_disabled_set(ad->device_info.next_button, EINA_TRUE); + } +} + +static void dec_battery_charger_changed_cb(runtime_info_key_e key, void *data) +{ + appdata_s *ad = (appdata_s *) data; + if (key == RUNTIME_INFO_KEY_CHARGER_CONNECTED) + battery_icon_status_update(ad); + update_internal_decrypt_next_button_status(ad); +} + +static void dec_battery_changed_cb(device_callback_e type, void *value, void *user_data) +{ + appdata_s *ad = (appdata_s *) user_data; + if (type == DEVICE_CALLBACK_BATTERY_CAPACITY) + battery_icon_status_update(ad); + update_internal_decrypt_next_button_status(ad); +} + +void ode_check_decrypt_device_create_view(appdata_s *ad) +{ + Evas_Object *navi_bar = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *check_msg = NULL; + Evas_Object *encryption_check_layout = NULL; + Evas_Object *genlist = NULL; + Elm_Genlist_Item_Class *itc; + + dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_check_decrypt_device_create_view"); + char string[PATH_MAX] = ""; + char *check_text[] = { + "IDS_ST_BODY_DECRYPTING_YOUR_DEVICE_WILL_DECRYPT_THE_APPS_DATA_AND_OTHER_CONTENT_ON_YOUR_DEVICE", + "IDS_ST_BODY_THIS_MAY_TAKE_A_LONG_TIME_DEPENDING_ON_THE_AMOUNT_OF_DATA_INTERRUPTING_THIS_PROCESS_MAY_CAUSE_MSG", + "IDS_ST_HEADER_TO_DECRYPT_YOUR_DEVICE_C_ABB" + }; + + char *status_text[] = { + "IDS_ST_BODY_CHARGE_THE_BATTERY_TO_AT_LEAST_PDP", + "IDS_ST_BODY_CONNECT_THE_DEVICE_TO_A_CHARGER", + "IDS_ST_BODY_SET_THE_SCREEN_LOCK_TYPE_TO_PASSWORD" + }; + + int ret; + + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); + ui_app_exit(); + } + + base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); + encryption_check_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_check_layout"); + ad->encryption_layout = encryption_check_layout; + + snprintf(string, sizeof(string), "%s

%s", __(check_text[0]), __(check_text[1])); + + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "msg_content", check_msg); + + /* add group index */ + genlist = elm_genlist_add(encryption_check_layout); + elm_object_style_set(genlist, "solid/default"); + elm_layout_content_set(encryption_check_layout, "genlist_base", genlist); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); + ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, check_text[2]); + + set_next_btn(base_layout, ad->edj_path, __("IDS_ST_BUTTON_NEXT"), _internal_decrypt_next_btn_clicked_cb, ad); + + /* get battery info */ + ret = battery_icon_status_update(ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "battery_status_update failed"); + ui_app_exit(); + } + + ret = battery_cb_register(dec_battery_charger_changed_cb, dec_battery_changed_cb, ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "battery_cb_register failed"); + ui_app_exit(); + } + + snprintf(string, sizeof(string), __(status_text[0]), NEEDED_BATTERY_PERCENT); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "battery_text", check_msg); + + snprintf(string, sizeof(string), "%s", __(status_text[1])); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "charge_text", check_msg); + + elm_object_part_content_set(base_layout, "content_layout", encryption_check_layout); + + sw_back_btn_set(navi_bar, __("IDS_ST_HEADER_DECRYPT_DEVICE"), base_layout); +} diff --git a/tools/apps/ode/src/internal-encrypt/check.c b/tools/apps/ode/src/internal-encrypt/check.c new file mode 100755 index 0000000..0315f9f --- /dev/null +++ b/tools/apps/ode/src/internal-encrypt/check.c @@ -0,0 +1,210 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +static void _internal_encrypt_check_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_check_next_btn_clicked_cb start"); + + appdata_s *ad = (appdata_s *) data; + ode_confirm_encrypt_device_create_view(ad); +} + +static void update_internal_encrypt_next_button_status(appdata_s *ad) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "update_next_button_status start"); + if (ad->device_info.next_button == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "[Encrypt Device] next button is null"); + return; + } + + if (ad->device_info.battery_status && ad->device_info.charger_status && ad->device_info.locktype_status) { + elm_object_disabled_set(ad->device_info.next_button, EINA_FALSE); + } else { + elm_object_disabled_set(ad->device_info.next_button, EINA_TRUE); + } +} + +static void enc_battery_charger_changed_cb(runtime_info_key_e key, void *data) +{ + appdata_s *ad = (appdata_s *) data; + if (key == RUNTIME_INFO_KEY_CHARGER_CONNECTED) { + battery_icon_status_update(ad); + update_internal_encrypt_next_button_status(ad); + } +} + +void enc_battery_changed_cb(device_callback_e type, void *value, void *user_data) +{ + appdata_s *ad = (appdata_s *) user_data; + if (type == DEVICE_CALLBACK_BATTERY_CAPACITY) { + battery_icon_status_update(ad); + update_internal_encrypt_next_button_status(ad); + } +} + +void* locktype_sync_callback(void* user_data) +{ + appdata_s *ad = (appdata_s *) user_data; + locktype_icon_status_update(ad); + update_internal_encrypt_next_button_status(ad); + return NULL; +} + +void locktype_status_changed_cb(keynode_t *node, void *data) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "locktype_status_changed_cb start "); + appdata_s *ad = (appdata_s *) data; + ecore_main_loop_thread_safe_call_sync(locktype_sync_callback, ad); +} + +static void _new_locktype_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* launch lock type menu */ + dlog_print(DLOG_DEBUG, LOG_TAG, "locktype button clicked"); + new_launch_locktype_ug(); +} + +static void set_locktype_btn_layout(Evas_Object *layout, appdata_s *ad, const char *btn_text) +{ + Evas_Object *btn_layout; + Evas_Object *locktype_btn; + + btn_layout = ode_create_layout(layout, ad->edj_path, "locktype_button_layout"); + + locktype_btn = ode_create_button(btn_layout, btn_text, "default"); + elm_object_part_content_set(btn_layout, "locktype_button", locktype_btn); + evas_object_smart_callback_add(locktype_btn, "clicked", _new_locktype_btn_clicked_cb, ad); + + elm_object_part_content_set(layout, "button_base", btn_layout); + return; +} + +static Eina_Bool internal_encrypt_check_view_pop_cb(void *data, Elm_Object_Item *it) +{ + int ret; + + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, locktype_status_changed_cb); + if (ret != 0) + dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister lockscreen type callback"); + /* unregister runtime info callback */ + ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_CHARGER_CONNECTED); + if (ret != 0) + dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister runtime info callback"); + /* unregister battery percent callback */ + ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, enc_battery_changed_cb); + if (ret != 0) + dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister battery capacity callback"); + + return EINA_TRUE; +} + +void ode_check_encrypt_device_create_view(appdata_s *ad) +{ + Evas_Object *navi_bar = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *check_msg = NULL; + Evas_Object *encryption_check_layout = NULL; + Evas_Object *genlist = NULL; + Elm_Object_Item *item; + Elm_Genlist_Item_Class *itc; + + dlog_print(DLOG_DEBUG, LOG_TAG, "new start ode_check_encrypt_device_create_view"); + char string[PATH_MAX] = ""; + char *check_text[] = { + "IDS_ST_BODY_THE_ENCRYPTION_PROCESS_MAY_TAKE_A_LONG_TIME_DEPENDING_ON_THE_AMOUNT_OF_DATA_MSG", + "IDS_ST_BODY_TO_ENCRYPT_YOUR_DEVICE_C_ABB" + }; + + char *status_text[] = { + "IDS_ST_BODY_CHARGE_THE_BATTERY_TO_AT_LEAST_PDP", + "IDS_ST_BODY_CONNECT_THE_DEVICE_TO_A_CHARGER", + "IDS_ST_BODY_SET_THE_SCREEN_LOCK_TYPE_TO_PASSWORD" + }; + + int ret; + + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); + return; + } + + base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); + encryption_check_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_check_layout"); + ad->encryption_layout = encryption_check_layout; + + snprintf(string, sizeof(string), "%s", __(check_text[0])); + + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "msg_content", check_msg); + + /* add group index */ + genlist = elm_genlist_add(encryption_check_layout); + elm_object_style_set(genlist, "solid/default"); + elm_layout_content_set(encryption_check_layout, "genlist_base", genlist); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); + ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, check_text[1]); + + set_two_btn(base_layout, ad, _internal_encrypt_check_next_btn_clicked_cb, ad); + /* get battery info */ + ret = battery_icon_status_update(ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "battery_status_update failed"); + return; + } + + ret = battery_cb_register(enc_battery_charger_changed_cb, enc_battery_changed_cb, ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "battery_cb_register failed"); + return; + } + + /* get locktype */ + ret = locktype_icon_status_update(ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "locktype_status_update failed"); + return; + } + ret = locktype_cb_register(locktype_status_changed_cb, ad); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "locktype_cb_register failed"); + return; + } + + snprintf(string, sizeof(string), "%s", __(status_text[2])); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "locktype_text", check_msg); + set_locktype_btn_layout(encryption_check_layout, ad, __("IDS_ST_BUTTON_SCREEN_LOCK_TYPE_ABB")); + + snprintf(string, sizeof(string), __(status_text[0]), NEEDED_BATTERY_PERCENT); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "battery_text", check_msg); + + snprintf(string, sizeof(string), "%s", __(status_text[1])); + check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encryption_check_layout, "charge_text", check_msg); + + elm_object_part_content_set(base_layout, "content_layout", encryption_check_layout); + + /* set bottom button */ + item = elm_naviframe_item_push(navi_bar, __("IDS_ST_HEADER_ENCRYPT_DEVICE"), NULL, NULL, base_layout, NULL); + elm_naviframe_item_pop_cb_set(item, internal_encrypt_check_view_pop_cb, ad); +} diff --git a/tools/apps/ode/src/internal-encrypt/confirm.c b/tools/apps/ode/src/internal-encrypt/confirm.c new file mode 100755 index 0000000..f2c8ec7 --- /dev/null +++ b/tools/apps/ode/src/internal-encrypt/confirm.c @@ -0,0 +1,139 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" +#include +#include + +popup_data_s enc_popup_data; /* for temporary */ +static int device_full_encryption_state = 0; + + +static void _internal_encrypt_confirm_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = (appdata_s *) data; + dlog_print(DLOG_DEBUG, LOG_TAG, "_confirm_btn_clicked_cb start"); + dlog_print(DLOG_DEBUG, LOG_TAG, "encrypt device confirm"); + if (device_full_encryption_state == 0) + ad->device_info.device_option = 0; + else + ad->device_info.device_option = 1; + enc_popup_data.parent = ad->base; + enc_popup_data.popup = NULL; + enc_popup_data.mode = INTERNAL_ENCRYPT_PASSWORD; + enc_popup_data.callback_data = ad; + create_confirm_password_popup(&enc_popup_data); +} + +static char *confirm_multiline_text_get(void *data, Evas_Object *obj, const char *part) +{ + char *genlist_text[] = { + "IDS_ST_MBODY_FULL_ENCRYPTION", + "IDS_ST_SBODY_ENCRYPT_NOT_ONLY_THE_USED_PHONE_STORAGE_BUT_ALSO_ANY_EMPTY_SPACE_THIS_WILL_TAKE_MORE_TIME" + }; + + if (!strcmp(part, "elm.text")) + return strdup(__(genlist_text[0])); + else if (!strcmp(part, "elm.text.multiline")) + return strdup(__(genlist_text[1])); + + return NULL; +} + +void device_encrypt_option_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_INFO, LOG_TAG, "The value has changed \n"); + if (elm_check_state_get(obj) == EINA_TRUE) + device_full_encryption_state = 1; + else + device_full_encryption_state = 0; +} + +static Evas_Object *device_encrypt_content_get(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.swallow.end")) { + Evas_Object *check = elm_check_add(obj); + elm_object_style_set(check, "default"); + elm_check_state_set(check, EINA_FALSE); + evas_object_smart_callback_add(check, "changed", device_encrypt_option_changed_cb, data); + return check; + } + + return NULL; +} + +static Eina_Bool internal_device_encrypt_view_pop_cb(void *data, Elm_Object_Item *it) +{ + appdata_s *ad = (appdata_s *)data; + + if (ad->view_type == ENCRYPT_DEVICE) + device_full_encryption_state = 0; + return EINA_TRUE; +} + +void ode_confirm_encrypt_device_create_view(appdata_s *ad) +{ + Evas_Object *naviframe = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *confirm_msg = NULL; + Evas_Object *confirm_layout = NULL; + + Evas_Object *genlist = NULL; + Elm_Genlist_Item_Class *itc; + Elm_Object_Item *item; + + dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_device_create_view"); + + char string[PATH_MAX] = ""; + char *confirm_text[] = { + "IDS_ST_BODY_TAP_ENCRYPT_TO_START_THE_ENCRYPTION_PROCESS", + "IDS_ST_BODY_THE_ENCRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_MSG", + "IDS_ST_HEADER_ENCRYPTION_OPTIONS_ABB" + }; + + if (naviframe == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); + return; + } + + base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); + confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); + snprintf(string, sizeof(string), "%s

%s", __(confirm_text[0]), __(confirm_text[1])); + confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); + + + /* add group index */ + genlist = elm_genlist_add(confirm_layout); + elm_object_style_set(genlist, "solid/default"); + elm_layout_content_set(confirm_layout, "genlist_base", genlist); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); + ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, confirm_text[2]); + + itc = ode_create_genlist_item_class("multiline", confirm_multiline_text_get, device_encrypt_content_get); + ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, NULL); + + elm_object_part_content_set(base_layout, "content_layout", confirm_layout); + /* set button */ + set_confirm_two_btn(base_layout, ad->edj_path, (ad->view_type + 1), _internal_encrypt_confirm_next_btn_clicked_cb, ad); + item = elm_naviframe_item_push(naviframe, __("IDS_ST_HEADER_ENCRYPT_DEVICE"), NULL, NULL, base_layout, NULL); + elm_naviframe_item_pop_cb_set(item, internal_device_encrypt_view_pop_cb, ad); +} diff --git a/tools/apps/ode/src/internal-encrypt/main.c b/tools/apps/ode/src/internal-encrypt/main.c new file mode 100755 index 0000000..025b9d3 --- /dev/null +++ b/tools/apps/ode/src/internal-encrypt/main.c @@ -0,0 +1,61 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +void _internal_encrypt_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_internal_encrypt_next_btn_clicked_cb start"); + + appdata_s *ad = (appdata_s *) data; + ode_check_encrypt_device_create_view(ad); +} + +void ode_encrypt_device_create_view(appdata_s *ad) +{ + Evas_Object *navi_bar = ad->navi_bar; + Evas_Object *base_layout = NULL; + Evas_Object *encrypt_msg = NULL; + Evas_Object *encrypt_device_layout = NULL; + + char string[PATH_MAX] = ""; + + char *encrypt_text[] = { + "IDS_ST_BODY_ENCRYPTING_YOUR_PHONE_WILL_SECURE_THE_APPS_DATA_AND_OTHER_CONTENT_ON_IT_N_NTO_DECRYPT_YOUR_PHONE_ONCE_MSG", + }; + + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); + ui_app_exit(); + } + + base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); + encrypt_device_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_first_layout"); + ad->encryption_layout = encrypt_device_layout; + + snprintf(string, sizeof(string), "%s", __(encrypt_text[0])); + encrypt_msg = ode_create_textblock(encrypt_device_layout, string, MSG_TEXT_STYLE); + elm_object_part_content_set(encrypt_device_layout, "msg_content", encrypt_msg); + + set_next_btn(base_layout, ad->edj_path, __("IDS_ST_BUTTON_NEXT"), _internal_encrypt_next_btn_clicked_cb, ad); + + elm_object_part_content_set(base_layout, "content_layout", encrypt_device_layout); + + snprintf(string, sizeof(string), "%s", __("IDS_ST_HEADER_ENCRYPT_DEVICE")); + sw_back_btn_set(navi_bar, string, base_layout); +} diff --git a/tools/apps/ode/src/locktype.c b/tools/apps/ode/src/locktype.c new file mode 100755 index 0000000..39c0ea2 --- /dev/null +++ b/tools/apps/ode/src/locktype.c @@ -0,0 +1,125 @@ +/* + * Tizen ODE application + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +int locktype_icon_status_update(appdata_s *ad) +{ + int lock_type; + dlog_print(DLOG_DEBUG, LOG_TAG, "locktype_icon_status_update start "); + if (ad->encryption_layout == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); + return -1; + } + + vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type); + if (lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD || lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) { + /* available */ + dlog_print(DLOG_DEBUG, LOG_TAG, "set icon check "); + set_icon(ad, ICON_CHECK, "locktype_icon"); + ad->device_info.locktype_status = 1; + } else { + /* unavailable */ + dlog_print(DLOG_DEBUG, LOG_TAG, "set icon bar "); + set_icon(ad, ICON_BAR, "locktype_icon"); + ad->device_info.locktype_status = 0; + } + + return 0; +} + +int locktype_cb_register(vconf_callback_fn callback, void* user_data) +{ + int ret; + + /* register vconf notify for locktype */ + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, callback, user_data); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "runtime_info_set_changed_cb failed: %d", ret); + return -1; + } + + return 0; +} + +void _new_launch_password_ug_cb(app_control_h ug, app_control_h reply, app_control_result_e result, void *data) +{ + if (!result) { + char *string_result = NULL; + char *current = NULL; + app_control_get_extra_data(reply, "result", &string_result); + if (string_result == NULL) + return; + + int ret_int = 0; + if (strcmp(string_result, "Cancel") == 0) + ret_int = 0; + else if (strcmp(string_result, "SETTING_PW_TYPE_ENTER_LOCK_TYPE") == 0 || strcmp(string_result, "SETTING_PW_TYPE_VERIFY_FP_ALT_PASSWORD") == 0) + ret_int = 1; + + free(string_result); + + if (ret_int == 1) { + app_control_h app_ctl; + if (app_control_create(&app_ctl)) { + dlog_print(DLOG_ERROR, LOG_TAG, "app_control_create failed"); + return; + } + app_control_get_extra_data(reply, "current", ¤t); + if (current) { + app_control_add_extra_data(app_ctl, "current", current); + free(current); + } + app_control_set_app_id(app_ctl, APP_SETTING_LOCKTYPE); + app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP); + app_control_send_launch_request(app_ctl, NULL, NULL); + app_control_destroy(app_ctl); + } + } +} + +void new_launch_locktype_ug(void) +{ + app_control_h app_ctl = NULL; + int ret; + int lock_type = 0; + + ret = app_control_create(&app_ctl); + if (ret != APP_CONTROL_ERROR_NONE) { + dlog_print(DLOG_DEBUG, LOG_TAG, "app_control_create failed"); + return; + } + + vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type); + + if (lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD || lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) { + app_control_add_extra_data(app_ctl, "viewtype", "SETTING_PW_TYPE_ENTER_LOCK_TYPE"); + app_control_set_app_id(app_ctl, APP_SETTING_PASSWORD); + app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP); + app_control_send_launch_request(app_ctl, _new_launch_password_ug_cb, NULL); + app_control_destroy(app_ctl); + + } else { + app_control_set_app_id(app_ctl, APP_SETTING_LOCKTYPE); + app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP); + app_control_send_launch_request(app_ctl, NULL, NULL); + app_control_destroy(app_ctl); + } +} diff --git a/tools/apps/ode/src/ode-app-common.c b/tools/apps/ode/src/ode-app-common.c new file mode 100755 index 0000000..8e8f9a3 --- /dev/null +++ b/tools/apps/ode/src/ode-app-common.c @@ -0,0 +1,172 @@ +/* + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" +#include "ode-password.h" + +char *confirm_button_text[] = { + "IDS_ST_BUTTON_BACK", + "IDS_ST_BUTTON_ENCRYPT_ABB2", + "IDS_ST_BUTTON_DECRYPT_DEVICE" +}; + +void set_icon(appdata_s *ad, int type, char *part) +{ + Evas_Object *icon_check = NULL, *icon_bar = NULL; + int ret; + if (ad->encryption_layout == NULL || ad->icon_check_path == NULL || ad->icon_bar_path == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "invalid parameter"); + return; + } + if (type == ICON_CHECK) { + icon_check = elm_image_add(ad->encryption_layout); + if (icon_check == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "elm_image_add failed"); + return; + } + if (elm_image_file_set(icon_check, ad->icon_check_path, NULL) == EINA_FALSE) { + dlog_print(DLOG_ERROR, LOG_TAG, "elm_image_file_set failed"); + return; + } + evas_object_color_set(icon_check, 153, 153, 153, 255); + evas_object_size_hint_align_set(icon_check, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(icon_check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + ret = elm_layout_content_set(ad->encryption_layout, part, icon_check); + if (!ret) { + dlog_print(DLOG_ERROR, LOG_TAG, "elm_layout_content_set failed"); + return; + } + evas_object_show(icon_check); + } else if (type == ICON_BAR) { + icon_bar = elm_image_add(ad->encryption_layout); + if (icon_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "elm_image_add failed"); + return; + } + elm_image_file_set(icon_bar, ad->icon_bar_path, NULL); + evas_object_color_set(icon_bar, 0, 0, 0, 255); + evas_object_size_hint_align_set(icon_bar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(icon_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + ret = elm_layout_content_set(ad->encryption_layout, part, icon_bar); + if (!ret) { + dlog_print(DLOG_ERROR, LOG_TAG, "elm_layout_content_set failed"); + return; + } + evas_object_show(icon_bar); + } +} + +void _prev_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + elm_naviframe_item_pop(ad->navi_bar); +} + +void set_next_btn(Evas_Object *layout, const char* edj_path, const char *btn_text, Evas_Smart_Cb callback, const void* data) +{ + Evas_Object *btn_layout; + Evas_Object *next_btn; + dlog_print(DLOG_DEBUG, LOG_TAG, "set_next_btn start"); + btn_layout = ode_create_layout(layout, edj_path, "next_button_layout"); + + next_btn = ode_create_button(btn_layout, btn_text, "bottom"); + elm_object_part_content_set(btn_layout, "next_button", next_btn); + + evas_object_smart_callback_add(next_btn, "clicked", callback, data); + elm_object_part_content_set(layout, "bottom_layout", btn_layout); + return; +} + +void set_two_btn(Evas_Object *layout, appdata_s *ad, Evas_Smart_Cb callback, const void* data) +{ + Evas_Object *btn_layout; + Evas_Object *prev_btn, *next_btn; + + btn_layout = ode_create_layout(layout, ad->edj_path, "two_button_layout"); + + prev_btn = ode_create_button(layout, __("IDS_ST_BUTTON_BACK"), "bottom"); + elm_object_part_content_set(btn_layout, "prev_button", prev_btn); + evas_object_smart_callback_add(prev_btn, "clicked", _prev_btn_clicked_cb, data); + + next_btn = ode_create_button(layout, __("IDS_ST_BUTTON_NEXT"), "bottom"); + ad->device_info.next_button = next_btn; + elm_object_part_content_set(btn_layout, "next_button", next_btn); + + evas_object_smart_callback_add(next_btn, "clicked", callback, data); + + elm_object_part_content_set(layout, "bottom_layout", btn_layout); + return; +} + +void _back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + ui_app_exit(); +} + +static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it) +{ + ui_app_exit(); + return EINA_FALSE; +} + +void sw_back_btn_set(Evas_Object *obj, const char *title_label, Evas_Object *content) +{ + Evas_Object *back_btn = NULL; + + back_btn = elm_button_add(obj); + elm_object_style_set(back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(back_btn, "clicked", _back_btn_clicked_cb, obj); + + Elm_Object_Item *nf_it = elm_naviframe_item_push(obj, title_label, back_btn, NULL, content, NULL); + elm_naviframe_item_pop_cb_set(nf_it, _pop_cb, NULL); +} + +void set_change_pw_btn(Evas_Object *layout, const char *edj_path, const char *btn_text, Evas_Smart_Cb callback, const void* data) +{ + Evas_Object *btn_layout; + + btn_layout = ode_create_layout(layout, edj_path, "one_button_layout"); + + btn_layout = ode_create_button(btn_layout, btn_text, "default"); + elm_object_part_content_set(btn_layout, "button_base", btn_layout); + evas_object_smart_callback_add(btn_layout, "clicked", callback, data); + + elm_object_part_content_set(layout, "change_pw_btn_base", btn_layout); + return; +} + +void set_confirm_two_btn(Evas_Object *layout, const char *edj_path, int text_idx, Evas_Smart_Cb callback, const void* data) +{ + Evas_Object *btn_layout; + Evas_Object *prev_btn, *next_btn; + + btn_layout = ode_create_layout(layout, edj_path, "two_button_layout"); + + prev_btn = ode_create_button(layout, __(confirm_button_text[0]), "bottom"); + elm_object_part_content_set(btn_layout, "prev_button", prev_btn); + evas_object_smart_callback_add(prev_btn, "clicked", _prev_btn_clicked_cb, data); + + next_btn = ode_create_button(layout, __(confirm_button_text[text_idx]), "bottom"); + elm_object_part_content_set(btn_layout, "next_button", next_btn); + + evas_object_smart_callback_add(next_btn, "clicked", callback, data); + elm_object_part_content_set(layout, "bottom_layout", btn_layout); + return; +} diff --git a/tools/apps/ode/src/ode-app-confirm.c b/tools/apps/ode/src/ode-app-confirm.c deleted file mode 100755 index d921a30..0000000 --- a/tools/apps/ode/src/ode-app-confirm.c +++ /dev/null @@ -1,368 +0,0 @@ -/* - * - * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include "ode-app.h" -#include "ode-password.h" -#include -#include - -char *confirm_button_text[] = { - "IDS_ST_BUTTON_BACK", - "IDS_ST_BUTTON_ENCRYPT_ABB2", - "IDS_ST_BUTTON_DECRYPT_DEVICE" -}; -extern char *encrypt_header_text[]; -static int sdcard_option_selected = 0; -static int device_full_encryption_state = 0; -popup_data_s popup_data; /* for temporary */ - -#define sdcard_option_num 2 - -static void _confirm_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - int ret = 0; - appdata_s *ad = (appdata_s *) data; - dlog_print(DLOG_DEBUG, LOG_TAG, "_confirm_btn_clicked_cb start"); - - switch (ad->view_type) { - case ENCRYPT_DEVICE: - dlog_print(DLOG_DEBUG, LOG_TAG, "encrypt device confirm"); - if (device_full_encryption_state == 0) - ad->device_info.device_option = 0; - else - ad->device_info.device_option = 1; - popup_data.parent = ad->base; - popup_data.popup = NULL; - popup_data.mode = INTERNAL_ENCRYPT_PASSWORD; - popup_data.callback_data = ad; - create_confirm_password_popup(&popup_data); - break; - case DECRYPT_DEVICE: - dlog_print(DLOG_DEBUG, LOG_TAG, "decrypt device confirm"); - popup_data.parent = ad->base; - popup_data.popup = NULL; - popup_data.mode = INTERNAL_DECRYPT_PASSWORD; - create_confirm_password_popup(&popup_data); - break; - case ENCRYPT_SD_CARD: - dlog_print(DLOG_DEBUG, LOG_TAG, "encrypt sd card confrim"); - ret = ode_external_encryption_encrypt(ad->entry_data, 0); - if (ret != 0) { - dlog_print(DLOG_DEBUG, LOG_TAG, "external encryption failed"); - } - create_base_window(); - create_progress_view("Encrypting", "External"); - break; - case DECRYPT_SD_CARD: - dlog_print(DLOG_DEBUG, LOG_TAG, "decrypt sd card confrim"); - popup_data.parent = ad->base; - popup_data.popup = NULL; - popup_data.mode = EXTERNAL_DECRYPT_PASSWORD; - create_confirm_password_popup(&popup_data); - break; - } -} - -static char *confirm_multiline_text_get(void *data, Evas_Object *obj, const char *part) -{ - char *genlist_text[] = { - "IDS_ST_MBODY_FULL_ENCRYPTION", - "IDS_ST_SBODY_ENCRYPT_NOT_ONLY_THE_USED_PHONE_STORAGE_BUT_ALSO_ANY_EMPTY_SPACE_THIS_WILL_TAKE_MORE_TIME" - }; - - if (!strcmp(part, "elm.text")) - return strdup(__(genlist_text[0])); - else if (!strcmp(part, "elm.text.multiline")) - return strdup(__(genlist_text[1])); - - return NULL; -} - -void device_encrypt_option_changed_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_INFO, LOG_TAG, "The value has changed \n"); - if (elm_check_state_get(obj) == EINA_TRUE) - device_full_encryption_state = 1; - else - device_full_encryption_state = 0; -} - -static Evas_Object *device_encrypt_content_get(void *data, Evas_Object *obj, const char *part) -{ - if (!strcmp(part, "elm.swallow.end")) { - Evas_Object *check = elm_check_add(obj); - elm_object_style_set(check, "default"); - elm_check_state_set(check, EINA_FALSE); - evas_object_smart_callback_add(check, "changed", device_encrypt_option_changed_cb, data); - return check; - } - - return NULL; -} - -static void _prev_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - appdata_s *ad = (appdata_s *)data; - elm_naviframe_item_pop(ad->navi_bar); -} - -static void set_confirm_two_btn_layout(Evas_Object *layout, appdata_s *ad, int text_idx) -{ - Evas_Object *btn_layout; - Evas_Object *prev_btn, *next_btn; - - btn_layout = ode_create_layout(layout, ad->edj_path, "two_button_layout"); - - prev_btn = ode_create_button(layout, __(confirm_button_text[0]), "bottom"); - elm_object_part_content_set(btn_layout, "prev_button", prev_btn); - evas_object_smart_callback_add(prev_btn, "clicked", _prev_btn_clicked_cb, ad); - - next_btn = ode_create_button(layout, __(confirm_button_text[text_idx]), "bottom"); - elm_object_part_content_set(btn_layout, "next_button", next_btn); - - evas_object_smart_callback_add(next_btn, "clicked", _confirm_next_btn_clicked_cb, ad); - elm_object_part_content_set(layout, "bottom_layout", btn_layout); - return; -} - -static char *sd_confirm_multiline_text_get(void *data, Evas_Object *obj, const char *part) -{ - char *genlist_text[2][2] = { - { - "IDS_ST_MBODY_ENCRYPT_ALL_FILES", - "IDS_ST_SBODY_ENCRYPT_ALL_FILES_SAVED_ON_THE_SD_CARD_NEW_FILES_WILL_ALSO_BE_ENCRYPTED" - }, - { - "IDS_ST_MBODY_ENCRYPT_NEW_FILES", - "IDS_ST_BODY_ENCRYPT_ALL_NEW_FILES_SAVED_ON_THIS_SD_CARD_EXISTING_FILES_WILL_NOT_BE_ENCRYPTED" - } - }; - - char **text = genlist_text[(intptr_t)data]; - - if (!strcmp(part, "elm.text")) - return strdup(__(text[0])); - else if (!strcmp(part, "elm.text.multiline")) - return strdup(__(text[1])); - return NULL; -} - -void radio_changed_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_INFO, LOG_TAG, "The value has changed %d\n", (intptr_t)data); - sdcard_option_selected = (intptr_t)data; - - dlog_print(DLOG_INFO, LOG_TAG, "sdcard_option_selected is %d\n", sdcard_option_selected); -} - -static Evas_Object *sd_confirm_content_get(void *data, Evas_Object *obj, const char *part) -{ - static Evas_Object *group = NULL; - int idx = (intptr_t)data; - - if (!strcmp(part, "elm.swallow.end")) { - if (idx == 0) { - dlog_print(DLOG_DEBUG, LOG_TAG, "radio group null"); - group = elm_radio_add(obj); - elm_radio_state_value_set(group, 0); - elm_radio_value_set(group, 0); - } - - dlog_print(DLOG_DEBUG, LOG_TAG, "radio group not null"); - Evas_Object *radio = elm_radio_add(obj); - elm_radio_state_value_set(radio, idx); - - if (idx == sdcard_option_selected) { - elm_radio_state_value_set(radio, idx); - } - - elm_radio_group_add(radio, group); - evas_object_propagate_events_set(radio, EINA_FALSE); - evas_object_repeat_events_set(radio, EINA_FALSE); - - evas_object_smart_callback_add(radio, "changed", radio_changed_cb, data); - return radio; - } - return NULL; -} - -static Eina_Bool sdcard_encrypt_view_pop_cb(void *data, Elm_Object_Item *it) -{ - sdcard_option_selected = 0; - return EINA_TRUE; -} - -static Eina_Bool device_encrypt_view_pop_cb(void *data, Elm_Object_Item *it) -{ - appdata_s *ad = (appdata_s *)data; - - if (ad->view_type == ENCRYPT_DEVICE) - device_full_encryption_state = 0; - return EINA_TRUE; -} - - -void ode_confirm_encrypt_device_create_view(appdata_s *ad) -{ - Evas_Object *naviframe = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *confirm_msg = NULL; - Evas_Object *confirm_layout = NULL; - - Evas_Object *genlist = NULL; - Elm_Genlist_Item_Class *itc; - Elm_Object_Item *item; - - dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_device_create_view"); - - char string[PATH_MAX] = ""; - char *confirm_text[2][3] = { - { - "IDS_ST_BODY_TAP_ENCRYPT_TO_START_THE_ENCRYPTION_PROCESS", - "IDS_ST_BODY_THE_ENCRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_MSG", - "IDS_ST_HEADER_ENCRYPTION_OPTIONS_ABB" - }, - { - "IDS_ST_BODY_TAP_DECRYPT_TO_START_THE_DECRYPTION_PROCESS", - "IDS_ST_BODY_THE_DECRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_THE_DECRYPTION_MSG", - "" - } - }; - - char **text = confirm_text[ad->view_type]; - - if (naviframe == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); - return; - } - - base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); - confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); - text = confirm_text[ad->view_type]; - snprintf(string, sizeof(string), "%s

%s", __(text[0]), __(text[1])); - confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); - - if (ad->view_type == ENCRYPT_DEVICE) { - /* add group index */ - genlist = elm_genlist_add(confirm_layout); - elm_object_style_set(genlist, "solid/default"); - elm_layout_content_set(confirm_layout, "genlist_base", genlist); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - - itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); - ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, text[2]); - - itc = ode_create_genlist_item_class("multiline", confirm_multiline_text_get, device_encrypt_content_get); - ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, NULL); - } - - elm_object_part_content_set(base_layout, "content_layout", confirm_layout); - /* set button */ - set_confirm_two_btn_layout(base_layout, ad, (ad->view_type + 1)); - item = elm_naviframe_item_push(naviframe, __(encrypt_header_text[ad->view_type]), NULL, NULL, base_layout, NULL); - elm_naviframe_item_pop_cb_set(item, device_encrypt_view_pop_cb, ad); -} - -void ode_confirm_encrypt_sd_card_create_view(appdata_s *ad) -{ - Evas_Object *naviframe = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *confirm_msg = NULL; - Evas_Object *confirm_layout = NULL; - - Evas_Object *genlist = NULL; - Elm_Genlist_Item_Class *itc; - Elm_Object_Item *item; - - dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_encrypt_sd_card_create_view"); - - char string[PATH_MAX] = ""; - char *confirm_text[] = { - "IDS_ST_BODY_TAP_ENCRYPT_SD_CARD_TO_START_THE_ENCRYPTION_PROCESS", - "IDS_ST_BODY_ALL_OPEN_FILES_ON_SD_CARD_WILL_BE_CLOSED", - "IDS_ST_BODY_THE_ENCRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_DURING_THE_MSG", - "IDS_ST_HEADER_ENCRYPTION_OPTIONS_ABB" - }; - - if (naviframe == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); - return; - } - - base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); - confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); - - snprintf(string, sizeof(string), "%s

%s%s", __(confirm_text[0]), __(confirm_text[1]), __(confirm_text[2])); - confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); - - genlist = elm_genlist_add(confirm_layout); - elm_object_style_set(genlist, "solid/default"); - elm_layout_content_set(confirm_layout, "genlist_base", genlist); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - - itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); - ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, confirm_text[3]); - - int index; - itc = ode_create_genlist_item_class("multiline", sd_confirm_multiline_text_get, sd_confirm_content_get); - - for (index = 0; index < sdcard_option_num; index++) { - item = elm_genlist_item_append(genlist, itc, (void*)(intptr_t)index, NULL, ELM_GENLIST_ITEM_NONE , NULL, NULL); - elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); - } - - elm_object_part_content_set(base_layout, "content_layout", confirm_layout); - set_confirm_two_btn_layout(base_layout, ad, 1); - item = elm_naviframe_item_push(naviframe, __(encrypt_header_text[2]), NULL, NULL, base_layout, NULL); - elm_naviframe_item_pop_cb_set(item, sdcard_encrypt_view_pop_cb, NULL); -} - -void ode_confirm_decrypt_sd_card_create_view(appdata_s *ad) -{ - Evas_Object *naviframe = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *confirm_msg = NULL; - Evas_Object *confirm_layout = NULL; - - dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_confirm_decrypt_sd_card_create_view"); - - char string[PATH_MAX] = ""; - char *confirm_text[] = { - "IDS_ST_BODY_TAP_ENCRYPT_SD_CARD_TO_START_THE_ENCRYPTION_PROCESS", - "IDS_ST_BODY_ALL_OPEN_FILES_ON_SD_CARD_WILL_BE_CLOSED", - "IDS_ST_BODY_THE_DECRYPTION_CANT_BE_CANCELLED_AND_DATA_WILL_BE_LOST_IF_THE_PROCESS_IS_INTERRUPTED_MSG" - }; - - if (naviframe == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "naviframe is null"); - return; - } - - base_layout = ode_create_layout(naviframe, ad->edj_path, "base_layout"); - confirm_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_confirm_layout"); - - snprintf(string, sizeof(string), "%s

%s%s", __(confirm_text[0]), __(confirm_text[1]), __(confirm_text[2])); - confirm_msg = ode_create_textblock(confirm_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(confirm_layout, "msg_content", confirm_msg); - - elm_object_part_content_set(base_layout, "content_layout", confirm_layout); - set_confirm_two_btn_layout(base_layout, ad, 2); - elm_naviframe_item_push(naviframe, __(encrypt_header_text[3]), NULL, NULL, base_layout, NULL); -} diff --git a/tools/apps/ode/src/ode-app-main.c b/tools/apps/ode/src/ode-app-main.c deleted file mode 100755 index 3a42536..0000000 --- a/tools/apps/ode/src/ode-app-main.c +++ /dev/null @@ -1,929 +0,0 @@ -/* - * - * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include "ode-app.h" -#include "ode-password.h" - -#define APP_SETTING_LOCKTYPE "org.tizen.setting-locktype" -#define APP_SETTING_PASSWORD "org.tizen.setting-password" -#define APP_ODE_PASSWORD "org.tizen.ode-password" - -char *encrypt_header_text[] = { - "IDS_ST_HEADER_ENCRYPT_DEVICE", - "IDS_ST_HEADER_DECRYPT_DEVICE", - "IDS_ST_HEADER_ENCRYPT_SD_CARD", - "IDS_ST_HEADER_DECRYPT_SD_CARD" -}; -char *button_text[] = { - "IDS_ST_BUTTON_NEXT", - "IDS_ST_BUTTON_BACK", - "IDS_ST_BUTTON_SCREEN_LOCK_TYPE_ABB", - "IDS_ST_BUTTON_CHANGE_PASSWORD_ABB2", -}; - -static void update_sdcard_pw_btn_status(void *data); - -static void set_icon(appdata_s *ad, int type, char *part) -{ - Evas_Object *icon_check, *icon_bar = NULL; - int ret; - if (ad->dpm_encryption_layout == NULL || ad->icon_check_path == NULL || ad->icon_bar_path == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "invalid parameter"); - return; - } - if (type == ICON_CHECK) { - icon_check = elm_image_add(ad->dpm_encryption_layout); - if (icon_check == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "elm_image_add failed"); - return; - } - elm_image_file_set(icon_check, ad->icon_check_path, NULL); - evas_object_color_set(icon_check, 153, 153, 153, 255); - evas_object_size_hint_align_set(icon_check, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(icon_check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - ret = elm_layout_content_set(ad->dpm_encryption_layout, part, icon_check); - if (!ret) { - dlog_print(DLOG_ERROR, LOG_TAG, "elm_layout_content_set failed"); - return; - } - evas_object_show(icon_check); - } else if (type == ICON_BAR) { - icon_bar = elm_image_add(ad->dpm_encryption_layout); - if (icon_bar == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "elm_image_add failed"); - return; - } - elm_image_file_set(icon_bar, ad->icon_bar_path, NULL); - evas_object_color_set(icon_bar, 0, 0, 0, 255); - evas_object_size_hint_align_set(icon_bar, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(icon_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - ret = elm_layout_content_set(ad->dpm_encryption_layout, part, icon_bar); - if (!ret) { - dlog_print(DLOG_ERROR, LOG_TAG, "elm_layout_content_set failed"); - return; - } - evas_object_show(icon_bar); - } -} - -static void update_next_button_status(appdata_s *ad) -{ - dlog_print(DLOG_DEBUG, LOG_TAG, "update_next_button_status start"); - if (ad->device_info.next_button == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "[Encrypt Device] next button is null"); - return; - } - - if (ad->view_type == ENCRYPT_DEVICE) { - if (ad->device_info.battery_status && ad->device_info.charger_status && ad->device_info.locktype_status) { - elm_object_disabled_set(ad->device_info.next_button, EINA_FALSE); - } else { - elm_object_disabled_set(ad->device_info.next_button, EINA_TRUE); - } - } else if (ad->view_type == DECRYPT_DEVICE) { - if (ad->device_info.battery_status && ad->device_info.charger_status) { - elm_object_disabled_set(ad->device_info.next_button, EINA_FALSE); - } else { - elm_object_disabled_set(ad->device_info.next_button, EINA_TRUE); - } - } else if (ad->view_type == ENCRYPT_SD_CARD) { - if (ad->device_info.sdcard_status && ad->device_info.sdcard_pw_status == 1) { - elm_object_disabled_set(ad->device_info.next_button, EINA_FALSE); - } else { - elm_object_disabled_set(ad->device_info.next_button, EINA_TRUE); - } - } -} - -static void _next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_DEBUG, LOG_TAG, "_next_btn_clicked_cb start"); - - appdata_s *ad = (appdata_s *) data; - - switch (ad->view_type) { - case ENCRYPT_DEVICE: - ode_check_encrypt_device_create_view(ad); - break; - case DECRYPT_DEVICE: - ode_confirm_encrypt_device_create_view(ad); - break; - case ENCRYPT_SD_CARD: - ode_check_encrypt_sd_card_create_view(ad); - break; - case DECRYPT_SD_CARD: - ode_confirm_decrypt_sd_card_create_view(ad); - break; - } -} - -static void _check_next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_DEBUG, LOG_TAG, "_check_next_btn_clicked_cb start"); - - appdata_s *ad = (appdata_s *) data; - - switch (ad->view_type) { - case ENCRYPT_DEVICE: - ode_confirm_encrypt_device_create_view(ad); - break; - case ENCRYPT_SD_CARD: - ode_confirm_encrypt_sd_card_create_view(ad); - break; - } -} - -static void _prev_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - appdata_s *ad = (appdata_s *)data; - elm_naviframe_item_pop(ad->navi_bar); -} - -/* -static void set_next_btn_layout(Evas_Object* layout, appdata_s* ad, const char* btn_text) -{ - Evas_Object* btn_layout; - Evas_Object* next_btn; - - btn_layout = ode_create_layout(layout, ad->edj_path, "next_button_layout"); - - next_btn = ode_create_button(btn_layout, btn_text, "bottom"); - ad->device_info.next_button = next_btn; - elm_object_part_content_set(btn_layout, "next_button", next_btn); - - evas_object_smart_callback_add(next_btn, "clicked", _next_btn_clicked_cb, ad); - - elm_object_part_content_set(layout, "bottom_layout", btn_layout); - return; -}*/ - -static void set_next_btn_layout(Evas_Object *layout, appdata_s *ad, const char *btn_text) -{ - Evas_Object *btn_layout; - Evas_Object *next_btn; - - btn_layout = ode_create_layout(layout, ad->edj_path, "next_button_layout"); - - next_btn = ode_create_button(btn_layout, btn_text, "bottom"); - elm_object_part_content_set(btn_layout, "next_button", next_btn); - - evas_object_smart_callback_add(next_btn, "clicked", _next_btn_clicked_cb, ad); - elm_object_part_content_set(layout, "bottom_layout", btn_layout); - return; -} - - -static void set_two_btn_layout(Evas_Object *layout, appdata_s *ad) -{ - Evas_Object *btn_layout; - Evas_Object *prev_btn, *next_btn; - - btn_layout = ode_create_layout(layout, ad->edj_path, "two_button_layout"); - - prev_btn = ode_create_button(layout, __(button_text[1]), "bottom"); - elm_object_part_content_set(btn_layout, "prev_button", prev_btn); - evas_object_smart_callback_add(prev_btn, "clicked", _prev_btn_clicked_cb, ad); - - next_btn = ode_create_button(layout, __(button_text[0]), "bottom"); - ad->device_info.next_button = next_btn; - elm_object_part_content_set(btn_layout, "next_button", next_btn); - - update_next_button_status(ad); - evas_object_smart_callback_add(next_btn, "clicked", _check_next_btn_clicked_cb, ad); - - elm_object_part_content_set(layout, "bottom_layout", btn_layout); - return; -} - -static void _launch_password_ug_cb(app_control_h ug, app_control_h reply, app_control_result_e result, void *data) -{ - if (!result) { - char *string_result = NULL; - char *current = NULL; - app_control_get_extra_data(reply, "result", &string_result); - if (string_result == NULL) - return; - - int ret_int = 0; - if (strcmp(string_result, "Cancel") == 0) - ret_int = 0; - else if (strcmp(string_result, "SETTING_PW_TYPE_ENTER_LOCK_TYPE") == 0 || strcmp(string_result, "SETTING_PW_TYPE_VERIFY_FP_ALT_PASSWORD") == 0) - ret_int = 1; - - free(string_result); - - if (ret_int == 1) { - app_control_h app_ctl; - if (app_control_create(&app_ctl)) { - dlog_print(DLOG_ERROR, LOG_TAG, "app_control_create failed"); - return; - } - app_control_get_extra_data(reply, "current", ¤t); - if (current) { - app_control_add_extra_data(app_ctl, "current", current); - free(current); - } - app_control_set_app_id(app_ctl, APP_SETTING_LOCKTYPE); - app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP); - app_control_send_launch_request(app_ctl, NULL, NULL); - app_control_destroy(app_ctl); - } - } -} - -static void _locktype_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - /* launch lock type menu */ - dlog_print(DLOG_DEBUG, LOG_TAG, "locktype button clicked"); - appdata_s *ad = (appdata_s *) data; - - app_control_h app_ctl = NULL; - int ret; - int lock_type = 0; - - ret = app_control_create(&app_ctl); - if (ret != APP_CONTROL_ERROR_NONE) { - dlog_print(DLOG_DEBUG, LOG_TAG, "app_control_create failed"); - return; - } - - vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type); - - if (lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD || lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) { - app_control_add_extra_data(app_ctl, "viewtype", "SETTING_PW_TYPE_ENTER_LOCK_TYPE"); - app_control_set_app_id(app_ctl, APP_SETTING_PASSWORD); - app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP); - app_control_send_launch_request(app_ctl, _launch_password_ug_cb, NULL); - app_control_destroy(app_ctl); - - } else { - app_control_set_app_id(app_ctl, APP_SETTING_LOCKTYPE); - app_control_set_launch_mode(app_ctl, APP_CONTROL_LAUNCH_MODE_GROUP); - app_control_send_launch_request(app_ctl, NULL, NULL); - app_control_destroy(app_ctl); - } - - update_next_button_status(ad); -} - -static void _sdcardpw_create_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_ERROR, LOG_TAG, "sdcardpw create btn cb start"); - appdata_s *ad = (appdata_s *)data; - - on_create_password_popup(ad->base); - password_popup_set_result_callback(update_sdcard_pw_btn_status, ad); -} - -static void _sdcardpw_change_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_ERROR, LOG_TAG, "sdcardpw change btn cb start"); - appdata_s *ad = (appdata_s *)data; - - on_change_password_popup(ad->base); - password_popup_set_result_callback(update_sdcard_pw_btn_status, ad); -} - -static void _sdcardpw_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_ERROR, LOG_TAG, "sdcardpw delete btn cb start"); - appdata_s *ad = (appdata_s *)data; - - on_delete_password_popup(ad->base); - password_popup_set_result_callback(update_sdcard_pw_btn_status, ad); -} - -static void update_sdcard_pw_btn_status(void *data) -{ - Evas_Object *one_btn_layout, *two_btn_layout; - Evas_Object *createpw_btn, *changepw_btn, *deletepw_btn; - appdata_s *ad = (appdata_s *)data; - - char *btn_text[] = { - "IDS_ST_BUTTON_CREATE_PASSWORD", - "IDS_ST_BUTTON_CHANGE_PW_ABB", - "IDS_ST_BUTTON_DELETE_PW_ABB", - }; - - if (ad->device_info.sdcard_pw_status == 0) { - /* set create pw button */ - one_btn_layout = ode_create_layout(ad->dpm_encryption_layout, ad->edj_path, "one_button_layout"); - createpw_btn = ode_create_button(one_btn_layout, __(btn_text[0]), "default"); - elm_object_part_content_set(one_btn_layout, "button_base", createpw_btn); - evas_object_smart_callback_add(createpw_btn, "clicked", _sdcardpw_create_btn_clicked_cb, ad); - elm_object_part_content_set(ad->dpm_encryption_layout, "button_base", one_btn_layout); - set_icon(ad, ICON_BAR, "charge_icon"); - } else if (ad->device_info.sdcard_pw_status == 1) { - /* set change pw / delete pw button */ - two_btn_layout = ode_create_layout(ad->dpm_encryption_layout, ad->edj_path, "two_button_layout"); - changepw_btn = ode_create_button(two_btn_layout, __(btn_text[1]), "default"); - deletepw_btn = ode_create_button(two_btn_layout, __(btn_text[2]), "default"); - elm_object_part_content_set(two_btn_layout, "prev_button", changepw_btn); - elm_object_part_content_set(two_btn_layout, "next_button", deletepw_btn); - evas_object_smart_callback_add(changepw_btn, "clicked", _sdcardpw_change_btn_clicked_cb, ad); - evas_object_smart_callback_add(deletepw_btn, "clicked", _sdcardpw_delete_btn_clicked_cb, ad); - elm_object_part_content_set(ad->dpm_encryption_layout, "button_base", two_btn_layout); - set_icon(ad, ICON_CHECK, "charge_icon"); - } - update_next_button_status(ad); - return; -} - -static void set_locktype_btn_layout(Evas_Object *layout, appdata_s *ad, const char *btn_text) -{ - Evas_Object *btn_layout; - Evas_Object *locktype_btn; - - btn_layout = ode_create_layout(layout, ad->edj_path, "locktype_button_layout"); - - locktype_btn = ode_create_button(btn_layout, btn_text, "default"); - elm_object_part_content_set(btn_layout, "locktype_button", locktype_btn); - evas_object_smart_callback_add(locktype_btn, "clicked", _locktype_btn_clicked_cb, ad); - - elm_object_part_content_set(layout, "button_base", btn_layout); - return; -} - -static int battery_status_update(appdata_s *ad) -{ - bool connected; - int battery_pct, ret; - dlog_print(DLOG_DEBUG, LOG_TAG, "battery_status_update start "); - - if (ad->dpm_encryption_layout == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); - return -1; - } - - /* get battery percent info */ - ret = device_battery_get_percent(&battery_pct); - if (ret != DEVICE_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "device_battery_get_percent failed %d", ret); - return -1; - } - - if (battery_pct > NEEDED_BATTERY_PERCENT) { - set_icon(ad, ICON_CHECK, "battery_icon"); - ad->device_info.battery_status = 1; - } else { - set_icon(ad, ICON_BAR, "battery_icon"); - ad->device_info.battery_status = 0; - } - - /* get charger connected info */ - ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_CHARGER_CONNECTED, &connected); - if (ret != RUNTIME_INFO_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "get runtime info fail"); - return -1; - } - if (connected) { - set_icon(ad, ICON_CHECK, "charge_icon"); - ad->device_info.charger_status = 1; - } else { - set_icon(ad, ICON_BAR, "charge_icon"); - ad->device_info.charger_status = 0; - } - - update_next_button_status(ad); - return 0; -} - -static int sdcard_status_update(appdata_s *ad) -{ - int sdcard_status; - - if (ad->dpm_encryption_layout == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); - return -1; - } - - vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sdcard_status); - if (sdcard_status != VCONFKEY_SYSMAN_MMC_MOUNTED) { - set_icon(ad, ICON_BAR, "battery_icon"); - ad->device_info.sdcard_status = 0; - } else { - /* available */ - set_icon(ad, ICON_CHECK, "battery_icon"); - ad->device_info.sdcard_status = 1; - } - - update_next_button_status(ad); - return 0; -} - -static int locktype_status_update(appdata_s *ad) -{ - int lock_type; - - if (ad->dpm_encryption_layout == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); - return -1; - } - - vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type); - if (lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD || lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD) { - /* available */ - set_icon(ad, ICON_CHECK, "locktype_icon"); - ad->device_info.locktype_status = 1; - } else { - /* unavailable */ - set_icon(ad, ICON_BAR, "locktype_icon"); - ad->device_info.locktype_status = 0; - } - update_next_button_status(ad); - return 0; -} - -static void battery_charger_changed_cb(runtime_info_key_e key, void *data) -{ - appdata_s *ad = (appdata_s *) data; - if (key == RUNTIME_INFO_KEY_CHARGER_CONNECTED) - battery_status_update(ad); -} - -void battery_changed_cb(device_callback_e type, void *value, void *user_data) -{ - appdata_s *ad = (appdata_s *) user_data; - if (type == DEVICE_CALLBACK_BATTERY_CAPACITY) - battery_status_update(ad); -} - -void sdcard_status_changed_cb(keynode_t *node, void *data) -{ - appdata_s *ad = (appdata_s *) data; - sdcard_status_update(ad); -} - -void locktype_status_changed_cb(keynode_t *node, void *data) -{ - appdata_s *ad = (appdata_s *) data; - locktype_status_update(ad); -} - -static int battery_cb_register(appdata_s *ad) -{ - int ret; - - /* register runtime callback : connected charger */ - ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_CHARGER_CONNECTED, battery_charger_changed_cb, ad); - if (ret != RUNTIME_INFO_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "runtime_info_set_changed_cb failed: %d", ret); - return -1; - } - - /* register runtime callback : battery percent */ - ret = device_add_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, battery_changed_cb, ad); - if (ret != DEVICE_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "device_add_callback failed: %d", ret); - return -1; - } - - return 0; -} - -static int locktype_cb_register(appdata_s *ad) -{ - int ret; - - /* register vconf notify for locktype */ - ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, locktype_status_changed_cb, ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "runtime_info_set_changed_cb failed: %d", ret); - return -1; - } - - return 0; -} - -void _back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - ui_app_exit(); -} - -static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it) -{ - ui_app_exit(); - return EINA_FALSE; -} - -void sw_back_btn_set(Evas_Object *obj, const char *title_label, Evas_Object *content) -{ - Evas_Object *back_btn = NULL; - - back_btn = elm_button_add(obj); - elm_object_style_set(back_btn, "naviframe/back_btn/default"); - evas_object_smart_callback_add(back_btn, "clicked", _back_btn_clicked_cb, obj); - - Elm_Object_Item *nf_it = elm_naviframe_item_push(obj, title_label, back_btn, NULL, content, NULL); - elm_naviframe_item_pop_cb_set(nf_it, _pop_cb, NULL); -} - -static Eina_Bool check_view_pop_cb(void *data, Elm_Object_Item *it) -{ - int ret; - - appdata_s *ad = (appdata_s *)data; - switch (ad->view_type) { - case ENCRYPT_DEVICE: - ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, locktype_status_changed_cb); - if (ret != 0) - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister lockscreen type callback"); - /* unregister runtime info callback */ - ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_CHARGER_CONNECTED); - if (ret != 0) - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister runtime info callback"); - /* unregister battery percent callback */ - ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, battery_changed_cb); - if (ret != 0) - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister battery capacity callback"); - break; - case DECRYPT_DEVICE: - /* unregister runtime info callback */ - ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_CHARGER_CONNECTED); - if (ret != 0) - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister runtime info callback"); - /* unregister battery percent callback */ - ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, battery_changed_cb); - if (ret != 0) - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister battery capacity callback"); - break; - case ENCRYPT_SD_CARD: - ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, sdcard_status_changed_cb); - if (ret != 0) - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister sdcard callback"); - break; - } - - return EINA_TRUE; -} - -static void _change_pw_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - dlog_print(DLOG_INFO, LOG_TAG, "change password button click"); -} - -static void set_change_pw_layout(Evas_Object *layout, appdata_s *ad, const char *btn_text) -{ - Evas_Object *btn_layout; - - btn_layout = ode_create_layout(layout, ad->edj_path, "one_button_layout"); - - btn_layout = ode_create_button(btn_layout, btn_text, "default"); - elm_object_part_content_set(btn_layout, "button_base", btn_layout); - evas_object_smart_callback_add(btn_layout, "clicked", _change_pw_btn_clicked_cb, ad); - - elm_object_part_content_set(layout, "change_pw_btn_base", btn_layout); - return; -} - -#if 0 -static int sdcard_pw_status_update(appdata_s *ad) -{ - dlog_print(DLOG_INFO, LOG_TAG, "sdcard_pw_status_update start "); - if (ad->dpm_encryption_layout == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); - return -1; - } - - if (ad->device_info.sdcard_pw_status == 0) { - elm_object_signal_emit(ad->sdcard_pw_layout, "hide,btn,changepw", "sdcard_pw_button_layout"); - elm_object_signal_emit(ad->sdcard_pw_layout, "hide,btn,deletepw", "sdcard_pw_button_layout"); - elm_object_signal_emit(ad->sdcard_pw_layout, "show,btn,createpw", "sdcard_pw_button_layout"); - set_icon(ad, ICON_BAR, "charge_icon"); - } else if (ad->device_info.sdcard_pw_status == 1) { - elm_object_signal_emit(ad->sdcard_pw_layout, "hide,btn,createpw", "sdcard_pw_button_layout"); - elm_object_signal_emit(ad->sdcard_pw_layout, "show,btn,deletepw", "sdcard_pw_button_layout"); - elm_object_signal_emit(ad->sdcard_pw_layout, "show,btn,changepw", "sdcard_pw_button_layout"); - set_icon(ad, ICON_CHECK, "charge_icon"); - } - update_next_button_status(ad); - return 0; -} -#endif - -void ode_encrypt_device_create_view(appdata_s *ad) -{ - Evas_Object *navi_bar = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *encrypt_msg = NULL; - Evas_Object *encrypt_device_layout = NULL; - - char string[PATH_MAX] = ""; - - char *encrypt_text[] = { - "IDS_ST_BODY_ENCRYPTING_YOUR_PHONE_WILL_SECURE_THE_APPS_DATA_AND_OTHER_CONTENT_ON_IT_N_NTO_DECRYPT_YOUR_PHONE_ONCE_MSG", - }; - - if (navi_bar == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); - return; - } - - base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); - encrypt_device_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_first_layout"); - ad->dpm_encryption_layout = encrypt_device_layout; - - snprintf(string, sizeof(string), "%s", __(encrypt_text[0])); - encrypt_msg = ode_create_textblock(encrypt_device_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encrypt_device_layout, "msg_content", encrypt_msg); - - set_next_btn_layout(base_layout, ad, __(button_text[0])); - - elm_object_part_content_set(base_layout, "content_layout", encrypt_device_layout); - - snprintf(string, sizeof(string), "%s", __(encrypt_header_text[0])); - sw_back_btn_set(navi_bar, string, base_layout); -} - -void ode_check_encrypt_device_create_view(appdata_s *ad) -{ - Evas_Object *navi_bar = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *check_msg = NULL; - Evas_Object *encryption_check_layout = NULL; - Evas_Object *genlist = NULL; - Elm_Object_Item *item; - Elm_Genlist_Item_Class *itc; - - dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_check_encrypt_device_create_view"); - char string[PATH_MAX] = ""; - char *check_text[2][3] = { - { - "IDS_ST_BODY_THE_ENCRYPTION_PROCESS_MAY_TAKE_A_LONG_TIME_DEPENDING_ON_THE_AMOUNT_OF_DATA_MSG", - "", - "IDS_ST_BODY_TO_ENCRYPT_YOUR_DEVICE_C_ABB" - }, - { - "IDS_ST_BODY_DECRYPTING_YOUR_DEVICE_WILL_DECRYPT_THE_APPS_DATA_AND_OTHER_CONTENT_ON_YOUR_DEVICE", - "IDS_ST_BODY_THIS_MAY_TAKE_A_LONG_TIME_DEPENDING_ON_THE_AMOUNT_OF_DATA_INTERRUPTING_THIS_PROCESS_MAY_CAUSE_MSG", - "IDS_ST_HEADER_TO_DECRYPT_YOUR_DEVICE_C_ABB" - } - }; - - char *status_text[] = { - "IDS_ST_BODY_CHARGE_THE_BATTERY_TO_AT_LEAST_PDP", - "IDS_ST_BODY_CONNECT_THE_DEVICE_TO_A_CHARGER", - "IDS_ST_BODY_SET_THE_SCREEN_LOCK_TYPE_TO_PASSWORD" - }; - - int ret; - char **text = NULL; - - if (navi_bar == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); - return; - } - - base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); - encryption_check_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_check_layout"); - ad->dpm_encryption_layout = encryption_check_layout; - - switch (ad->view_type) { - case ENCRYPT_DEVICE: - text = check_text[0]; - snprintf(string, sizeof(string), "%s", __(text[0])); - break; - case DECRYPT_DEVICE: - text = check_text[1]; - snprintf(string, sizeof(string), "%s

%s", __(text[0]), __(text[1])); - break; - } - - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "msg_content", check_msg); - - /* add group index */ - genlist = elm_genlist_add(encryption_check_layout); - elm_object_style_set(genlist, "solid/default"); - elm_layout_content_set(encryption_check_layout, "genlist_base", genlist); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - - itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); - ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, text[2]); - - /* get battery info */ - ret = battery_status_update(ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "battery_status_update failed"); - return; - } - - ret = battery_cb_register(ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "battery_cb_register failed"); - return; - } - - if (ad->view_type == ENCRYPT_DEVICE) { - /* get locktype */ - ret = locktype_status_update(ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "locktype_status_update failed"); - return; - } - - ret = locktype_cb_register(ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "locktype_cb_register failed"); - return; - } - - snprintf(string, sizeof(string), "%s", __(status_text[2])); - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "locktype_text", check_msg); - - set_locktype_btn_layout(encryption_check_layout, ad, __(button_text[2])); - } - - snprintf(string, sizeof(string), __(status_text[0]), NEEDED_BATTERY_PERCENT); - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "battery_text", check_msg); - - snprintf(string, sizeof(string), "%s", __(status_text[1])); - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "charge_text", check_msg); - - elm_object_part_content_set(base_layout, "content_layout", encryption_check_layout); - - /* set bottom button */ - if (ad->view_type == ENCRYPT_DEVICE) { - set_two_btn_layout(base_layout, ad); - item = elm_naviframe_item_push(navi_bar, __(encrypt_header_text[ad->view_type]), NULL, NULL, base_layout, NULL); - elm_naviframe_item_pop_cb_set(item, check_view_pop_cb, ad); - } else { - set_next_btn_layout(base_layout, ad, __(button_text[0])); - sw_back_btn_set(navi_bar, __(encrypt_header_text[ad->view_type]), base_layout); - } -} - -void ode_encrypt_sd_card_create_view(appdata_s *ad) -{ - Evas_Object *navi_bar = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *encrypt_msg = NULL; - Evas_Object *encrypt_device_layout = NULL; - - char string[PATH_MAX] = ""; - - char *encrypt_text[] = { - "IDS_ST_BODY_ENCRYPTING_YOUR_SD_CARD_WILL_PROTECT_ITS_DATA_IF_ITS_LOST_OR_STOLEN_ENCRYPTED_SD_CARDS_CAN_ONLY_MSG", - "IDS_ST_BODY_ONCE_THE_SD_CARD_IS_ENCRYPTED_A_PASSWORD_IS_REQUIRED_TO_USE_IT_THE_SAME_PASSWORD_MUST_MSG" - }; - - if (navi_bar == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); - return; - } - - base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); - encrypt_device_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_first_layout"); - ad->dpm_encryption_layout = encrypt_device_layout; - - snprintf(string, sizeof(string), "%s

%s", __(encrypt_text[0]), __(encrypt_text[1])); - encrypt_msg = ode_create_textblock(encrypt_device_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encrypt_device_layout, "msg_content", encrypt_msg); - - set_next_btn_layout(base_layout, ad, __(button_text[0])); - - elm_object_part_content_set(base_layout, "content_layout", encrypt_device_layout); - - snprintf(string, sizeof(string), "%s", __(encrypt_header_text[2])); - sw_back_btn_set(navi_bar, string, base_layout); -} - -void ode_decrypt_sd_card_create_view(appdata_s *ad) -{ - Evas_Object *navi_bar = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *encrypt_msg = NULL; - Evas_Object *decrypt_sd_card_layout = NULL; - - char string[PATH_MAX] = ""; - - char *encrypt_text[] = { - "IDS_ST_BODY_THE_DECRYPTION_PROCESS_MAY_TAKE_A_LONG_TIME_MSG" - }; - - if (navi_bar == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); - return; - } - - base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); - decrypt_sd_card_layout = ode_create_layout(base_layout, ad->edj_path, "decrypt_sdcard_layout"); - ad->dpm_encryption_layout = decrypt_sd_card_layout; - - snprintf(string, sizeof(string), "%s", __(encrypt_text[0])); - encrypt_msg = ode_create_textblock(decrypt_sd_card_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(decrypt_sd_card_layout, "msg_content", encrypt_msg); - - set_change_pw_layout(decrypt_sd_card_layout, ad, __(button_text[3])); - set_next_btn_layout(base_layout, ad, __(button_text[0])); - - elm_object_part_content_set(base_layout, "content_layout", decrypt_sd_card_layout); - - snprintf(string, sizeof(string), "%s", __(encrypt_header_text[3])); - sw_back_btn_set(navi_bar, string, base_layout); -} - -void ode_check_encrypt_sd_card_create_view(appdata_s *ad) -{ - Evas_Object *navi_bar = ad->navi_bar; - Evas_Object *base_layout = NULL; - Evas_Object *check_msg = NULL; - Evas_Object *encryption_check_layout = NULL; - Evas_Object *genlist = NULL; - Elm_Object_Item *item; - Elm_Genlist_Item_Class *itc; - - dlog_print(DLOG_DEBUG, LOG_TAG, "start ode_check_encrypt_sd_card_create_view"); - char string[PATH_MAX] = ""; - char *check_text[] = { - "IDS_ST_BODY_THE_ENCRYPTION_PROCESS_MAY_TAKE_A_LONG_TIME_DEPENDING_ON_THE_AMOUNT_OF_DATA_MSG", - "IDS_ST_BODY_MAKE_SURE_THAT_THE_BATTERY_IS_CHARGED_AND_KEEP_THE_PHONE_PLUGGED_IN_UNTIL_ENCRYPTION_IS_COMPLETE", - "IDS_ST_BODY_TO_ENCRYPT_YOUR_SD_CARD_C", - }; - - char *status_text[] = { - "IDS_ST_BODY_INSERT_THE_SD_CARD_ABB", - "IDS_ST_BODY_CREATE_AN_SD_CARD_PASSWORD" - }; - - int ret; - if (navi_bar == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "navi_bar is null"); - return; - } - - base_layout = ode_create_layout(navi_bar, ad->edj_path, "base_layout"); - encryption_check_layout = ode_create_layout(base_layout, ad->edj_path, "encrypt_device_check_layout"); - ad->dpm_encryption_layout = encryption_check_layout; - - snprintf(string, sizeof(string), "%s
%s", __(check_text[0]), __(check_text[1])); - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "msg_content", check_msg); - - /* add group index */ - genlist = elm_genlist_add(encryption_check_layout); - elm_object_style_set(genlist, "solid/default"); - elm_layout_content_set(encryption_check_layout, "genlist_base", genlist); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - - itc = ode_create_genlist_item_class("group_index", ode_group_text_get, NULL); - ode_append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, check_text[2]); - - /* get sdcard info */ - ret = sdcard_status_update(ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "sdcard_status_update failed"); - return; - } - - /* register vconf notify callback : sdcard status */ - ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, sdcard_status_changed_cb, ad); - if (ret != 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "runtime_info_set_changed_cb failed: %d", ret); - return; - } - - snprintf(string, sizeof(string), "%s", __(status_text[0])); - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "battery_text", check_msg); - -#if 0 - /* using signal */ - set_sdcard_pw_btn_layout(encryption_check_layout, ad); - sdcard_pw_status_update(ad); -#endif - - /* using layout */ - update_sdcard_pw_btn_status(ad); - - snprintf(string, sizeof(string), "%s", __(status_text[1])); - check_msg = ode_create_textblock(encryption_check_layout, string, MSG_TEXT_STYLE); - elm_object_part_content_set(encryption_check_layout, "charge_text", check_msg); - elm_object_part_content_set(base_layout, "content_layout", encryption_check_layout); - - /* set bottom button */ - set_two_btn_layout(base_layout, ad); - item = elm_naviframe_item_push(navi_bar, __(encrypt_header_text[ad->view_type]), NULL, NULL, base_layout, NULL); - elm_naviframe_item_pop_cb_set(item, check_view_pop_cb, ad); -} - diff --git a/tools/apps/ode/src/ode-app.c b/tools/apps/ode/src/ode-app.c index c82efd2..539dff6 100755 --- a/tools/apps/ode/src/ode-app.c +++ b/tools/apps/ode/src/ode-app.c @@ -38,7 +38,7 @@ struct submain { }, }; -static Evas_Object *create_mainview(appdata_s *ad) +Evas_Object *create_mainview(appdata_s *ad) { Evas_Object *base_layout = NULL; Evas_Object *navi_bar = NULL; @@ -50,6 +50,10 @@ static Evas_Object *create_mainview(appdata_s *ad) } navi_bar = ode_create_navigation(base_layout); + if (navi_bar == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "failed create navigation"); + return NULL; + } elm_naviframe_prev_btn_auto_pushed_set(navi_bar, EINA_TRUE); ad->navi_bar = navi_bar; @@ -58,7 +62,7 @@ static Evas_Object *create_mainview(appdata_s *ad) ode_encrypt_device_create_view(ad); break; case DECRYPT_DEVICE: - ode_check_encrypt_device_create_view(ad); + ode_check_decrypt_device_create_view(ad); break; case ENCRYPT_SD_CARD: ode_encrypt_sd_card_create_view(ad); @@ -70,7 +74,7 @@ static Evas_Object *create_mainview(appdata_s *ad) return base_layout; } -static int create_base_gui(appdata_s *ad) +int create_base_gui(appdata_s *ad) { dlog_print(DLOG_DEBUG, LOG_TAG, "### create base gui start ###"); char *res_path = NULL; @@ -80,7 +84,6 @@ static int create_base_gui(appdata_s *ad) res_path = app_get_resource_path(); if (res_path == NULL) { dlog_print(DLOG_ERROR, LOG_TAG, "failed get resource path"); - ui_app_exit(); return 1; } snprintf(edj_path, PATH_MAX, "%s%s", res_path, "org.tizen.ode.edj"); @@ -99,6 +102,10 @@ static int create_base_gui(appdata_s *ad) ad->conform = ode_create_conformant(ad->win); ad->base = create_mainview(ad); + if (ad->base == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "failed create mainview"); + return 1; + } elm_object_content_set(ad->conform, ad->base); evas_object_show(ad->win); @@ -143,7 +150,7 @@ static void app_control(app_control_h app_control, void *data) if (create_base_gui(ad) != 0) { dlog_print(DLOG_ERROR, LOG_TAG, "### create base gui fail ###"); - return; + ui_app_exit(); } } @@ -174,7 +181,7 @@ static void app_terminate(void *data) if (ret != 0) dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister runtime info callback"); /* unregister battery percent callback */ - ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, battery_changed_cb); + ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, enc_battery_changed_cb); if (ret != 0) dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister battery capacity callback"); break; @@ -184,7 +191,7 @@ static void app_terminate(void *data) if (ret != 0) dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister runtime info callback"); /* unregister battery percent callback */ - ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, battery_changed_cb); + ret = device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, enc_battery_changed_cb); if (ret != 0) dlog_print(DLOG_ERROR, LOG_TAG, "Failed to unregister battery capacity callback"); break; diff --git a/tools/apps/ode/src/password/confirm-popup.c b/tools/apps/ode/src/password/confirm-popup.c index 3ed8537..1f36a67 100755 --- a/tools/apps/ode/src/password/confirm-popup.c +++ b/tools/apps/ode/src/password/confirm-popup.c @@ -150,8 +150,7 @@ static void confirm_password_popup_confirm_cb(void *data, Evas_Object *obj, void evas_object_del(popup_data->popup); create_password_message_popup(popup_data); } else { - if (popup_data->entry_data) - snprintf(popup_data->entry_data, PATH_MAX, "%s", elm_entry_entry_get(confirm_entry)); + snprintf(popup_data->entry_data, PATH_MAX, "%s", elm_entry_entry_get(confirm_entry)); evas_object_del(popup_data->popup); password_result_callback(popup_data, "success"); } diff --git a/tools/apps/ode/src/password/entry-popup.c b/tools/apps/ode/src/password/entry-popup.c index 283018d..088126c 100755 --- a/tools/apps/ode/src/password/entry-popup.c +++ b/tools/apps/ode/src/password/entry-popup.c @@ -81,8 +81,7 @@ static void enter_password_popup_confirm_cb(void *data, Evas_Object *obj, void * return; } - if (popup_data->entry_data) - snprintf(popup_data->entry_data, PATH_MAX, "%s", elm_entry_entry_get(entry)); + snprintf(popup_data->entry_data, PATH_MAX, "%s", elm_entry_entry_get(entry)); enter_password_mode = 0; evas_object_del(popup_data->popup); diff --git a/tools/apps/ode/src/password/password.c b/tools/apps/ode/src/password/password.c index 4ab13cb..9d124c9 100755 --- a/tools/apps/ode/src/password/password.c +++ b/tools/apps/ode/src/password/password.c @@ -80,8 +80,10 @@ void password_result_callback(popup_data_s *data, const char *result) dlog_print(DLOG_ERROR, LOG_TAG, "failed to create external data"); return; } - ad->entry_data = data->entry_data; - ad->device_info.sdcard_pw_status = 1; + if (ad) { + ad->entry_data = data->entry_data; + ad->device_info.sdcard_pw_status = 1; + } break; case CHANGE_PASSWORD: ret = ode_external_encryption_change_password(data->entry_data_old, data->entry_data); @@ -89,8 +91,10 @@ void password_result_callback(popup_data_s *data, const char *result) dlog_print(DLOG_ERROR, LOG_TAG, "failed to change external data"); return; } - ad->entry_data = data->entry_data; - ad->device_info.sdcard_pw_status = 1; + if (ad) { + ad->entry_data = data->entry_data; + ad->device_info.sdcard_pw_status = 1; + } break; case DELETE_PASSWORD: ret = ode_external_encryption_clean_password(data->entry_data); @@ -98,8 +102,10 @@ void password_result_callback(popup_data_s *data, const char *result) dlog_print(DLOG_ERROR, LOG_TAG, "failed to delete external data"); return; } - ad->entry_data = NULL; - ad->device_info.sdcard_pw_status = 0; + if (ad) { + ad->entry_data = NULL; + ad->device_info.sdcard_pw_status = 0; + } break; case INSERT_SD_CARD: ret = ode_external_encryption_mount(data->entry_data); @@ -115,8 +121,12 @@ void password_result_callback(popup_data_s *data, const char *result) dlog_print(DLOG_ERROR, LOG_TAG, "failed to create internal data"); return; } + if (ad == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "failed to get encryption option"); + return; + } ret = ode_internal_encryption_encrypt(data->entry_data, ad->device_info.device_option); - if (ret != 0) { + if (ret != ODE_ERROR_NONE) { dlog_print(DLOG_DEBUG, LOG_TAG, "failed to encrypt internal storage"); return; } diff --git a/tools/apps/ode/src/sdcard.c b/tools/apps/ode/src/sdcard.c new file mode 100755 index 0000000..4ee255f --- /dev/null +++ b/tools/apps/ode/src/sdcard.c @@ -0,0 +1,55 @@ +/* + * Tizen ODE application + * + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ode-app.h" + +int sdcard_icon_status_update(appdata_s *ad) +{ + int sdcard_status; + + if (ad->encryption_layout == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "encrypt layout is null"); + return -1; + } + + vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sdcard_status); + if (sdcard_status != VCONFKEY_SYSMAN_MMC_MOUNTED) { + set_icon(ad, ICON_BAR, "battery_icon"); + ad->device_info.sdcard_status = 0; + } else { + /* available */ + set_icon(ad, ICON_CHECK, "battery_icon"); + ad->device_info.sdcard_status = 1; + } + return 0; +} + +int sdcard_cb_register(vconf_callback_fn callback, void* user_data) +{ + int ret; + + /* register vconf notify callback : sdcard status */ + ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, callback, user_data); + if (ret != 0) { + dlog_print(DLOG_ERROR, LOG_TAG, "runtime_info_set_changed_cb failed: %d", ret); + return -1; + } + return 0; +} -- 2.34.1