initial config dialog for collection

suff mentioned in last commit msg


SVN revision: 49263
This commit is contained in:
Hannes Janetzek 2010-05-28 23:02:27 +00:00
parent 9e581982f7
commit 249e926a61
10 changed files with 218 additions and 106 deletions

View File

@ -965,7 +965,8 @@ _plugins_init(const Evry_API *api)
if (!evry->api_version_check(EVRY_API_VERSION))
return EINA_FALSE;
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP,
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"),
"system-run", EVRY_TYPE_APP,
_begin, _finish, _fetch, NULL);
p->complete = &_complete;
p->config_path = "extensions/everything-apps";
@ -973,7 +974,8 @@ _plugins_init(const Evry_API *api)
_plugins = eina_list_append(_plugins, p);
p = EVRY_PLUGIN_NEW(Plugin, N_("Exebuf"), NULL, EVRY_TYPE_APP,
p = EVRY_PLUGIN_NEW(Plugin, N_("Exebuf"),
"system-run", EVRY_TYPE_APP,
_begin_exe, _finish_exe, _fetch_exe, NULL);
p->complete = &_complete;
p->config_path = "extensions/everything-apps";
@ -981,14 +983,16 @@ _plugins_init(const Evry_API *api)
if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 3))
p->config->min_query = 5;
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP,
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"),
"system-run", EVRY_TYPE_APP,
_begin_mime, _finish, _fetch, NULL);
p->complete = &_complete;
p->config_path = "extensions/everything-apps";
evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 1);
_plugins = eina_list_append(_plugins, p);
p = EVRY_PLUGIN_NEW(Plugin, N_("Open With..."), NULL, EVRY_TYPE_APP,
p = EVRY_PLUGIN_NEW(Plugin, N_("Open With..."),
"system-run", EVRY_TYPE_APP,
_begin_mime, _finish_mime, _fetch_mime, NULL);
p->config_path = "extensions/everything-apps";
evry->plugin_register(p, EVRY_PLUGIN_ACTION, 1);

View File

@ -649,8 +649,8 @@ _begin(Evry_Plugin *plugin, const Evry_Item *it)
{
/* provide subject */
EVRY_PLUGIN_INSTANCE(p, plugin);
p->min_query = plugin->config->min_query;
p->parent = EINA_FALSE;
if (_conf->show_homedir)
p->directory = eina_stringshare_add(e_user_homedir_get());
@ -823,6 +823,9 @@ _fetch(Evry_Plugin *plugin, const char *input)
if (input && !p->command)
p->input = eina_stringshare_add(input);
if (!p->parent)
p->min_query = plugin->config->min_query;
if ((p->command) || (!p->min_query) || (len >= p->min_query))
_append_files(p);

View File

@ -6,8 +6,16 @@
#include "e_mod_main.h"
#include "evry_api.h"
typedef struct _Plugin Plugin;
typedef struct _Settings_Item Settings_Item;
struct _Plugin
{
Evry_Plugin base;
Eina_List *items;
Eina_List *categories;
};
struct _Settings_Item
{
Evry_Item base;
@ -16,22 +24,27 @@ struct _Settings_Item
E_Configure_It *eci;
};
static const Evry_API *evry = NULL;
static Evry_Module *evry_module = NULL;
static Evry_Plugin *p;
static Evry_Action *act;
static Eina_List *items = NULL;
static Evry_Type E_SETTINGS;
static void
_finish(Evry_Plugin *p)
_finish(Evry_Plugin *plugin)
{
Evry_Item *it;
Settings_Item *it;
GET_PLUGIN(p, plugin);
EVRY_PLUGIN_ITEMS_CLEAR(p);
EINA_LIST_FREE(items, it)
evry->item_free(it);
EINA_LIST_FREE(p->items, it)
EVRY_ITEM_FREE(it);
EINA_LIST_FREE(p->categories, it)
EVRY_ITEM_FREE(it);
E_FREE(p);
}
static Evas_Object *
@ -40,50 +53,110 @@ _icon_get(Evry_Item *item, Evas *e)
Evas_Object *o;
Settings_Item *it = (Settings_Item *) item;
if (it->eci->icon &&
if (it->eci && it->eci->icon &&
((o = evry->icon_theme_get(it->eci->icon, e)) ||
(o = e_util_icon_add(it->eci->icon, e))))
return o;
if (it->ecat->icon &&
((o = evry->icon_theme_get(it->ecat->icon, e)) ||
(o = e_util_icon_add(it->ecat->icon, e))))
return o;
return NULL;
}
static Evry_Plugin *
_begin(Evry_Plugin *p, const Evry_Item *item __UNUSED__)
_browse(Evry_Plugin *plugin, const Evry_Item *item)
{
Settings_Item *it;
Eina_List *l, *ll;
E_Configure_Cat *ecat;
E_Configure_It *eci;
Plugin *p;
Eina_List *l;
Settings_Item *it, *it2;
EINA_LIST_FOREACH(e_configure_registry, l, ecat)
{
if ((ecat->pri < 0) || (!ecat->items)) continue;
if (!strcmp(ecat->cat, "system")) continue;
if (!CHECK_TYPE(item, E_SETTINGS))
return NULL;
EINA_LIST_FOREACH(ecat->items, ll, eci)
{
if (eci->pri < 0) continue;
it = EVRY_ITEM_NEW(Settings_Item, p, eci->label, _icon_get, NULL);
it->eci = eci;
it->ecat = ecat;
EVRY_ITEM_DETAIL_SET(it, ecat->label);
it = (Settings_Item *) item;
EVRY_PLUGIN_INSTANCE(p, plugin);
items = eina_list_append(items, it);
GET_PLUGIN(parent, item->plugin);
EINA_LIST_FOREACH(parent->items, l, it2)
{
if (it2->ecat == it->ecat)
{
EVRY_ITEM_REF(it2);
p->items = eina_list_append(p->items, it2);
}
}
return p;
return EVRY_PLUGIN(p);
}
static Evry_Plugin *
_begin(Evry_Plugin *plugin, const Evry_Item *item __UNUSED__)
{
Plugin *p;
EVRY_PLUGIN_INSTANCE(p, plugin);
return EVRY_PLUGIN(p);
}
static int
_fetch(Evry_Plugin *p, const char *input)
_fetch(Evry_Plugin *plugin, const char *input)
{
EVRY_PLUGIN_ITEMS_CLEAR(p);
if (!input) return 0;
int len = input ? strlen(input) : 0;
return EVRY_PLUGIN_ITEMS_ADD(p, items, input, 1, 1);
GET_PLUGIN(p, plugin);
EVRY_PLUGIN_ITEMS_CLEAR(p);
if (len < plugin->config->min_query)
return 0;
if (!p->categories && !p->items)
{
Settings_Item *it;
Eina_List *l, *ll;
E_Configure_Cat *ecat;
E_Configure_It *eci;
EINA_LIST_FOREACH(e_configure_registry, l, ecat)
{
if ((ecat->pri < 0) || (!ecat->items)) continue;
if (!strcmp(ecat->cat, "system")) continue;
it = EVRY_ITEM_NEW(Settings_Item, p, ecat->label, _icon_get, NULL);
it->ecat = ecat;
EVRY_ITEM(it)->browseable = EINA_TRUE;
p->categories = eina_list_append(p->categories, it);
EINA_LIST_FOREACH(ecat->items, ll, eci)
{
if (eci->pri < 0) continue;
it = EVRY_ITEM_NEW(Settings_Item, p, eci->label, _icon_get, NULL);
it->eci = eci;
it->ecat = ecat;
EVRY_ITEM_DETAIL_SET(it, ecat->label);
p->items = eina_list_append(p->items, it);
}
}
}
EVRY_PLUGIN_ITEMS_ADD(p, p->categories, input, 1, 1);
if (input || !p->categories)
return EVRY_PLUGIN_ITEMS_ADD(p, p->items, input, 1, 1);
}
static int
_action_check(Evry_Action *act, const Evry_Item *item)
{
return !!(((Settings_Item*)item)->eci);
}
static int
@ -112,16 +185,19 @@ _plugins_init(const Evry_API *_api)
if (!evry->api_version_check(EVRY_API_VERSION))
return EINA_FALSE;
p = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Settings"), "preferences-desktop",
evry->type_register("E_SETTINGS"),
E_SETTINGS = evry->type_register("E_SETTINGS");
p = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Settings"),
"preferences-desktop", E_SETTINGS,
_begin, _finish, _fetch, NULL);
p->browse = &_browse;
evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 10);
act = EVRY_ACTION_NEW(N_("Show Dialog"),
evry->type_register("E_SETTINGS"), 0,
"preferences-advanced", _action, NULL);
act = EVRY_ACTION_NEW(N_("Show Dialog"), E_SETTINGS, 0,
"preferences-advanced", _action, _action_check);
/* p->actions = eina_list_append(p->actions, act); */
evry->action_register(act, 0);
return EINA_TRUE;
@ -134,7 +210,7 @@ _plugins_shutdown(void)
EVRY_PLUGIN_FREE(p);
evry->action_free(act);
EVRY_ACTION_FREE(act);
evry_module->active = EINA_FALSE;
}

View File

@ -131,8 +131,17 @@ _get_borderlist(Plugin *p)
_border_item_add(p, bd);
}
static Evry_Plugin *
_begin(Evry_Plugin *plugin, const Evry_Item *item __UNUSED__)
{
Plugin *p;
EVRY_PLUGIN_INSTANCE(p, plugin);
return EVRY_PLUGIN(p);
}
static void
_cleanup(Evry_Plugin *plugin)
_finish(Evry_Plugin *plugin)
{
Ecore_Event_Handler *h;
Border_Item *bi;
@ -148,6 +157,8 @@ _cleanup(Evry_Plugin *plugin)
EINA_LIST_FREE(p->handlers, h)
ecore_event_handler_del(h);
E_FREE(p);
}
static int
@ -402,7 +413,7 @@ _plugins_init(const Evry_API *_api)
_plug = EVRY_PLUGIN_NEW(Plugin, N_("Windows"),
"preferences-system-windows",
EVRY_TYPE_BORDER,
NULL, _cleanup, _fetch, NULL);
_begin, _finish, _fetch, NULL);
_plug->transient = EINA_TRUE;
if (evry->plugin_register(_plug, EVRY_PLUGIN_SUBJECT, 2))
{

View File

@ -374,6 +374,7 @@ EAPI void *e_modapi_init (E_Module *m);
EAPI int e_modapi_shutdown (E_Module *m);
EAPI int e_modapi_save (E_Module *m);
EAPI E_Config_Dialog *evry_config_dialog(E_Container *con, const char *params);
EAPI E_Config_Dialog *evry_collection_conf_dialog(E_Container *con, const char *params);
EAPI extern E_Module_Api e_modapi;

View File

@ -1714,8 +1714,6 @@ evry_browse_item(Evry_Item *it)
{
if ((p->browse) && (pp = p->browse(p, it)))
{
printf("append %s\n", pp->name);
plugins = eina_list_append(plugins, pp);
}
}
@ -1724,7 +1722,6 @@ evry_browse_item(Evry_Item *it)
if ((!(plugins) && (it->plugin->browse)) &&
(pp = it->plugin->browse(it->plugin, it)))
{
printf("append 2%s\n", pp->name);
plugins = eina_list_append(plugins, pp);
}

View File

@ -33,6 +33,8 @@ struct _Plugin_Page
int enabled;
int min_query;
Plugin_Config *cur;
Eina_Bool collection;
};
struct _E_Config_Dialog_Data
@ -228,30 +230,31 @@ _fill_list(Eina_List *plugins, Evas_Object *obj, int enabled __UNUSED__)
}
static void
_plugin_move(Eina_List *plugins, Evas_Object *list, int dir)
_plugin_move(Plugin_Page *page, int dir)
{
Evas_Object *list;
int sel;
Eina_List *l1, *l2;
Eina_List *plugins, *l1, *l2;
sel = e_widget_ilist_selected_get(list);
sel = e_widget_ilist_selected_get(page->list);
if ((sel >= 1 && dir > 0) || (sel >= 2 && dir < 0))
if ((page->collection) || (sel >= 1 && dir > 0) || (sel >= 2 && dir < 0))
{
Plugin_Config *pc;
int prio = 0;
l1 = eina_list_nth_list(plugins, sel);
l2 = eina_list_nth_list(plugins, sel + dir);
l1 = eina_list_nth_list(page->configs, sel);
l2 = eina_list_nth_list(page->configs, sel + dir);
if (!l1 || !l2) return;
pc = l1->data;
l1->data = l2->data;
l2->data = pc;
_fill_list(plugins, list, 0);
e_widget_ilist_selected_set(list, sel + dir);
_fill_list(page->configs, page->list, 0);
e_widget_ilist_selected_set(page->list, sel + dir);
EINA_LIST_FOREACH(plugins, l1, pc)
EINA_LIST_FOREACH(page->configs, l1, pc)
pc->priority = prio++;
}
}
@ -259,13 +262,13 @@ _plugin_move(Eina_List *plugins, Evas_Object *list, int dir)
static void
_plugin_move_up_cb(void *data, void *data2)
{
_plugin_move(data2, data, -1);
_plugin_move(data, -1);
}
static void
_plugin_move_down_cb(void *data, void *data2)
{
_plugin_move(data2, data, 1);
_plugin_move(data, 1);
}
static void
@ -340,12 +343,14 @@ static void
_plugin_config_cb(void *data, void *data2)
{
Plugin_Page *page = data;
if (!page->cur->plugin)
return;
Evry_Plugin *p = page->cur->plugin;
if (!p) return;
printf(" %s\n", p->name);
e_configure_registry_call(page->cur->plugin->config_path,
e_configure_registry_call(p->config_path,
e_container_current_get(e_manager_current_get()),
NULL);
p->name);
}
static Evas_Object *
@ -362,12 +367,12 @@ _create_plugin_page(E_Config_Dialog_Data *cfdata, Evas *e, Plugin_Page *page)
o = e_widget_button_add(e, _("Move Up"), NULL,
_plugin_move_up_cb,
page->list, page->configs);
page, NULL);
e_widget_framelist_object_append(of, o);
o = e_widget_button_add(e, _("Move Down"), NULL,
_plugin_move_down_cb,
page->list, page->configs);
page, NULL);
e_widget_framelist_object_append(of, o);
ob = e_widget_table_add(e, 0);
e_widget_table_object_append(ob, of, 0, 0, 1, 3, 1, 1, 1, 0);
@ -597,36 +602,40 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdat
/***************************************************************************/
#if 0
static void *_cat_create_data(E_Config_Dialog *cfd);
static void _cat_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_cat_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static int _cat_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static E_Config_Dialog *
evry_categories_conf_dialog(E_Container *con, const char *params)
EAPI E_Config_Dialog *
evry_collection_conf_dialog(E_Container *con, const char *params)
{
E_Config_Dialog *cfd = NULL;
E_Config_Dialog_View *v = NULL;
char buf[4096];
Evry_Plugin *p;
char title[4096];
if (e_config_dialog_find(_config_path, _config_path))
if (!(p = evry_plugin_find(params)))
return NULL;
if (e_config_dialog_find(p->config_path, p->config_path))
return NULL;
v = E_NEW(E_Config_Dialog_View, 1);
if (!v) return NULL;
v->create_cfdata = _create_data;
v->free_cfdata = _free_data;
v->basic.create_widgets = _basic_create_widgets;
v->basic.apply_cfdata = _basic_apply;
v->create_cfdata = _cat_create_data;
v->free_cfdata = _cat_free_data;
v->basic.create_widgets = _cat_basic_create_widgets;
v->basic.apply_cfdata = _cat_basic_apply;
snprintf(buf, sizeof(buf), "%s/e-module.edj", _conf->module->dir);
snprintf(title, sizeof(title), "%s: %s", _("Everything Collection"), p->name);
cfd = e_config_dialog_new(con, title, p->config_path, p->config_path,
EVRY_ITEM(p)->icon, 0, v, p);
cfd = e_config_dialog_new(con, _("Everything Categories"),
_config_path, _config_path, buf, 0, v, NULL);
_conf->cfd = cfd;
/* FIXME free dialogs on shutdown
_conf->cfd = cfd; */
return cfd;
}
@ -634,15 +643,11 @@ static void *
_cat_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata = NULL;
Evry_Plugin *p = cfd->data;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
cfdata->page[0].configs = eina_list_clone(_conf->plugins);
/* #define CP(_name) cfdata->_name = strdup(_conf->_name);
* #define C(_name) cfdata->_name = _conf->_name;
*
* #undef CP
* #undef C */
cfdata->page[0].collection = EINA_TRUE;
cfdata->page[0].configs = eina_list_clone(p->config->plugins);
return cfdata;
}
@ -651,7 +656,7 @@ _cat_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
if (cfdata->page[0].configs) eina_list_free(cfdata->page[0].configs);
_conf->cfd = NULL;
/* _conf->cfd = NULL; */
E_FREE(cfdata);
}
@ -660,8 +665,12 @@ _cat_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
int i = 0;
Plugin_Config *pc;
Evry_Plugin *p = cfd->data;
_conf->plugins = eina_list_clone(cfdata->page[0].configs);
if (p->config->plugins)
eina_list_free(p->config->plugins);
p->config->plugins = eina_list_clone(cfdata->page[0].configs);
pc = cfdata->page[i].cur;
@ -683,16 +692,6 @@ _cat_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
pc->min_query = cfdata->page[i].min_query;
}
/* #define CP(_name) \
* if (_conf->_name) \
* eina_stringshare_del(_conf->_name); \
* _conf->_name = eina_stringshare_add(cfdata->_name);
* #define C(_name) _conf->_name = cfdata->_name;
*
* #undef CP
* #undef C */
e_config_domain_save(_config_domain, _conf_edd, _conf);
e_config_save_queue();
return 1;
}
@ -738,4 +737,3 @@ _cat_basic_create_widgets(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *c
return otb;
}
#endif

View File

@ -50,8 +50,8 @@ _begin(Evry_Plugin *plugin, const Evry_Item *item)
Evry_Plugin *pp;
Plugin_Config *pc;
Evry_Item *it;
Plugin *p;
Eina_List *l;
Plugin *p;
EVRY_PLUGIN_INSTANCE(p, plugin);
@ -103,9 +103,14 @@ evry_plug_collection_init(void)
Evry_Plugin *p;
Plugin_Config *pc, *pcc;
Eina_List *l;
char path[4096];
char title[4096];
COLLECTION_PLUGIN = evry_type_register("COLLECTION_PLUGIN");
e_configure_registry_category_add
("extensions", 80, _("Extensions"), NULL, "preferences-extensions");
EINA_LIST_FOREACH(evry_conf->collections, l, pc)
{
p = EVRY_PLUGIN_NEW(Evry_Plugin, N_(pc->name),
@ -118,6 +123,16 @@ evry_plug_collection_init(void)
{
p->config->aggregate = EINA_FALSE;
}
snprintf(path, sizeof(path), "extensions/everything-%s", p->name);
snprintf(title, sizeof(title), "Everything %s", p->name);
e_configure_registry_item_add
(path, 110, title, NULL, NULL/*icon*/, evry_collection_conf_dialog);
p->config_path = eina_stringshare_add(path);
plugins = eina_list_append(plugins, p);
}
@ -128,7 +143,12 @@ void
evry_plug_collection_shutdown(void)
{
Evry_Plugin *p;
EINA_LIST_FREE(plugins, p)
EVRY_PLUGIN_FREE(p);
{
e_configure_registry_item_del(p->config_path);
eina_stringshare_del(p->config_path);
EVRY_PLUGIN_FREE(p);
}
}

View File

@ -226,7 +226,6 @@ evry_plugin_find(const char *name)
EINA_LIST_FOREACH(evry_conf->conf_subjects, l, pc)
{
if (!pc->enabled) continue;
if (!pc->plugin) continue;
if (pc->name == n)
break;

View File

@ -983,6 +983,9 @@ _view_update(Evry_View *view)
}
else
{
if (v_it->selected && v_it->frame)
edje_object_signal_emit
(v_it->frame,"e,state,unselected", "e");
v_it->selected = EINA_FALSE;
}
break;