[Backup&Reset]Pwd check, factory reset animation 20/156220/3 accepted/tizen/unified/20171020.091534 submit/tizen/20171019.073936
authorPawel Aksiutowicz <p.aksiutowic@partner.samsung.com>
Tue, 17 Oct 2017 12:26:47 +0000 (14:26 +0200)
committerPawel Aksiutowicz <p.aksiutowic@partner.samsung.com>
Tue, 17 Oct 2017 12:36:39 +0000 (14:36 +0200)
Change-Id: I3043a9d48fdc01f0f6858936d638bfb04286a027
Signed-off-by: Pawel Aksiutowicz <p.aksiutowic@partner.samsung.com>
setting-backup-and-reset/src/setting-backup-and-reset-main-view.c

index fae1bbf7d63c02ae9d537bde15cf3fa9615cc94b..0f1ceec2af1efa3e2a60d64f0e65b3d5f44cd2a1 100755 (executable)
  */
 
 #include <efl_extension.h>
+
 #include "setting-backup-and-reset-main-view.h"
 #include "setting-backup-and-reset-cloud-view.h"
 #include "setting-backup-and-reset-usb-mass-storage-view.h"
 #include "setting-common-view.h"
 
+#define SETTING_IMAGES_PATH    _TZ_SYS_RO_APP"/org.tizen.setting/res/images"
+#define PROGRESS_IMAGE1 SETTING_IMAGES_PATH"/A01-1_progress_pending_01_dim.png"
+#define PROGRESS_IMAGE2 SETTING_IMAGES_PATH"/A01-1_progress_pending_01.png"
+#define PROGRESS_IMAGE3 SETTING_IMAGES_PATH"/A01-1_progress_pending_02_dim.png"
+#define PROGRESS_IMAGE4 SETTING_IMAGES_PATH"/A01-1_progress_pending_02.png"
+#define PROGRESS_IMAGE_WIDTH 640
+#define PROGRESS_IMAGE_HEIGHT 32
+
 setting_view setting_backup_reset_main_view;
 
 static const char *reset_device_without_sim_msg = \
@@ -198,7 +207,7 @@ static char *_gl_itc_item_text_get(void *data, Evas_Object *obj,
        return NULL;
 }
 
-static Evas_Object *_create_popup(Evas_Object *parent, const char *title)
+static Evas_Object *_create_popup(Evas_Object *parent, const char *title, bool fullscreen)
 {
        Evas_Object *popup = elm_popup_add(parent);
        if (!popup) {
@@ -206,8 +215,11 @@ static Evas_Object *_create_popup(Evas_Object *parent, const char *title)
                return NULL;
        }
 
-       elm_object_part_text_set(popup, "title,text", "Reset device");
-       elm_popup_align_set(popup, 0.5, 0.5);
+       elm_object_part_text_set(popup, "title,text", title);
+       if (!fullscreen)
+               elm_popup_align_set(popup, 0.5, 0.5);
+       else
+               elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, ELM_NOTIFY_ALIGN_FILL);
        return popup;
 }
 
@@ -234,7 +246,7 @@ static Evas_Object *_create_label(Evas_Object *parent, const char *text)
 
        elm_label_line_wrap_set(label, ELM_WRAP_WORD);
        elm_object_text_set(label, text);
-       evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_align_set(label, EVAS_HINT_FILL, 0.5);
        evas_object_show(label);
 
        return label;
@@ -294,9 +306,72 @@ static void warning_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *ev
        evas_object_del(get_widget_specified_type_ancestor(obj, "elm_popup"));
 }
 
