forked from enlightenment/enlightenment
Enable manual set of configuration dialogs as changed.
For some dialogs, it's better to let the dialogs themselves choose if they're modified or not. Default behavior is backward compatible. SVN revision: 36152
This commit is contained in:
parent
56b50ede09
commit
c6f9ec6ece
|
@ -39,6 +39,7 @@ e_config_dialog_new(E_Container *con, const char *title, const char *name, const
|
|||
cfd->data = data;
|
||||
cfd->hide_buttons = 1;
|
||||
cfd->cfg_changed = 0;
|
||||
cfd->cfg_changed_auto = 1;
|
||||
|
||||
if (cfd->view->override_auto_apply)
|
||||
{
|
||||
|
@ -360,23 +361,31 @@ _e_config_dialog_cb_basic(void *data, void *data2)
|
|||
_e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_config_dialog_changed(E_Config_Dialog *cfd)
|
||||
{
|
||||
if (!cfd->hide_buttons)
|
||||
{
|
||||
cfd->cfg_changed = 1;
|
||||
e_dialog_button_disable_num_set(cfd->dia, 0, 0);
|
||||
e_dialog_button_disable_num_set(cfd->dia, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cfd->auto_apply_timer)
|
||||
ecore_timer_del(cfd->auto_apply_timer);
|
||||
cfd->auto_apply_timer = ecore_timer_add(0.5, _e_config_dialog_cb_auto_apply_timer, cfd);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_config_dialog_cb_changed(void *data, Evas_Object *obj)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
|
||||
|
||||
cfd = data;
|
||||
if (!cfd->hide_buttons)
|
||||
{
|
||||
cfd->cfg_changed = 1;
|
||||
e_dialog_button_disable_num_set(cfd->dia, 0, 0);
|
||||
e_dialog_button_disable_num_set(cfd->dia, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cfd->auto_apply_timer) ecore_timer_del(cfd->auto_apply_timer);
|
||||
cfd->auto_apply_timer = ecore_timer_add(0.5, _e_config_dialog_cb_auto_apply_timer, cfd);
|
||||
}
|
||||
if (cfd->cfg_changed_auto)
|
||||
_e_config_dialog_changed(data);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -393,3 +402,40 @@ _e_config_dialog_cb_close(void *data, E_Dialog *dia)
|
|||
if (ok)
|
||||
e_util_defer_object_del(E_OBJECT(cfd));
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_config_dialog_changed_auto_set(E_Config_Dialog *cfd, unsigned char value)
|
||||
{
|
||||
if (!cfd)
|
||||
return;
|
||||
|
||||
cfd->cfg_changed_auto = !!value;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_config_dialog_changed_set(E_Config_Dialog *cfd, unsigned char value)
|
||||
{
|
||||
if (!cfd)
|
||||
return;
|
||||
|
||||
cfd->cfg_changed = !!value;
|
||||
|
||||
if (cfd->cfg_changed)
|
||||
_e_config_dialog_changed(cfd);
|
||||
else
|
||||
{
|
||||
if (!cfd->hide_buttons)
|
||||
{
|
||||
e_dialog_button_disable_num_set(cfd->dia, 0, 1);
|
||||
e_dialog_button_disable_num_set(cfd->dia, 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cfd->auto_apply_timer)
|
||||
{
|
||||
ecore_timer_del(cfd->auto_apply_timer);
|
||||
cfd->auto_apply_timer = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,14 +50,18 @@ struct _E_Config_Dialog
|
|||
int icon_size;
|
||||
E_Dialog *dia;
|
||||
void *data;
|
||||
int cfg_changed;
|
||||
int hide_buttons;
|
||||
Ecore_Timer *auto_apply_timer;
|
||||
unsigned char hide_buttons : 1;
|
||||
unsigned char cfg_changed : 1;
|
||||
unsigned char cfg_changed_auto : 1;
|
||||
};
|
||||
|
||||
EAPI E_Config_Dialog *e_config_dialog_new(E_Container *con, const char *title, const char *name, const char *class, const char *icon, int icon_size, E_Config_Dialog_View *view, void *data);
|
||||
EAPI int e_config_dialog_find(const char *name, const char *class);
|
||||
EAPI E_Config_Dialog *e_config_dialog_get(const char *name, const char *class);
|
||||
|
||||
EAPI void e_config_dialog_changed_auto_set(E_Config_Dialog *cfd, unsigned char value);
|
||||
EAPI void e_config_dialog_changed_set(E_Config_Dialog *cfd, unsigned char value);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -54,6 +54,7 @@ e_int_config_profiles(E_Container *con, const char *params __UNUSED__)
|
|||
_("Profile Selector"),
|
||||
"E", "_config_profiles_dialog",
|
||||
"enlightenment/profiles", 0, v, NULL);
|
||||
e_config_dialog_changed_auto_set(cfd, 0);
|
||||
return cfd;
|
||||
}
|
||||
|
||||
|
@ -167,15 +168,16 @@ _ilist_cb_selected(void *data)
|
|||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
const char *cur_profile;
|
||||
unsigned char v;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
cur_profile = e_config_profile_get();
|
||||
if (!strcmp (cur_profile, cfdata->sel_profile))
|
||||
e_widget_disabled_set(cfdata->o_delete, 1);
|
||||
else
|
||||
e_widget_disabled_set(cfdata->o_delete, 0);
|
||||
|
||||
v = strcmp(cur_profile, cfdata->sel_profile) == 0;
|
||||
e_widget_disabled_set(cfdata->o_delete, v);
|
||||
e_config_dialog_changed_set(cfdata->cfd, !v);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue