rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=2c28a4f7170ea1482b4cb394e60fd373dcba42dc

commit 2c28a4f7170ea1482b4cb394e60fd373dcba42dc
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Mon Oct 5 15:42:58 2015 +0300

    project close: use popup_want action on project close
    
    Change-Id: I6674e5292425551a9c50fd0b4a6771f13521fdd8
---
 src/bin/ui/connector.c     |  69 -----------------
 src/bin/ui/project_close.c | 185 ++++++++++++++++++++++++++++++++-------------
 2 files changed, 132 insertions(+), 122 deletions(-)

diff --git a/src/bin/ui/connector.c b/src/bin/ui/connector.c
index 7175996..c9d18dc 100644
--- a/src/bin/ui/connector.c
+++ b/src/bin/ui/connector.c
@@ -579,75 +579,6 @@ _progress_end(void *data __UNUSED__, PM_Project_Result 
result)
    ap.splash = NULL;
 }
 
-static Eina_Bool
-_setup_save_splash(void *data, Splash_Status status __UNUSED__)
-{
-
-#ifdef HAVE_ENVENTOR
-   if (ap.enventor_mode)
-     {
-        enventor_object_file_version_update(ap.enventor, ap.project, "110");
-
-        pm_project_enventor_save(ap.project,
-                                 _progress_print,
-                                 _progress_end,
-                                 data);
-        pm_save_to_dev(ap.project, ap.project->current_style, true);
-     }
-   else
-     {
-#endif /* HAVE_ENVENTOR */
-        pm_project_save(ap.project,
-                        _progress_print,
-                        _progress_end,
-                        data);
-#ifdef HAVE_ENVENTOR
-     }
-#endif /* HAVE_ENVENTOR */
-
-   return true;
-}
-
-static Eina_Bool
-_teardown_save_splash(void *data __UNUSED__, Splash_Status status)
-{
-
-   if (status == SPLASH_SUCCESS)
-     STATUSBAR_PROJECT_SAVE_TIME_UPDATE();
-
-   ap.project->changed = false;
-
-   TODO("Check if this recalc is necessary");
-   if (ap.project->current_style)
-     workspace_edit_object_recalc(ap.workspace);
-   pm_project_thread_free();
-
-   ecore_main_loop_quit();
-   return true;
-}
-
-void
-project_save(void)
-{
-   assert(ap.project != NULL);
-
-#ifdef HAVE_ENVENTOR
-   if (!ap.enventor_mode)
-#endif /* HAVE_ENVENTOR */
-     if (!ap.project->changed) return;
-   if (ap.splash) return;
-
-   ap.splash = splash_add(ap.win, _setup_save_splash, _teardown_save_splash, 
NULL, NULL);
-   evas_object_focus_set(ap.splash, true);
-   evas_object_show(ap.splash);
-
-#ifdef HAVE_ENVENTOR
-   if (!ap.enventor_mode)
-#endif /* HAVE_ENVENTOR */
-     ui_menu_disable_set(ap.menu, MENU_FILE_SAVE, true);
-     ecore_main_loop_begin();
-}
-
 TODO("I think, this functionality need move to dialogs")
 static void
 _replace_cb(void *data,
diff --git a/src/bin/ui/project_close.c b/src/bin/ui/project_close.c
index 04f9aff..6e3db2e 100644
--- a/src/bin/ui/project_close.c
+++ b/src/bin/ui/project_close.c
@@ -21,82 +21,161 @@
 #include "tabs.h"
 #include "navigator.h"
 
-static Eina_Bool want_close;
-static Evas_Object *popup;
-
-static void
-_cancel_cb(void *data __UNUSED__,
-           Evas_Object *obj __UNUSED__,
-           void *ei __UNUSED__)
+static Eina_Bool
+_progress_print(void *data __UNUSED__, Eina_Stringshare *progress_string)
 {
-   evas_object_hide(popup);
-   want_close = false;
-   ecore_main_loop_quit();
+   elm_object_part_text_set(ap.splash, "label.info", progress_string);
+
+   return true;
 }
 
 static void
-_save_cb(void *data __UNUSED__,
-         Evas_Object *obj __UNUSED__,
-         void *ei __UNUSED__)
+_progress_end(void *data __UNUSED__, PM_Project_Result result)
 {
-   evas_object_hide(popup);
-   want_close = true;
-   project_save();
-   ecore_main_loop_quit();
+
+   switch (result)
+     {
+      case PM_PROJECT_ERROR:
+        {
+           NOTIFY_INFO(3, _("Error: project not saved."));
+           break;
+        }
+      case PM_PROJECT_CANCEL:
+        {
+           NOTIFY_INFO(3, _("Saving canceled."));
+           break;
+        }
+      case PM_PROJECT_SUCCESS:
+        {
+           ap.project->changed = false;
+           break;
+        }
+      default:
+        {
+           ERR("Wrong result");
+           abort();
+        }
+     }
+
+#ifdef HAVE_ENVENTOR
+   if (ap.enventor_mode)
+     {
+        wm_widgets_list_objects_load(ap.project->widgets,
+                                     evas_object_evas_get(ap.win),
+                                     ap.project->mmap_file);
+        wm_layouts_list_objects_load(ap.project->layouts,
+                                     evas_object_evas_get(ap.win),
+                                     ap.project->mmap_file);
+        wm_styles_build_alias(ap.project->widgets,
+                              ap.project->layouts);
+        enventor_object_focus_set(ap.enventor, true);
+        //pm_save_to_dev(ap.project, ap.project->current_style, true);
+     }
+#endif /* HAVE_ENVENTOR */
+
+   splash_del(ap.splash);
+   ap.splash = NULL;
 }
 
-static void
-_discard_cb(void *data __UNUSED__,
-            Evas_Object *obj __UNUSED__,
-            void *ei __UNUSED__)
+static Eina_Bool
+_setup_save_splash(void *data, Splash_Status status __UNUSED__)
 {
-   evas_object_hide(popup);
-   want_close = true;
-   ecore_main_loop_quit();
+
+#ifdef HAVE_ENVENTOR
+   if (ap.enventor_mode)
+     {
+        enventor_object_file_version_update(ap.enventor, ap.project, "110");
+
+        pm_project_enventor_save(ap.project,
+                                 _progress_print,
+                                 _progress_end,
+                                 data);
+        pm_save_to_dev(ap.project, ap.project->current_style, true);
+     }
+   else
+     {
+#endif /* HAVE_ENVENTOR */
+        pm_project_save(ap.project,
+                        _progress_print,
+                        _progress_end,
+                        data);
+#ifdef HAVE_ENVENTOR
+     }
+#endif /* HAVE_ENVENTOR */
+
+   return true;
 }
 
-static void
-_popup_want_save(void)
+static Eina_Bool
+_teardown_save_splash(void *data __UNUSED__, Splash_Status status)
 {
-   Evas_Object *btn, *label;
-   Eina_Stringshare *title;
 
-   ui_menu_items_list_disable_set(ap.menu, MENU_ITEMS_LIST_MAIN, true);
+   if (status == SPLASH_SUCCESS)
+     STATUSBAR_PROJECT_SAVE_TIME_UPDATE();
 
-   title = eina_stringshare_printf(_("Close project %s"), ap.project->name);
-   popup = elm_popup_add(ap.win_layout);
-   elm_object_part_text_set(popup, "title,text", title);
-
-   BUTTON_ADD(popup, btn, _("Save"));
-   evas_object_smart_callback_add(btn, "clicked", _save_cb, NULL);
-   elm_object_part_content_set(popup, "button1", btn);
-   BUTTON_ADD(popup, btn, _("Don't save"));
-   evas_object_smart_callback_add(btn, "clicked", _discard_cb, NULL);
-   elm_object_part_content_set(popup, "button2", btn);
-   BUTTON_ADD(popup, btn, _("Cancel"));
-   evas_object_smart_callback_add(btn, "clicked", _cancel_cb, NULL);
-   elm_object_part_content_set(popup, "button3", btn);
-   LABEL_ADD(popup, label, _("Do you want to save changes?"));
-   elm_object_content_set(popup, label);
-
-   evas_object_show(popup);
-   ecore_main_loop_begin();
-
-   evas_object_del(popup);
-   popup = NULL;
-   ui_menu_items_list_disable_set(ap.menu, MENU_ITEMS_LIST_MAIN, false);
+   ap.project->changed = false;
+
+   TODO("Check if this recalc is necessary");
+   if (ap.project->current_style)
+     workspace_edit_object_recalc(ap.workspace);
+   pm_project_thread_free();
+
+   eflete_main_loop_quit();
+   return true;
 }
 
+void
+project_save(void)
+{
+   assert(ap.project != NULL);
+
+#ifdef HAVE_ENVENTOR
+   if (!ap.enventor_mode)
+#endif /* HAVE_ENVENTOR */
+     if (!ap.project->changed) return;
+   if (ap.splash) return;
+
+   ap.splash = splash_add(ap.win, _setup_save_splash, _teardown_save_splash, 
NULL, NULL);
+   evas_object_focus_set(ap.splash, true);
+   evas_object_show(ap.splash);
+
+#ifdef HAVE_ENVENTOR
+   if (!ap.enventor_mode)
+#endif /* HAVE_ENVENTOR */
+     ui_menu_disable_set(ap.menu, MENU_FILE_SAVE, true);
+     eflete_main_loop_begin();
+}
+
+
 Eina_Bool
 project_close(void)
 {
+   Popup_Button btn_res;
+   Eina_Stringshare *title;
+
    assert(ap.project != NULL);
 
+   title = eina_stringshare_printf(_("Close project %s"), ap.project->name);
    if (ap.project->changed)
      {
-        _popup_want_save();
-        if (!want_close) return false;
+        btn_res = popup_want_action(title, _("Do you want to save changes?"), 
NULL,
+                                    NULL, BTN_OK|BTN_DONT_SAVE|BTN_CANCEL,
+                                    NULL, NULL);
+        switch (btn_res)
+          {
+           case BTN_OK:
+              project_save();
+              break;
+           case BTN_DONT_SAVE:
+              break;
+           case BTN_CANCEL:
+              return false;
+           default:
+              ERR("Popup return wrong value. Go to fix it!");
+              abort(); /* it's wrong value need to fix popup code or popup 
call */
+          }
      }
+   eina_stringshare_del(title);
 
    ui_menu_items_list_disable_set(ap.menu, MENU_ITEMS_LIST_BASE, true);
    ui_menu_items_list_disable_set(ap.menu, MENU_ITEMS_LIST_STYLE_ONLY, true);

-- 


Reply via email to