+void _transit_del_cb(void *data, Elm_Transit *transit EINA_UNUSED)
+{
+       evas_object_freeze_events_set(data, EINA_FALSE);
+}
+
+static void create_transition_popup(SettingBackupReset *sbr)
+{
+       Elm_Transit *transit;
+       Eina_List *image_list = NULL;
+
+       Evas_Object *popup = _create_popup(sbr->md.window, NULL, true);
+       Evas_Object *box = _create_box(popup);
+       Evas_Object *label = _create_label(box, "<align=center>Performing factory data reset.<br>Please wait.</align>");
+       Evas_Object *image = elm_image_add(box);
+       elm_image_file_set(image, PROGRESS_IMAGE1, NULL);
+       evas_object_size_hint_min_set(image, PROGRESS_IMAGE_WIDTH, PROGRESS_IMAGE_HEIGHT);
+       evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       elm_box_pack_end(box, label);
+       elm_box_pack_end(box, image);
+
+       evas_object_show(popup);
+       evas_object_show(label);
+       evas_object_show(image);
+
+       image_list = eina_list_append(image_list, eina_stringshare_add(PROGRESS_IMAGE1));
+       image_list = eina_list_append(image_list, eina_stringshare_add(PROGRESS_IMAGE2));
+       image_list = eina_list_append(image_list, eina_stringshare_add(PROGRESS_IMAGE3));
+       image_list = eina_list_append(image_list, eina_stringshare_add(PROGRESS_IMAGE4));
+
+       transit = elm_transit_add();
+       elm_transit_del_cb_set(transit, _transit_del_cb, box);
+       elm_transit_object_add(transit, image);
+       elm_transit_effect_image_animation_add(transit, image_list);
+       elm_transit_duration_set(transit, 2.0);
+       elm_transit_repeat_times_set(transit, 100);
+       elm_transit_go(transit);
+       evas_object_freeze_events_set(box, EINA_TRUE);
+}
+
+static void _password_check_result_cb(app_control_h request,
+               app_control_h reply, app_control_result_e code, void *priv)
+{
+       char *result = NULL;
+       SettingBackupReset *sbr = (SettingBackupReset *)priv;
+       ret_if(!sbr);
+       ret_if(code != APP_CONTROL_RESULT_SUCCEEDED);
+
+       app_control_get_extra_data(reply, "result", &result);
+       if (safeStrCmp(result, "SETTING_PW_TYPE_PASSWORD") == 0) {
+               create_transition_popup(sbr);
+       }
+
+       free(result);
+
+       elm_object_tree_focus_allow_set(sbr->md.naviframe, EINA_TRUE);
+}
+
 static void second_warning_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
+
+       SettingBackupReset *sbr = (SettingBackupReset *)data;
        evas_object_del(get_widget_specified_type_ancestor(obj, "elm_popup"));
+       app_launcher("org.tizen.setting-password|viewtype:SETTING_PW_TYPE_PASSWORD",
+                       _password_check_result_cb, sbr);
+
 }
 
 static void first_warning_reset_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
@@ -305,13 +380,13 @@ static void first_warning_reset_btn_clicked_cb(void *data, Evas_Object *obj, voi
 
        evas_object_del(get_widget_specified_type_ancestor(obj, "elm_popup"));
        const char *popup_text = "The factory reset can't be stopped after it has started.";
-       Evas_Object *popup = _create_popup(sbr->md.window, "Reset Device");
+       Evas_Object *popup = _create_popup(sbr->md.window, "Reset Device", false);
        Evas_Object *box = _create_box(popup);
        Evas_Object *label = _create_label(popup, popup_text);
        elm_box_pack_end(box, label);
 
        _create_popup_button(popup, "button1", "Cancel", warning_cancel_btn_clicked_cb, NULL);
-       _create_popup_button(popup, "button2", "Ok", second_warning_ok_btn_clicked_cb, NULL);
+       _create_popup_button(popup, "button2", "Ok", second_warning_ok_btn_clicked_cb, sbr);
 
        evas_object_show(popup);
 }
@@ -319,8 +394,7 @@ static void first_warning_reset_btn_clicked_cb(void *data, Evas_Object *obj, voi
 static void _create_reset_first_warning_popup(SettingBackupReset *sbr,
                                                                                const char *text, bool check_active)
 {
-       SETTING_TRACE_BEGIN;
-       Evas_Object *popup = _create_popup(sbr->md.window, "Reset_Device");
+       Evas_Object *popup = _create_popup(sbr->md.window, "Reset_Device", false);
        Evas_Object *box = _create_box(popup);
        Evas_Object *label = _create_label(box, text);
        Evas_Object *check = NULL;
@@ -331,9 +405,8 @@ static void _create_reset_first_warning_popup(SettingBackupReset *sbr,
                elm_box_pack_end(box, check);
        }
 
-       _create_popup_button(popup, "button1", "Cancel", warning_cancel_btn_clicked_cb, sbr);
+       _create_popup_button(popup, "button1", "Cancel", warning_cancel_btn_clicked_cb, NULL);
        _create_popup_button(popup, "button2", "Reset", first_warning_reset_btn_clicked_cb, sbr);
 
        evas_object_show(popup);
-       SETTING_TRACE_END;
 }