Add more insertion types to Gengrid.
Gengrid now has modes append, prepend, insert_before and insert_after. To see them working check the Gengrid 2 test on elementary_test. SVN revision: 53242
This commit is contained in:
parent
484d79e3c0
commit
0090ce210c
|
@ -45,6 +45,7 @@ void test_genlist5(void *data, Evas_Object *obj, void *event_info);
|
|||
void test_genlist6(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_table(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_gengrid(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_gengrid2(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_pager(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_pager_slide(void *data, Evas_Object *obj, void *event_info);
|
||||
void test_win_state(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -252,6 +253,7 @@ my_win_main(char *autorun)
|
|||
ADD_TEST("Genlist 5", test_genlist5);
|
||||
ADD_TEST("Genlist Tree", test_genlist6);
|
||||
ADD_TEST("GenGrid", test_gengrid);
|
||||
ADD_TEST("GenGrid 2", test_gengrid2);
|
||||
ADD_TEST("Checks", test_check);
|
||||
ADD_TEST("Radios", test_radio);
|
||||
ADD_TEST("Pager", test_pager);
|
||||
|
|
|
@ -8,6 +8,19 @@ typedef struct _Testitem
|
|||
int onoff;
|
||||
} Testitem;
|
||||
|
||||
static const char *img[9] =
|
||||
{
|
||||
"panel_01.jpg",
|
||||
"plant_01.jpg",
|
||||
"rock_01.jpg",
|
||||
"rock_02.jpg",
|
||||
"sky_01.jpg",
|
||||
"sky_02.jpg",
|
||||
"sky_03.jpg",
|
||||
"sky_04.jpg",
|
||||
"wood_01.jpg",
|
||||
};
|
||||
|
||||
static Elm_Gengrid_Item_Class gic;
|
||||
|
||||
static void
|
||||
|
@ -125,18 +138,6 @@ test_gengrid(void *data, Evas_Object *obj, void *event_info)
|
|||
static Testitem ti[144];
|
||||
int i, n;
|
||||
char buf[PATH_MAX];
|
||||
const char *img[9] =
|
||||
{
|
||||
"panel_01.jpg",
|
||||
"plant_01.jpg",
|
||||
"rock_01.jpg",
|
||||
"rock_02.jpg",
|
||||
"sky_01.jpg",
|
||||
"sky_02.jpg",
|
||||
"sky_03.jpg",
|
||||
"sky_04.jpg",
|
||||
"wood_01.jpg",
|
||||
};
|
||||
|
||||
win = elm_win_add(NULL, "grid", ELM_WIN_BASIC);
|
||||
elm_win_title_set(win, "Grid");
|
||||
|
@ -185,4 +186,135 @@ test_gengrid(void *data, Evas_Object *obj, void *event_info)
|
|||
evas_object_resize(win, 600, 600);
|
||||
evas_object_show(win);
|
||||
}
|
||||
|
||||
static void
|
||||
_before_bt_clicked(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Testitem *ti;
|
||||
Evas_Object *grid = data;
|
||||
Elm_Gengrid_Item *sel;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
sel = elm_gengrid_selected_item_get(grid);
|
||||
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
|
||||
ti = malloc(sizeof(*ti));
|
||||
ti->mode = 0;
|
||||
ti->path = eina_stringshare_add(buf);
|
||||
ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_after_bt_clicked(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Testitem *ti;
|
||||
Evas_Object *grid = data;
|
||||
Elm_Gengrid_Item *sel;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
sel = elm_gengrid_selected_item_get(grid);
|
||||
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
|
||||
ti = malloc(sizeof(*ti));
|
||||
ti->mode = 0;
|
||||
ti->path = eina_stringshare_add(buf);
|
||||
ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_prepend_bt_clicked(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Testitem *ti;
|
||||
Evas_Object *grid = data;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
|
||||
ti = malloc(sizeof(*ti));
|
||||
ti->mode = 0;
|
||||
ti->path = eina_stringshare_add(buf);
|
||||
ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_append_bt_clicked(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Testitem *ti;
|
||||
Evas_Object *grid = data;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/images/%s", PACKAGE_DATA_DIR, img[rand() % 9]);
|
||||
ti = malloc(sizeof(*ti));
|
||||
ti->mode = 0;
|
||||
ti->path = eina_stringshare_add(buf);
|
||||
ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
test_gengrid2(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Object *win, *bg, *grid, *bx, *hbx, *bt;
|
||||
|
||||
win = elm_win_add(NULL, "grid2", ELM_WIN_BASIC);
|
||||
elm_win_title_set(win, "Grid2");
|
||||
elm_win_autodel_set(win, 1);
|
||||
|
||||
bg = elm_bg_add(win);
|
||||
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_win_resize_object_add(win, bg);
|
||||
evas_object_show(bg);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_win_resize_object_add(win, bx);
|
||||
evas_object_show(bx);
|
||||
|
||||
grid = elm_gengrid_add(win);
|
||||
elm_gengrid_item_size_set(grid, 150, 150);
|
||||
elm_gengrid_horizontal_set(grid, EINA_FALSE);
|
||||
elm_gengrid_multi_select_set(grid, EINA_FALSE);
|
||||
evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
|
||||
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_min_set(grid, 600, 500);
|
||||
elm_box_pack_end(bx, grid);
|
||||
evas_object_show(grid);
|
||||
|
||||
hbx = elm_box_add(win);
|
||||
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_box_horizontal_set(hbx, EINA_TRUE);
|
||||
elm_box_pack_end(bx, hbx);
|
||||
evas_object_show(hbx);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_button_label_set(bt, "Append");
|
||||
evas_object_smart_callback_add(bt, "clicked", _append_bt_clicked, grid);
|
||||
elm_box_pack_end(hbx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_button_label_set(bt, "Prepend");
|
||||
evas_object_smart_callback_add(bt, "clicked", _prepend_bt_clicked, grid);
|
||||
elm_box_pack_end(hbx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_button_label_set(bt, "Insert before");
|
||||
evas_object_smart_callback_add(bt, "clicked", _before_bt_clicked, grid);
|
||||
elm_box_pack_end(hbx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_button_label_set(bt, "Insert after");
|
||||
evas_object_smart_callback_add(bt, "clicked", _after_bt_clicked, grid);
|
||||
elm_box_pack_end(hbx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
gic.item_style = "default";
|
||||
gic.func.label_get = grid_label_get;
|
||||
gic.func.icon_get = grid_icon_get;
|
||||
gic.func.state_get = grid_state_get;
|
||||
gic.func.del = grid_del;
|
||||
|
||||
evas_object_resize(win, 600, 600);
|
||||
evas_object_show(win);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -708,7 +708,10 @@ extern "C" {
|
|||
EAPI Elm_Gengrid_Item *elm_gengrid_selected_item_get(const Evas_Object *obj);
|
||||
EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj);
|
||||
EAPI const Eina_List *elm_gengrid_items_get(const Evas_Object *obj);
|
||||
EAPI Elm_Gengrid_Item *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gcc, const void *data, Evas_Smart_Cb func, const void *func_data);
|
||||
EAPI Elm_Gengrid_Item *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data);
|
||||
EAPI Elm_Gengrid_Item *elm_gengrid_item_prepend(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data);
|
||||
EAPI Elm_Gengrid_Item *elm_gengrid_item_insert_before(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, const Elm_Gengrid_Item *relative, Evas_Smart_Cb func, const void *func_data);
|
||||
EAPI Elm_Gengrid_Item *elm_gengrid_item_insert_after(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, const Elm_Gengrid_Item *relative, Evas_Smart_Cb func, const void *func_data);
|
||||
EAPI void elm_gengrid_item_show(Elm_Gengrid_Item *item);
|
||||
EAPI void elm_gengrid_item_bring_in(Elm_Gengrid_Item *item);
|
||||
/* smart callbacks called:
|
||||
|
|
|
@ -1472,14 +1472,17 @@ elm_gengrid_align_get(const Evas_Object *obj, double *align_x, double *align_y)
|
|||
* @param func_data Data passed to @p func above.
|
||||
* @return A handle to the item added or NULL if not possible.
|
||||
*
|
||||
* @see elm_gengrid_item_prepend()
|
||||
* @see elm_gengrid_item_insert_before()
|
||||
* @see elm_gengrid_item_insert_after()
|
||||
* @see elm_gengrid_item_del()
|
||||
*
|
||||
* @ingroup Gengrid
|
||||
*/
|
||||
EAPI Elm_Gengrid_Item *
|
||||
elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic,
|
||||
const void *data, Evas_Smart_Cb func,
|
||||
const void *func_data)
|
||||
const void *data, Evas_Smart_Cb func,
|
||||
const void *func_data)
|
||||
{
|
||||
Elm_Gengrid_Item *item;
|
||||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
|
@ -1488,7 +1491,6 @@ elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic,
|
|||
|
||||
item = _item_create(wd, gic, data, func, func_data);
|
||||
if (!item) return NULL;
|
||||
|
||||
wd->items = eina_list_append(wd->items, item);
|
||||
|
||||
if (wd->calc_job) ecore_job_del(wd->calc_job);
|
||||
|
@ -1497,6 +1499,129 @@ elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic,
|
|||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add item at start of the Gengrid.
|
||||
*
|
||||
* This adds an item to the beginning of the grid.
|
||||
*
|
||||
* @param obj The Gengrid object.
|
||||
* @param gic The item class for the item.
|
||||
* @param data The item data.
|
||||
* @param func Convenience function called when item is selected.
|
||||
* @param func_data Data passed to @p func above.
|
||||
* @return A handle to the item added or NULL if not possible.
|
||||
*
|
||||
* @see elm_gengrid_item_append()
|
||||
* @see elm_gengrid_item_insert_before()
|
||||
* @see elm_gengrid_item_insert_after()
|
||||
* @see elm_gengrid_item_del()
|
||||
*
|
||||
* @ingroup Gengrid
|
||||
*/
|
||||
EAPI Elm_Gengrid_Item *
|
||||
elm_gengrid_item_prepend(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic,
|
||||
const void *data, Evas_Smart_Cb func,
|
||||
const void *func_data)
|
||||
{
|
||||
Elm_Gengrid_Item *item;
|
||||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return NULL;
|
||||
|
||||
item = _item_create(wd, gic, data, func, func_data);
|
||||
if (!item) return NULL;
|
||||
wd->items = eina_list_prepend(wd->items, item);
|
||||
|
||||
if (wd->calc_job) ecore_job_del(wd->calc_job);
|
||||
wd->calc_job = ecore_job_add(_calc_job, wd);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert and item before another in the Gengrid.
|
||||
*
|
||||
* This inserts an item before another in the grid.
|
||||
*
|
||||
* @param obj The Gengrid object.
|
||||
* @param gic The item class for the item.
|
||||
* @param data The item data.
|
||||
* @param relative The item to which insert before.
|
||||
* @param func Convenience function called when item is selected.
|
||||
* @param func_data Data passed to @p func above.
|
||||
* @return A handle to the item added or NULL if not possible.
|
||||
*
|
||||
* @see elm_gengrid_item_append()
|
||||
* @see elm_gengrid_item_prepend()
|
||||
* @see elm_gengrid_item_insert_after()
|
||||
* @see elm_gengrid_item_del()
|
||||
*
|
||||
* @ingroup Gengrid
|
||||
*/
|
||||
EAPI Elm_Gengrid_Item *
|
||||
elm_gengrid_item_insert_before(Evas_Object *obj,
|
||||
const Elm_Gengrid_Item_Class *gic,
|
||||
const void *data,
|
||||
const Elm_Gengrid_Item *relative,
|
||||
Evas_Smart_Cb func, const void *func_data)
|
||||
{
|
||||
Elm_Gengrid_Item *item;
|
||||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return NULL;
|
||||
|
||||
item = _item_create(wd, gic, data, func, func_data);
|
||||
if (!item) return NULL;
|
||||
wd->items = eina_list_prepend_relative(wd->items, item, relative);
|
||||
|
||||
if (wd->calc_job) ecore_job_del(wd->calc_job);
|
||||
wd->calc_job = ecore_job_add(_calc_job, wd);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert and item after another in the Gengrid.
|
||||
*
|
||||
* This inserts an item after another in the grid.
|
||||
*
|
||||
* @param obj The Gengrid object.
|
||||
* @param gic The item class for the item.
|
||||
* @param data The item data.
|
||||
* @param relative The item to which insert after.
|
||||
* @param func Convenience function called when item is selected.
|
||||
* @param func_data Data passed to @p func above.
|
||||
* @return A handle to the item added or NULL if not possible.
|
||||
*
|
||||
* @see elm_gengrid_item_append()
|
||||
* @see elm_gengrid_item_prepend()
|
||||
* @see elm_gengrid_item_insert_before()
|
||||
* @see elm_gengrid_item_del()
|
||||
*
|
||||
* @ingroup Gengrid
|
||||
*/
|
||||
EAPI Elm_Gengrid_Item *
|
||||
elm_gengrid_item_insert_after(Evas_Object *obj,
|
||||
const Elm_Gengrid_Item_Class *gic,
|
||||
const void *data,
|
||||
const Elm_Gengrid_Item *relative,
|
||||
Evas_Smart_Cb func, const void *func_data)
|
||||
{
|
||||
Elm_Gengrid_Item *item;
|
||||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return NULL;
|
||||
|
||||
item = _item_create(wd, gic, data, func, func_data);
|
||||
if (!item) return NULL;
|
||||
wd->items = eina_list_append_relative(wd->items, item, relative);
|
||||
|
||||
if (wd->calc_job) ecore_job_del(wd->calc_job);
|
||||
wd->calc_job = ecore_job_add(_calc_job, wd);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a item from the Gengrid.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue