Better settings in menu.

Instead of disabling nice quick access menus (by disabling config/1
augmentation), just add itself as the last submenu named "All", then
with entries.

This looks fine and I guess can even be the default.



SVN revision: 46688
This commit is contained in:
Gustavo Sverzut Barbieri 2010-03-01 12:50:44 +00:00
parent 3d895520f6
commit 6cae71ebda
2 changed files with 58 additions and 53 deletions

View File

@ -1,7 +1,7 @@
#include "e.h"
#include "e_mod_main.h"
struct _E_Config_Dialog_Data
struct _E_Config_Dialog_Data
{
int menu_augmentation;
};
@ -13,7 +13,7 @@ static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dia
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
E_Config_Dialog *
e_int_config_conf_module(E_Container *con, const char *params)
e_int_config_conf_module(E_Container *con, const char *params)
{
E_Config_Dialog *cfd = NULL;
E_Config_Dialog_View *v = NULL;
@ -31,7 +31,7 @@ e_int_config_conf_module(E_Container *con, const char *params)
v->basic.apply_cfdata = _basic_apply;
snprintf(buf, sizeof(buf), "%s/e-module-conf.edj", conf->module->dir);
cfd = e_config_dialog_new(con, _("Configuration Panel"), "Conf",
cfd = e_config_dialog_new(con, _("Configuration Panel"), "Conf",
"advanced/conf", buf, 0, v, NULL);
conf->cfd = cfd;
@ -39,7 +39,7 @@ e_int_config_conf_module(E_Container *con, const char *params)
}
static void *
_create_data(E_Config_Dialog *cfd)
_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata = NULL;
@ -48,21 +48,21 @@ _create_data(E_Config_Dialog *cfd)
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
conf->cfd = NULL;
E_FREE(cfdata);
}
static void
_fill_data(E_Config_Dialog_Data *cfdata)
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
cfdata->menu_augmentation = conf->menu_augmentation;
}
static Evas_Object *
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o = NULL, *of = NULL, *ow = NULL;
@ -70,7 +70,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
of = e_widget_framelist_add(evas, _("General"), 0);
e_widget_framelist_content_align_set(of, 0.0, 0.0);
ow = e_widget_check_add(evas, _("Show configuration panel contents in Settings menu"),
ow = e_widget_check_add(evas, _("Show configurations in menu"),
&(cfdata->menu_augmentation));
e_widget_framelist_object_append(of, ow);
e_widget_list_object_append(o, of, 1, 0, 0.5);
@ -78,26 +78,22 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
return o;
}
static int
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
conf->menu_augmentation = cfdata->menu_augmentation;
if (conf->aug)
{
e_int_menus_menu_augmentation_del("config/0", conf->aug);
e_int_menus_menu_augmentation_del("config/2", conf->aug);
conf->aug = NULL;
}
if (conf->menu_augmentation)
{
conf->aug =
e_int_menus_menu_augmentation_add("config/0",
e_mod_config_menu_add,
NULL, NULL, NULL);
e_int_menus_menu_augmentation_point_disabled_set("config/1", 1);
conf->aug =
e_int_menus_menu_augmentation_add
("config/2", e_mod_config_menu_add, NULL, NULL, NULL);
}
else
e_int_menus_menu_augmentation_point_disabled_set("config/1", 0);
e_config_save_queue();
return 1;

View File

@ -152,8 +152,7 @@ _config_pre_activate_cb(void *data, E_Menu *m)
Eina_List *l;
E_Menu_Item *mi;
/*XXX is this the right way to not initiate the menu a second time ?*/
if (e_menu_item_nth(m, 0)) return;
e_menu_pre_activate_callback_set(m, NULL, NULL);
EINA_LIST_FOREACH(ecat->items, l, eci)
{
@ -175,40 +174,54 @@ _config_pre_activate_cb(void *data, E_Menu *m)
}
}
/* menu item add hook */
void
e_mod_config_menu_add(void *data, E_Menu *m)
static void
_config_all_pre_activate_cb(void *data __UNUSED__, E_Menu *m)
{
E_Menu_Item *mi;
E_Menu *sub;
Eina_List *l;
const Eina_List *l;
E_Configure_Cat *ecat;
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
e_menu_pre_activate_callback_set(m, NULL, NULL);
EINA_LIST_FOREACH(e_configure_registry, l, ecat)
{
if ((ecat->pri >= 0) && (ecat->items))
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, ecat->label);
if (ecat->icon)
{
if (ecat->icon_file)
e_menu_item_icon_edje_set(mi, ecat->icon_file, ecat->icon);
else
e_util_menu_item_theme_icon_set(mi, ecat->icon);
}
E_Menu_Item *mi;
E_Menu *sub;
sub = e_menu_new();
e_menu_item_submenu_set(mi, sub);
e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat);
}
if ((ecat->pri < 0) || (!ecat->items)) continue;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, ecat->label);
if (ecat->icon)
{
if (ecat->icon_file)
e_menu_item_icon_edje_set(mi, ecat->icon_file, ecat->icon);
else
e_util_menu_item_theme_icon_set(mi, ecat->icon);
}
sub = e_menu_new();
e_menu_item_submenu_set(mi, sub);
e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat);
}
}
/* menu item add hook */
void
e_mod_config_menu_add(void *data __UNUSED__, E_Menu *m)
{
E_Menu_Item *mi;
E_Menu *sub;
e_menu_pre_activate_callback_set(m, NULL, NULL);
sub = e_menu_new();
e_menu_pre_activate_callback_set(sub, _config_all_pre_activate_cb, NULL);
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("All"));
e_menu_item_submenu_set(mi, sub);
}
/* module setup */
EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Conf" };
@ -291,12 +304,9 @@ e_modapi_init(E_Module *m)
if (conf->menu_augmentation)
{
conf->aug =
e_int_menus_menu_augmentation_add("config/0", e_mod_config_menu_add,
NULL, NULL, NULL);
e_int_menus_menu_augmentation_point_disabled_set("config/1", 1);
e_int_menus_menu_augmentation_add
("config/2", e_mod_config_menu_add, NULL, NULL, NULL);
}
else
e_int_menus_menu_augmentation_point_disabled_set("config/1", 0);
e_gadcon_provider_register(&_gadcon_class);
return m;
@ -323,9 +333,8 @@ e_modapi_shutdown(E_Module *m)
}
if (conf->aug)
{
e_int_menus_menu_augmentation_del("config/0", conf->aug);
e_int_menus_menu_augmentation_del("config/2", conf->aug);
conf->aug = NULL;
e_int_menus_menu_augmentation_point_disabled_set("config/1", 0);
}
/* remove module-supplied action */