forked from enlightenment/enlightenment
remove awful idler from module config dialog and simplify all related code
ticket #856 SVN revision: 73148
This commit is contained in:
parent
55e263ef55
commit
1546ae67a8
|
@ -13,7 +13,6 @@ struct _CFModule
|
|||
Evas_Object *end;
|
||||
int idx;
|
||||
Eina_Bool enabled : 1;
|
||||
Eina_Bool selected : 1;
|
||||
};
|
||||
|
||||
struct _CFType
|
||||
|
@ -34,7 +33,6 @@ struct _E_Config_Dialog_Data
|
|||
struct
|
||||
{
|
||||
Eina_List *loaded, *unloaded;
|
||||
Ecore_Idler *idler;
|
||||
} selected;
|
||||
};
|
||||
|
||||
|
@ -144,7 +142,6 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
|||
|
||||
eina_list_free(cfdata->selected.loaded);
|
||||
eina_list_free(cfdata->selected.unloaded);
|
||||
if (cfdata->selected.idler) ecore_idler_del(cfdata->selected.idler);
|
||||
E_FREE(cfdata);
|
||||
}
|
||||
|
||||
|
@ -544,68 +541,47 @@ _types_list_sort(const void *data1, const void *data2)
|
|||
return strcmp(t1->name, t2->name);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_widget_list_item_selected_postponed(void *data)
|
||||
static void
|
||||
_widget_list_selection_changed(void *data, Evas_Object *obj __UNUSED__)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
const Eina_List *l;
|
||||
const E_Ilist_Item *it;
|
||||
unsigned int loaded = 0, unloaded = 0;
|
||||
CFModule *cfm = NULL;
|
||||
const char *description;
|
||||
int idx = 0;
|
||||
|
||||
eina_list_free(cfdata->selected.loaded);
|
||||
eina_list_free(cfdata->selected.unloaded);
|
||||
cfdata->selected.loaded = NULL;
|
||||
cfdata->selected.unloaded = NULL;
|
||||
cfdata->selected.loaded = eina_list_free(cfdata->selected.loaded);
|
||||
cfdata->selected.unloaded = eina_list_free(cfdata->selected.unloaded);
|
||||
|
||||
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->l_modules), l, it)
|
||||
EINA_LIST_FOREACH(e_widget_ilist_selected_items_get(cfdata->l_modules), l, it)
|
||||
{
|
||||
idx++;
|
||||
if (!it->selected) continue;
|
||||
cfm = e_widget_ilist_item_data_get(it);
|
||||
cfm->idx = (idx - 1);
|
||||
|
||||
if (cfm->enabled)
|
||||
{
|
||||
cfdata->selected.loaded =
|
||||
eina_list_append(cfdata->selected.loaded, cfm);
|
||||
loaded++;
|
||||
e_widget_disabled_set(cfdata->b_unload, 0);
|
||||
e_widget_disabled_set(cfdata->b_load, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
cfdata->selected.unloaded =
|
||||
eina_list_append(cfdata->selected.unloaded, cfm);
|
||||
unloaded++;
|
||||
e_widget_disabled_set(cfdata->b_load, 0);
|
||||
e_widget_disabled_set(cfdata->b_unload, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
e_widget_disabled_set(cfdata->b_load, !unloaded);
|
||||
e_widget_disabled_set(cfdata->b_unload, !loaded);
|
||||
|
||||
if ((cfm) && (loaded + unloaded == 1))
|
||||
if ((cfm) && (eina_list_count(cfdata->selected.loaded) + eina_list_count(cfdata->selected.unloaded) == 1))
|
||||
description = cfm->comment;
|
||||
else if (loaded + unloaded > 1)
|
||||
else if (eina_list_count(cfdata->selected.loaded) + eina_list_count(cfdata->selected.unloaded) > 1)
|
||||
description = _("More than one module selected.");
|
||||
else
|
||||
description = _("No modules selected.");
|
||||
|
||||
e_widget_textblock_markup_set(cfdata->o_desc, description);
|
||||
|
||||
cfdata->selected.idler = NULL;
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
static void
|
||||
_widget_list_selection_changed(void *data, Evas_Object *obj __UNUSED__)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
|
||||
if (cfdata->selected.idler)
|
||||
ecore_idler_del(cfdata->selected.idler);
|
||||
cfdata->selected.idler =
|
||||
ecore_idler_add(_widget_list_item_selected_postponed, cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -625,12 +601,12 @@ _btn_cb_unload(void *data, void *data2 __UNUSED__)
|
|||
cfm->enabled = e_module_enabled_get(cfm->module);
|
||||
}
|
||||
|
||||
// weird, but unselects it as it was already selected
|
||||
e_widget_ilist_multi_select(cfdata->l_modules, cfm->idx);
|
||||
_module_end_state_apply(cfm);
|
||||
cfdata->selected.unloaded = eina_list_append(cfdata->selected.unloaded, cfm);
|
||||
}
|
||||
|
||||
e_widget_disabled_set(cfdata->b_unload, 1);
|
||||
e_widget_disabled_set(cfdata->b_load, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -652,11 +628,11 @@ _btn_cb_load(void *data, void *data2 __UNUSED__)
|
|||
cfm->enabled = e_module_enabled_get(cfm->module);
|
||||
}
|
||||
|
||||
// weird, but unselects it as it was already selected
|
||||
e_widget_ilist_multi_select(cfdata->l_modules, cfm->idx);
|
||||
_module_end_state_apply(cfm);
|
||||
cfdata->selected.loaded = eina_list_append(cfdata->selected.loaded, cfm);
|
||||
}
|
||||
|
||||
e_widget_disabled_set(cfdata->b_load, 1);
|
||||
e_widget_disabled_set(cfdata->b_unload, 0);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue