1. wait for initial efreet desktop update before going ot first page

2. wait again after new desktops instaleld and update comes in before
advancing



SVN revision: 77135
This commit is contained in:
Carsten Haitzler 2012-09-27 08:40:24 +00:00
parent 383586bd43
commit 8257c70883
2 changed files with 55 additions and 2 deletions

View File

@ -3,6 +3,9 @@
#include "e.h" #include "e.h"
#include "e_mod_main.h" #include "e_mod_main.h"
static Ecore_Event_Handler *_update_handler = NULL;
static Ecore_Timer *_next_timer = NULL;
EAPI int EAPI int
wizard_page_init(E_Wizard_Page *pg __UNUSED__) wizard_page_init(E_Wizard_Page *pg __UNUSED__)
{ {
@ -12,17 +15,30 @@ wizard_page_init(E_Wizard_Page *pg __UNUSED__)
EAPI int EAPI int
wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__) wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__)
{ {
if (_update_handler) ecore_event_handler_del(_update_handler);
_update_handler = NULL;
return 1; return 1;
} }
static Eina_Bool static Eina_Bool
_next_page(void *data __UNUSED__) _next_page(void *data __UNUSED__)
{ {
_next_timer = NULL;
if (_update_handler) ecore_event_handler_del(_update_handler);
_update_handler = NULL;
e_wizard_button_next_enable_set(1); e_wizard_button_next_enable_set(1);
e_wizard_next(); e_wizard_next();
return ECORE_CALLBACK_CANCEL; return ECORE_CALLBACK_CANCEL;
} }
static Eina_Bool
_cb_desktops_update(void *data __UNUSED__, int ev_type __UNUSED__, void *ev __UNUSED__)
{
if (_next_timer) ecore_timer_del(_next_timer);
_next_timer = ecore_timer_add(2.0, _next_page, NULL);
return ECORE_CALLBACK_PASS_ON;
}
EAPI int EAPI int
wizard_page_show(E_Wizard_Page *pg __UNUSED__) wizard_page_show(E_Wizard_Page *pg __UNUSED__)
{ {
@ -34,7 +50,12 @@ wizard_page_show(E_Wizard_Page *pg __UNUSED__)
e_theme_edje_object_set(o, "base/theme/wizard", "e/wizard/firstpage"); e_theme_edje_object_set(o, "base/theme/wizard", "e/wizard/firstpage");
e_wizard_page_show(o); e_wizard_page_show(o);
ecore_timer_add(2.0, _next_page, NULL); _update_handler =
ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE,
_cb_desktops_update, NULL);
/* advance in 15 sec anyway if no efreet update comes */
_next_timer = ecore_timer_add(15.0, _next_page, NULL);
return 1; return 1;
} }

View File

@ -2,6 +2,9 @@
#include "e.h" #include "e.h"
#include "e_mod_main.h" #include "e_mod_main.h"
static Ecore_Event_Handler *_update_handler = NULL;
static Ecore_Timer *_next_timer = NULL;
EAPI int EAPI int
wizard_page_init(E_Wizard_Page *pg __UNUSED__) wizard_page_init(E_Wizard_Page *pg __UNUSED__)
{ {
@ -11,9 +14,30 @@ wizard_page_init(E_Wizard_Page *pg __UNUSED__)
EAPI int EAPI int
wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__) wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__)
{ {
if (_update_handler) ecore_event_handler_del(_update_handler);
_update_handler = NULL;
return 1; return 1;
} }
static Eina_Bool
_next_page(void *data __UNUSED__)
{
_next_timer = NULL;
if (_update_handler) ecore_event_handler_del(_update_handler);
_update_handler = NULL;
e_wizard_button_next_enable_set(1);
e_wizard_next();
return ECORE_CALLBACK_CANCEL;
}
static Eina_Bool
_cb_desktops_update(void *data __UNUSED__, int ev_type __UNUSED__, void *ev __UNUSED__)
{
if (_next_timer) ecore_timer_del(_next_timer);
_next_timer = ecore_timer_add(1.0, _next_page, NULL);
return ECORE_CALLBACK_PASS_ON;
}
EAPI int EAPI int
wizard_page_show(E_Wizard_Page *pg __UNUSED__) wizard_page_show(E_Wizard_Page *pg __UNUSED__)
{ {
@ -25,6 +49,14 @@ wizard_page_show(E_Wizard_Page *pg __UNUSED__)
snprintf(buf, sizeof(buf), "%s/extra_desktops", e_wizard_dir_get()); snprintf(buf, sizeof(buf), "%s/extra_desktops", e_wizard_dir_get());
extra_desks = ecore_file_ls(buf); extra_desks = ecore_file_ls(buf);
if (!extra_desks) return 0; if (!extra_desks) return 0;
_update_handler =
ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE,
_cb_desktops_update, NULL);
/* advance in 15 sec anyway if no efreet update comes */
_next_timer = ecore_timer_add(15.0, _next_page, NULL);
EINA_LIST_FREE(extra_desks, file) EINA_LIST_FREE(extra_desks, file)
{ {
snprintf(buf, sizeof(buf), "%s/extra_desktops/%s", snprintf(buf, sizeof(buf), "%s/extra_desktops/%s",
@ -80,7 +112,7 @@ wizard_page_show(E_Wizard_Page *pg __UNUSED__)
} }
free(file); free(file);
} }
return 0; /* 1 == show ui, and wait for user, 0 == just continue */ return 1; /* 1 == show ui, and wait for user, 0 == just continue */
} }
EAPI int EAPI int