2012-02-23 05:58:32 -08:00
# include <Elementary_Cursor.h>
# include "test.h"
2010-10-19 11:25:22 -07:00
# ifdef HAVE_CONFIG_H
2012-02-23 05:58:32 -08:00
# include "elementary_config.h"
2010-10-19 11:25:22 -07:00
# endif
2012-03-29 12:27:13 -07:00
# include <Elementary.h>
2009-09-13 21:21:52 -07:00
# ifndef ELM_LIB_QUICKLAUNCH
2012-11-27 07:21:27 -08:00
# define WEIGHT evas_object_size_hint_weight_set
# define ALIGN_ evas_object_size_hint_align_set
# define EXPAND(X) WEIGHT((X), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
# define FILL(X) ALIGN_((X), EVAS_HINT_FILL, EVAS_HINT_FILL)
Evas_Object * _elm_min_set ( Evas_Object * obj , Evas_Object * parent ,
Evas_Coord w , Evas_Coord h ) ;
2012-02-23 05:58:32 -08:00
struct _api_data
{
unsigned int state ; /* What state we are testing */
void * box ; /* Use this to get box content */
} ;
typedef struct _api_data api_data ;
enum _api_state
{
HORIZONTAL_SET ,
NO_SELECT_MODE_SET ,
COMPRESS_MODE_SET ,
BOUNCE_SET ,
HOMOGENEOUS_SET ,
SCROLLER_POLICY_SET ,
TOOLTIP_TEXT_SET ,
ITEM_CURSOR_SET ,
API_STATE_LAST
} ;
typedef enum _api_state api_state ;
static void
set_api_state ( api_data * api )
{
const Eina_List * items = elm_box_children_get ( api - > box ) ;
2012-03-29 04:09:45 -07:00
if ( ! eina_list_count ( items ) )
2012-02-23 05:58:32 -08:00
return ;
Evas_Object * gl = eina_list_nth ( items , 0 ) ; /* Genlist is the first item */
/* use elm_box_children_get() to get list of children */
switch ( api - > state )
{ /* Put all api-changes under switch */
case HORIZONTAL_SET : /* 0 */
2012-02-23 05:58:49 -08:00
elm_genlist_mode_set ( gl , ELM_LIST_LIMIT ) ;
2012-02-23 05:58:32 -08:00
break ;
case NO_SELECT_MODE_SET : /* 1 */
2012-03-07 08:01:37 -08:00
elm_genlist_select_mode_set ( gl , ELM_OBJECT_SELECT_MODE_NONE ) ;
2012-02-23 05:58:49 -08:00
elm_genlist_mode_set ( gl , ELM_LIST_SCROLL ) ; /* Back to default */
2012-02-23 05:58:32 -08:00
break ;
case COMPRESS_MODE_SET : /* 2 */
2012-03-07 08:01:37 -08:00
elm_genlist_select_mode_set ( gl , ELM_OBJECT_SELECT_MODE_DEFAULT ) ;
2012-03-07 08:07:34 -08:00
elm_genlist_mode_set ( gl , ELM_LIST_COMPRESS ) ;
2012-02-23 05:58:32 -08:00
break ;
case BOUNCE_SET : /* 3 */
2012-07-16 14:56:30 -07:00
elm_scroller_bounce_set ( gl , EINA_FALSE , EINA_FALSE ) ;
2012-02-23 05:58:32 -08:00
break ;
case HOMOGENEOUS_SET : /* 4 */
2012-07-16 14:56:30 -07:00
elm_scroller_bounce_set ( gl , EINA_TRUE , EINA_TRUE ) ; /* Back to default */
2012-02-23 05:58:32 -08:00
elm_genlist_homogeneous_set ( gl , EINA_TRUE ) ;
break ;
case SCROLLER_POLICY_SET : /* 5 */
elm_genlist_homogeneous_set ( gl , EINA_FALSE ) ; /* Back to default */
2012-07-16 14:56:30 -07:00
elm_scroller_policy_set ( gl , ELM_SCROLLER_POLICY_ON , ELM_SCROLLER_POLICY_ON ) ;
2012-02-23 05:58:32 -08:00
break ;
case TOOLTIP_TEXT_SET : /* 6 */
{
elm_genlist_item_tooltip_text_set ( elm_genlist_first_item_get ( gl ) , " Tooltip text from API " ) ;
2012-03-07 00:29:28 -08:00
elm_genlist_item_bring_in ( elm_genlist_first_item_get ( gl ) ,
ELM_GENLIST_ITEM_SCROLLTO_IN ) ;
2012-02-23 05:58:32 -08:00
}
break ;
case ITEM_CURSOR_SET : /* 7 */
elm_genlist_item_cursor_set ( elm_genlist_first_item_get ( gl ) , ELM_CURSOR_HAND2 ) ;
break ;
default :
return ;
}
}
2010-05-20 11:00:33 -07:00
2012-02-23 05:58:32 -08:00
static void
_api_bt_clicked ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data * a = data ;
char str [ 128 ] ;
2012-07-31 13:07:09 -07:00
INF ( " clicked event on API Button: api_state=<%d> " , a - > state ) ;
2012-02-23 05:58:32 -08:00
set_api_state ( a ) ;
a - > state + + ;
sprintf ( str , " Next API function (%u) " , a - > state ) ;
elm_object_text_set ( obj , str ) ;
elm_object_disabled_set ( obj , a - > state = = API_STATE_LAST ) ;
}
2010-05-20 11:00:33 -07:00
/* Hint:
2011-03-28 17:51:56 -07:00
* In this example some calls to elm_genlist_item_append ( ) are used which give the
* value of an int as ' item data ' and ' func data ' after casting into ( void * ) . For
2010-05-20 11:00:33 -07:00
* sure this works only on architectures where sizeof ( int ) = = sizeof ( void * ) .
2011-03-28 17:51:56 -07:00
* For real world usage you should hold a data structure or value in your
2010-05-20 11:00:33 -07:00
* application and then give only a pointer to this data as data pointer .
*/
2009-08-13 15:41:43 -07:00
typedef struct _Testitem
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * item ;
2009-08-13 15:41:43 -07:00
int mode ;
int onoff ;
2012-02-22 23:39:10 -08:00
Eina_Bool checked ;
2009-08-13 15:41:43 -07:00
} Testitem ;
2012-02-20 00:26:17 -08:00
static Elm_Genlist_Item_Class * itc1 ;
2011-11-30 22:15:08 -08:00
char * gl_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
char buf [ 256 ] ;
2013-02-16 19:53:02 -08:00
snprintf ( buf , sizeof ( buf ) , " Item # %i " , ( int ) ( uintptr_t ) data ) ;
2009-08-13 15:41:43 -07:00
return strdup ( buf ) ;
}
2011-10-23 19:10:35 -07:00
Evas_Object * gl_content_get ( void * data __UNUSED__ , Evas_Object * obj , const char * part )
2009-08-13 15:41:43 -07:00
{
char buf [ PATH_MAX ] ;
Evas_Object * ic = elm_icon_add ( obj ) ;
2011-01-09 22:46:59 -08:00
if ( ! strcmp ( part , " elm.swallow.end " ) )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/bubble.png " , elm_app_data_dir_get ( ) ) ;
2011-01-09 22:46:59 -08:00
else
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/logo_small.png " , elm_app_data_dir_get ( ) ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
2009-08-13 15:41:43 -07:00
evas_object_size_hint_aspect_set ( ic , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
return ic ;
}
2012-02-22 01:31:37 -08:00
2012-07-31 13:07:09 -07:00
static void on_bt_clicked ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
printf ( " button clicked \n " ) ;
}
static void on_ck_changed ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
printf ( " checkbox changed \n " ) ;
}
Evas_Object * gl_content_full_get ( void * data __UNUSED__ , Evas_Object * obj , const char * part )
{
Evas_Object * fr , * bx , * ic , * bt , * ck ;
if ( strcmp ( part , " elm.swallow.content " ) ! = 0 ) return NULL ;
fr = elm_frame_add ( obj ) ;
elm_layout_text_set ( fr , NULL , " A Frame " ) ;
bx = elm_box_add ( fr ) ;
elm_box_horizontal_set ( bx , EINA_TRUE ) ;
ic = elm_icon_add ( bx ) ;
elm_icon_standard_set ( ic , " home " ) ;
2013-01-14 04:01:34 -08:00
evas_object_size_hint_min_set ( ic , 32 * elm_config_scale_get ( ) ,
32 * elm_config_scale_get ( ) ) ;
2012-07-31 13:07:09 -07:00
evas_object_size_hint_align_set ( ic , 0.5 , EVAS_HINT_FILL ) ;
evas_object_show ( ic ) ;
elm_box_pack_end ( bx , ic ) ;
bt = elm_button_add ( bx ) ;
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_smart_callback_add ( bt , " clicked " , on_bt_clicked , NULL ) ;
elm_layout_text_set ( bt , NULL , " Click Me " ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bt ) ;
ck = elm_check_add ( bx ) ;
evas_object_size_hint_align_set ( ck , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( ck , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_smart_callback_add ( ck , " changed " , on_ck_changed , NULL ) ;
elm_layout_text_set ( ck , NULL , " some checkbox " ) ;
evas_object_show ( ck ) ;
elm_box_pack_end ( bx , ck ) ;
elm_layout_content_set ( fr , NULL , bx ) ;
2013-01-14 04:01:34 -08:00
evas_object_size_hint_min_set ( fr , 100 * elm_config_scale_get ( ) ,
100 * elm_config_scale_get ( ) ) ;
2012-07-31 13:07:09 -07:00
return fr ;
}
2010-10-19 11:25:22 -07:00
Eina_Bool gl_state_get ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
static void
gl_sel ( void * data , Evas_Object * obj , void * event_info )
{
2012-07-31 13:07:09 -07:00
printf ( " sel item data [%p] on genlist obj [%p], item pointer [%p] \n " , data , obj , event_info ) ;
2009-08-13 15:41:43 -07:00
}
2009-09-22 20:22:07 -07:00
static void
2010-10-19 11:25:22 -07:00
_move ( void * data , Evas * evas __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2009-09-22 20:22:07 -07:00
{
Evas_Object * gl = data ;
Evas_Event_Mouse_Move * ev = event_info ;
int where = 0 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli ;
2009-09-22 20:22:07 -07:00
gli = elm_genlist_at_xy_item_get ( gl , ev - > cur . canvas . x , ev - > cur . canvas . y , & where ) ;
if ( gli )
2013-03-16 23:36:30 -07:00
INF ( " <%s> over %p, where %i \n " , __func__ , elm_object_item_data_get ( gli ) , where ) ;
2009-09-22 20:22:07 -07:00
else
2013-03-16 23:36:30 -07:00
INF ( " <%s> over none, where %i \n " , __func__ , where ) ;
2009-09-22 20:22:07 -07:00
}
2009-10-10 08:59:55 -07:00
static void
2010-10-19 11:25:22 -07:00
_bt50_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-10-10 08:59:55 -07:00
{
2012-03-07 00:29:28 -08:00
elm_genlist_item_bring_in ( data , ELM_GENLIST_ITEM_SCROLLTO_IN ) ;
2009-10-10 08:59:55 -07:00
}
static void
2010-10-19 11:25:22 -07:00
_bt1500_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-10-10 08:59:55 -07:00
{
2012-03-07 00:38:32 -08:00
elm_genlist_item_bring_in ( data , ELM_GENLIST_ITEM_SCROLLTO_MIDDLE ) ;
2009-10-10 08:59:55 -07:00
}
2010-02-10 07:11:16 -08:00
static void
2010-10-19 11:25:22 -07:00
_gl_selected ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2010-02-10 07:11:16 -08:00
{
2012-07-31 13:07:09 -07:00
printf ( " selected: %p \n " , event_info ) ;
2010-02-10 07:11:16 -08:00
}
static void
2011-04-12 10:29:59 -07:00
_gl_double_clicked ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2010-02-10 07:11:16 -08:00
{
2012-07-31 13:07:09 -07:00
printf ( " double clicked: %p \n " , event_info ) ;
2010-02-10 07:11:16 -08:00
}
2010-03-27 18:44:56 -07:00
static void
2010-10-19 11:25:22 -07:00
_gl_longpress ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2010-03-27 18:44:56 -07:00
{
2012-07-31 13:07:09 -07:00
printf ( " longpress %p \n " , event_info ) ;
2010-03-27 18:44:56 -07:00
}
2012-02-23 05:58:32 -08:00
static void
_cleanup_cb ( void * data , Evas * e __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
free ( data ) ;
}
2009-08-13 15:41:43 -07:00
void
2010-10-19 11:25:22 -07:00
test_genlist ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2012-02-23 05:58:32 -08:00
Evas_Object * win , * gl , * bt_50 , * bt_1500 , * bx , * bxx , * bt ;
2009-09-22 20:22:07 -07:00
Evas_Object * over ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli ;
2009-08-13 15:41:43 -07:00
int i ;
2012-02-23 05:58:32 -08:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
2009-08-13 15:41:43 -07:00
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist " , " Genlist " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2012-02-23 05:58:32 -08:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
bxx = elm_box_add ( win ) ;
evas_object_size_hint_weight_set ( bxx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2012-11-14 02:49:45 -08:00
elm_win_resize_object_add ( win , bxx ) ;
2012-02-23 05:58:32 -08:00
evas_object_show ( bxx ) ;
2009-08-13 15:41:43 -07:00
2009-10-10 08:59:55 -07:00
bx = elm_box_add ( win ) ;
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2012-02-23 05:58:32 -08:00
evas_object_size_hint_align_set ( bx , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
api - > box = bx ;
2009-10-10 08:59:55 -07:00
evas_object_show ( bx ) ;
2012-02-23 05:58:32 -08:00
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Next API function " ) ;
evas_object_smart_callback_add ( bt , " clicked " , _api_bt_clicked , ( void * ) api ) ;
elm_box_pack_end ( bxx , bt ) ;
elm_object_disabled_set ( bt , api - > state = = API_STATE_LAST ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bxx , bx ) ;
2009-08-13 15:41:43 -07:00
gl = elm_genlist_add ( win ) ;
2010-02-10 07:11:16 -08:00
evas_object_smart_callback_add ( gl , " selected " , _gl_selected , NULL ) ;
2011-04-12 10:29:59 -07:00
evas_object_smart_callback_add ( gl , " clicked,double " , _gl_double_clicked , NULL ) ;
2010-03-27 18:44:56 -07:00
evas_object_smart_callback_add ( gl , " longpressed " , _gl_longpress , NULL ) ;
2009-11-25 13:14:37 -08:00
// FIXME: This causes genlist to resize the horiz axis very slowly :(
// Reenable this and resize the window horizontally, then try to resize it back
2012-01-27 03:59:22 -08:00
//elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-10-10 08:59:55 -07:00
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , gl ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
2009-10-10 08:59:55 -07:00
2009-09-22 20:22:07 -07:00
over = evas_object_rectangle_add ( evas_object_evas_get ( win ) ) ;
evas_object_color_set ( over , 0 , 0 , 0 , 0 ) ;
evas_object_event_callback_add ( over , EVAS_CALLBACK_MOUSE_MOVE , _move , gl ) ;
evas_object_repeat_events_set ( over , 1 ) ;
evas_object_show ( over ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( over , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-09-22 20:22:07 -07:00
elm_win_resize_object_add ( win , over ) ;
2009-10-10 08:59:55 -07:00
2012-02-20 00:26:17 -08:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
2009-10-10 08:59:55 -07:00
bt_50 = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt_50 , " Go to 50 " ) ;
2009-10-10 08:59:55 -07:00
evas_object_show ( bt_50 ) ;
elm_box_pack_end ( bx , bt_50 ) ;
bt_1500 = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt_1500 , " Go to 1500 " ) ;
2009-10-10 08:59:55 -07:00
evas_object_show ( bt_1500 ) ;
elm_box_pack_end ( bx , bt_1500 ) ;
2012-10-10 04:03:44 -07:00
for ( i = 0 ; i < 2000 ; i + + )
2009-08-13 15:41:43 -07:00
{
2012-02-20 00:26:17 -08:00
gli = elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2010-02-10 07:11:16 -08:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2010-02-10 07:11:16 -08:00
if ( i = = 50 )
2011-06-14 21:58:14 -07:00
evas_object_smart_callback_add ( bt_50 , " clicked " , _bt50_cb , gli ) ;
2010-02-10 07:11:16 -08:00
else if ( i = = 1500 )
2011-06-14 21:58:14 -07:00
evas_object_smart_callback_add ( bt_1500 , " clicked " , _bt1500_cb , gli ) ;
2009-08-13 15:41:43 -07:00
}
2012-02-20 00:26:17 -08:00
elm_genlist_item_class_free ( itc1 ) ;
2009-08-13 15:41:43 -07:00
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
/*************/
static void
2010-10-19 11:25:22 -07:00
my_gl_clear ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
2011-11-30 06:19:29 -08:00
elm_genlist_clear ( gl ) ;
2009-08-13 15:41:43 -07:00
}
static void
2010-10-19 11:25:22 -07:00
my_gl_add ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
static int i = 0 ;
2013-05-08 04:50:05 -07:00
if ( ! itc1 )
{
ERR ( " Genlist item class should not be null. Something very bad is happening!! " ) ;
return ;
}
2012-02-20 00:26:17 -08:00
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2010-10-14 07:10:33 -07:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2009-08-13 15:41:43 -07:00
i + + ;
}
2009-08-20 10:49:04 -07:00
static void
2010-10-19 11:25:22 -07:00
my_gl_insert_before ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-20 10:49:04 -07:00
{
Evas_Object * gl = data ;
static int i = 0 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli_selected ;
2009-08-20 10:49:04 -07:00
2013-05-08 04:50:05 -07:00
if ( ! itc1 )
{
ERR ( " Genlist item class should not be null. Something very bad is happening!! " ) ;
return ;
}
2012-02-20 00:26:17 -08:00
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2009-08-20 10:49:04 -07:00
gli_selected = elm_genlist_selected_item_get ( gl ) ;
2012-01-10 19:16:50 -08:00
if ( ! gli_selected )
2011-02-21 07:46:23 -08:00
{
2012-07-31 13:07:09 -07:00
printf ( " no item selected \n " ) ;
2011-02-21 07:46:23 -08:00
return ;
}
2009-08-20 10:49:04 -07:00
2012-02-20 00:26:17 -08:00
elm_genlist_item_insert_before ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2011-01-04 22:03:43 -08:00
NULL /* parent */ ,
2010-10-14 07:10:33 -07:00
gli_selected /* item before */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2009-08-20 10:49:04 -07:00
i + + ;
}
static void
2010-10-19 11:25:22 -07:00
my_gl_insert_after ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-20 10:49:04 -07:00
{
Evas_Object * gl = data ;
static int i = 0 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli_selected ;
2009-08-20 10:49:04 -07:00
2013-05-08 04:50:05 -07:00
if ( ! itc1 )
{
ERR ( " Genlist item class should not be null. Something very bad is happening!! " ) ;
return ;
}
2012-02-20 00:26:17 -08:00
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2009-08-20 10:49:04 -07:00
gli_selected = elm_genlist_selected_item_get ( gl ) ;
2012-01-10 19:16:50 -08:00
if ( ! gli_selected )
2011-02-21 07:46:23 -08:00
{
2012-07-31 13:07:09 -07:00
printf ( " no item selected \n " ) ;
2011-02-21 07:46:23 -08:00
return ;
}
2009-08-20 10:49:04 -07:00
2012-02-20 00:26:17 -08:00
elm_genlist_item_insert_after ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2011-01-04 22:03:43 -08:00
NULL /* parent */ ,
2010-10-14 07:10:33 -07:00
gli_selected /* item after */ ,
ELM_GENLIST_ITEM_NONE ,
2011-02-21 07:46:23 -08:00
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2009-08-20 10:49:04 -07:00
i + + ;
}
2009-08-13 15:41:43 -07:00
static void
2010-10-19 11:25:22 -07:00
my_gl_del ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli = elm_genlist_selected_item_get ( gl ) ;
2009-08-13 15:41:43 -07:00
if ( ! gli )
{
2012-07-31 13:07:09 -07:00
printf ( " no item selected \n " ) ;
2011-02-21 07:46:23 -08:00
return ;
2009-08-13 15:41:43 -07:00
}
2012-01-27 03:59:22 -08:00
elm_object_item_del ( gli ) ;
2009-08-13 15:41:43 -07:00
}
static void
2010-10-19 11:25:22 -07:00
my_gl_disable ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli = elm_genlist_selected_item_get ( gl ) ;
2009-08-13 15:41:43 -07:00
if ( ! gli )
{
2012-07-31 13:07:09 -07:00
printf ( " no item selected \n " ) ;
2011-02-21 07:46:23 -08:00
return ;
2009-08-13 15:41:43 -07:00
}
2012-01-26 23:36:36 -08:00
elm_object_item_disabled_set ( gli , EINA_TRUE ) ;
elm_genlist_item_selected_set ( gli , EINA_FALSE ) ;
2009-08-13 15:41:43 -07:00
elm_genlist_item_update ( gli ) ;
}
static void
2010-10-19 11:25:22 -07:00
my_gl_update_all ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
int i = 0 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * it = elm_genlist_first_item_get ( gl ) ;
2009-08-13 15:41:43 -07:00
while ( it )
{
2011-02-21 07:46:23 -08:00
elm_genlist_item_update ( it ) ;
2012-07-31 13:07:09 -07:00
INF ( " %i " , i ) ;
2011-02-21 07:46:23 -08:00
i + + ;
2011-11-30 06:19:29 -08:00
it = elm_genlist_item_next_get ( it ) ;
2009-08-13 15:41:43 -07:00
}
}
static void
2010-10-19 11:25:22 -07:00
my_gl_first ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli = elm_genlist_first_item_get ( gl ) ;
2009-08-13 15:41:43 -07:00
if ( ! gli ) return ;
2012-03-07 00:29:32 -08:00
elm_genlist_item_show ( gli , ELM_GENLIST_ITEM_SCROLLTO_IN ) ;
2011-11-30 06:19:29 -08:00
elm_genlist_item_selected_set ( gli , 1 ) ;
2009-08-13 15:41:43 -07:00
}
static void
2010-10-19 11:25:22 -07:00
my_gl_last ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Evas_Object * gl = data ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli = elm_genlist_last_item_get ( gl ) ;
2009-08-13 15:41:43 -07:00
if ( ! gli ) return ;
2012-03-07 00:29:32 -08:00
elm_genlist_item_show ( gli , ELM_GENLIST_ITEM_SCROLLTO_IN ) ;
2011-11-30 06:19:29 -08:00
elm_genlist_item_selected_set ( gli , 1 ) ;
2009-08-13 15:41:43 -07:00
}
2010-06-25 15:28:06 -07:00
static Eina_Bool
2010-10-19 11:25:22 -07:00
my_gl_flush_delay ( void * data __UNUSED__ )
2010-04-12 01:27:10 -07:00
{
2012-02-16 21:12:56 -08:00
elm_cache_all_flush ( ) ;
2010-06-25 15:28:06 -07:00
return ECORE_CALLBACK_CANCEL ;
2010-04-12 01:27:10 -07:00
}
2010-04-04 21:58:43 -07:00
static void
2010-10-19 11:25:22 -07:00
my_gl_flush ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2010-04-04 21:58:43 -07:00
{
2010-04-12 01:27:10 -07:00
ecore_timer_add ( 1.2 , my_gl_flush_delay , NULL ) ;
2010-04-04 21:58:43 -07:00
}
2013-05-08 04:50:05 -07:00
static void
_genlist_del_cb ( void * data , Evas * evas __UNUSED__ , Evas_Object * obj __UNUSED__ ,
void * event_info __UNUSED__ )
{
if ( ! data ) return ;
elm_genlist_item_class_free ( data ) ;
}
2009-08-13 15:41:43 -07:00
void
2010-10-19 11:25:22 -07:00
test_genlist2 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2009-08-20 10:49:04 -07:00
Evas_Object * win , * bg , * gl , * bx , * bx2 , * bx3 , * bt ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli [ 10 ] ;
2009-08-13 15:41:43 -07:00
char buf [ PATH_MAX ] ;
2011-02-21 07:33:40 -08:00
win = elm_win_add ( NULL , " genlist2 " , ELM_WIN_BASIC ) ;
2009-08-13 15:41:43 -07:00
elm_win_title_set ( win , " Genlist 2 " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2009-08-13 15:41:43 -07:00
bg = elm_bg_add ( win ) ;
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/plant_01.jpg " , elm_app_data_dir_get ( ) ) ;
2009-08-13 15:41:43 -07:00
elm_bg_file_set ( bg , buf , NULL ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bg , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2012-11-14 02:49:45 -08:00
elm_win_resize_object_add ( win , bg ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( bg ) ;
bx = elm_box_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
elm_win_resize_object_add ( win , bx ) ;
evas_object_show ( bx ) ;
gl = elm_genlist_add ( win ) ;
2012-08-12 00:23:51 -07:00
elm_genlist_mode_set ( gl , ELM_LIST_COMPRESS ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
2012-02-20 00:26:17 -08:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
2012-02-20 00:26:17 -08:00
gli [ 0 ] = elm_genlist_item_append ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1001 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
( void * ) 1001 /* func data */ ) ;
2012-02-20 00:26:17 -08:00
gli [ 1 ] = elm_genlist_item_append ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1002 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
( void * ) 1002 /* func data */ ) ;
2012-02-20 00:26:17 -08:00
gli [ 2 ] = elm_genlist_item_append ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1003 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
( void * ) 1003 /* func data */ ) ;
2012-02-20 00:26:17 -08:00
gli [ 3 ] = elm_genlist_item_prepend ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1004 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
( void * ) 1004 /* func data */ ) ;
2012-02-20 00:26:17 -08:00
gli [ 4 ] = elm_genlist_item_prepend ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1005 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
( void * ) 1005 /* func data */ ) ;
2012-02-20 00:26:17 -08:00
gli [ 5 ] = elm_genlist_item_insert_before ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1006 /* item data */ , NULL /* parent */ , gli [ 2 ] /* rel */ , ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ , ( void * ) 1006 /* func data */ ) ;
2012-02-20 00:26:17 -08:00
gli [ 6 ] = elm_genlist_item_insert_after ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 1007 /* item data */ , NULL /* parent */ , gli [ 2 ] /* rel */ , ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ , ( void * ) 1007 /* func data */ ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx , gl ) ;
bx2 = elm_box_add ( win ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2009-08-13 15:41:43 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " / \\ " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_first , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " \\ / " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_last , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " # " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_disable , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " U " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update_all , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
bx2 = elm_box_add ( win ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2009-08-13 15:41:43 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " X " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_clear , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " + " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_add , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " - " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_del , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
2009-08-20 10:49:04 -07:00
bx3 = elm_box_add ( win ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx3 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx3 , EINA_TRUE ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx3 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx3 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2009-08-20 10:49:04 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " + before " ) ;
2009-08-20 10:49:04 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_before , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-20 10:49:04 -07:00
elm_box_pack_end ( bx3 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " + after " ) ;
2009-08-20 10:49:04 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_after , gl ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-20 10:49:04 -07:00
elm_box_pack_end ( bx3 , bt ) ;
evas_object_show ( bt ) ;
2010-04-04 21:58:43 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " Flush " ) ;
2010-04-04 21:58:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_flush , gl ) ;
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
elm_box_pack_end ( bx3 , bt ) ;
evas_object_show ( bt ) ;
2009-08-20 10:49:04 -07:00
elm_box_pack_end ( bx , bx3 ) ;
evas_object_show ( bx3 ) ;
2013-05-08 04:50:05 -07:00
evas_object_event_callback_add ( gl , EVAS_CALLBACK_DEL , _genlist_del_cb , itc1 ) ;
2009-08-20 10:49:04 -07:00
2009-08-13 15:41:43 -07:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
/*************/
static Elm_Genlist_Item_Class itc2 ;
2012-02-22 01:31:37 -08:00
2011-11-30 22:15:08 -08:00
char * gl2_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2009-08-13 15:41:43 -07:00
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item mode %i " , tit - > mode ) ;
return strdup ( buf ) ;
}
2012-02-22 01:31:37 -08:00
2011-10-23 19:10:35 -07:00
Evas_Object * gl2_content_get ( void * data , Evas_Object * obj , const char * part )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2009-08-13 15:41:43 -07:00
char buf [ PATH_MAX ] ;
Evas_Object * ic = elm_icon_add ( obj ) ;
if ( ! strcmp ( part , " elm.swallow.icon " ) )
{
2011-02-21 07:46:23 -08:00
if ( ! ( tit - > mode & 0x3 ) )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/logo_small.png " , elm_app_data_dir_get ( ) ) ;
2011-02-21 07:46:23 -08:00
else if ( ( tit - > mode & 0x3 ) = = 1 )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/logo.png " , elm_app_data_dir_get ( ) ) ;
2011-02-21 07:46:23 -08:00
else if ( ( tit - > mode & 0x3 ) = = 2 )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/panel_01.jpg " , elm_app_data_dir_get ( ) ) ;
2011-02-21 07:46:23 -08:00
else if ( ( tit - > mode & 0x3 ) = = 3 )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/rock_01.jpg " , elm_app_data_dir_get ( ) ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
2009-08-13 15:41:43 -07:00
}
else if ( ! strcmp ( part , " elm.swallow.end " ) )
{
2011-02-21 07:46:23 -08:00
if ( ! ( tit - > mode & 0x3 ) )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/sky_01.jpg " , elm_app_data_dir_get ( ) ) ;
2011-02-21 07:46:23 -08:00
else if ( ( tit - > mode & 0x3 ) = = 1 )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/sky_02.jpg " , elm_app_data_dir_get ( ) ) ;
2011-02-21 07:46:23 -08:00
else if ( ( tit - > mode & 0x3 ) = = 2 )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/sky_03.jpg " , elm_app_data_dir_get ( ) ) ;
2011-02-21 07:46:23 -08:00
else if ( ( tit - > mode & 0x3 ) = = 3 )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/sky_04.jpg " , elm_app_data_dir_get ( ) ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
2009-08-13 15:41:43 -07:00
}
evas_object_size_hint_aspect_set ( ic , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
return ic ;
}
2012-02-22 01:31:37 -08:00
2010-10-19 11:25:22 -07:00
Eina_Bool gl2_state_get ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
static void
2010-10-19 11:25:22 -07:00
my_gl_update ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Testitem * tit = data ;
tit - > mode + + ;
elm_genlist_item_update ( tit - > item ) ;
}
2011-11-29 06:03:14 -08:00
static void
my_gl_labels_update ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Testitem * tit = data ;
tit - > mode + + ;
2012-02-28 22:52:05 -08:00
elm_genlist_item_fields_update ( tit - > item , " * " , ELM_GENLIST_ITEM_FIELD_TEXT ) ;
2011-11-29 06:03:14 -08:00
}
static void
my_gl_contents_update ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Testitem * tit = data ;
tit - > mode + + ;
elm_genlist_item_fields_update ( tit - > item , " * " , ELM_GENLIST_ITEM_FIELD_CONTENT ) ;
}
2009-08-13 15:41:43 -07:00
void
2010-10-19 11:25:22 -07:00
test_genlist3 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * gl , * bx , * bx2 , * bt ;
2009-08-13 15:41:43 -07:00
static Testitem tit [ 3 ] ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist3 " , " Genlist 3 " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2009-08-13 15:41:43 -07:00
bx = elm_box_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
elm_win_resize_object_add ( win , bx ) ;
evas_object_show ( bx ) ;
gl = elm_genlist_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
itc2 . item_style = " default " ;
2011-11-30 22:15:08 -08:00
itc2 . func . text_get = gl2_text_get ;
2011-10-23 19:10:35 -07:00
itc2 . func . content_get = gl2_content_get ;
2009-08-13 15:41:43 -07:00
itc2 . func . state_get = gl2_state_get ;
2012-02-22 01:31:37 -08:00
itc2 . func . del = NULL ;
2009-08-13 15:41:43 -07:00
tit [ 0 ] . mode = 0 ;
tit [ 0 ] . item = elm_genlist_item_append ( gl , & itc2 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 0 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 1 ] . mode = 1 ;
tit [ 1 ] . item = elm_genlist_item_append ( gl , & itc2 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 1 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 2 ] . mode = 2 ;
tit [ 2 ] . item = elm_genlist_item_append ( gl , & itc2 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 2 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx , gl ) ;
2010-03-01 17:27:08 -08:00
evas_object_show ( bx ) ;
2009-08-13 15:41:43 -07:00
bx2 = elm_box_add ( win ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2009-08-13 15:41:43 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [1] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 0 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-11-29 06:03:14 -08:00
elm_object_text_set ( bt , " labels " ) ;
evas_object_smart_callback_add ( bt , " clicked " , my_gl_labels_update , & ( tit [ 1 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-11-29 06:03:14 -08:00
elm_object_text_set ( bt , " contents " ) ;
evas_object_smart_callback_add ( bt , " clicked " , my_gl_contents_update , & ( tit [ 2 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
/*************/
static void
2010-10-19 11:25:22 -07:00
my_gl_item_check_changed ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Testitem * tit = data ;
tit - > onoff = elm_check_state_get ( obj ) ;
2012-07-31 13:07:09 -07:00
printf ( " item %p onoff = %i \n " , tit , tit - > onoff ) ;
2009-08-13 15:41:43 -07:00
}
static Elm_Genlist_Item_Class itc3 ;
2012-02-22 01:31:37 -08:00
2011-11-30 22:15:08 -08:00
char * gl3_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2009-08-13 15:41:43 -07:00
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item mode %i " , tit - > mode ) ;
return strdup ( buf ) ;
}
2012-02-22 01:31:37 -08:00
2011-10-23 19:10:35 -07:00
Evas_Object * gl3_content_get ( void * data , Evas_Object * obj , const char * part )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2009-08-13 15:41:43 -07:00
if ( ! strcmp ( part , " elm.swallow.icon " ) )
{
2010-02-01 08:46:26 -08:00
Evas_Object * lb ;
2011-02-21 07:46:23 -08:00
2010-02-01 08:46:26 -08:00
lb = elm_label_add ( obj ) ;
2011-09-29 20:44:46 -07:00
elm_label_line_wrap_set ( lb , ELM_WRAP_CHAR ) ;
2010-02-01 08:46:26 -08:00
elm_label_wrap_width_set ( lb , 201 ) ;
2011-06-28 23:41:31 -07:00
elm_object_text_set ( lb , " ashj ascjscjh n asjkl hcjlh ls hzshnn zjh sh zxjcjsnd h dfw sdv edev efe fwefvv vsd cvs ws wf fvwf wd fwe f we wef we wfe rfwewef wfv wswf wefg sdfws w wsdcfwcf wsc vdv sdsd sdcd cv wsc sdcv wsc d sdcdcsd sdcdsc wdvd sdcsd wscxcv wssvd sd " ) ;
2010-02-01 08:46:26 -08:00
return lb ;
2009-08-13 15:41:43 -07:00
}
else if ( ! strcmp ( part , " elm.swallow.end " ) )
{
2011-02-21 07:46:23 -08:00
Evas_Object * ck ;
ck = elm_check_add ( obj ) ;
2011-06-08 09:58:08 -07:00
evas_object_propagate_events_set ( ck , EINA_FALSE ) ;
2011-02-21 07:46:23 -08:00
elm_check_state_set ( ck , tit - > onoff ) ;
evas_object_smart_callback_add ( ck , " changed " , my_gl_item_check_changed , data ) ;
return ck ;
2009-08-13 15:41:43 -07:00
}
return NULL ;
}
2012-02-22 01:31:37 -08:00
2010-10-19 11:25:22 -07:00
Eina_Bool gl3_state_get ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2013-02-07 05:26:37 -08:00
static void _realized ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * ei )
{
2013-05-08 04:50:29 -07:00
Evas_Object * check ;
Eina_List * items ;
items = NULL ;
2013-02-07 05:26:37 -08:00
2013-05-08 04:50:29 -07:00
if ( ! ei ) return ;
Elm_Object_Item * item = ei ;
2013-02-07 05:26:37 -08:00
2013-05-08 04:50:29 -07:00
check = elm_object_item_part_content_get ( item , " elm.swallow.end " ) ;
2013-02-07 05:26:37 -08:00
2013-05-08 04:50:29 -07:00
if ( ! check ) return ;
2013-02-07 05:26:37 -08:00
2013-05-08 04:50:29 -07:00
items = eina_list_append ( items , check ) ;
elm_object_item_access_order_set ( item , items ) ;
2013-02-07 05:26:37 -08:00
}
2009-08-13 15:41:43 -07:00
void
2010-10-19 11:25:22 -07:00
test_genlist4 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * gl , * bx , * bx2 , * bt ;
2009-08-13 15:41:43 -07:00
static Testitem tit [ 3 ] ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist4 " , " Genlist 4 " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2009-08-13 15:41:43 -07:00
bx = elm_box_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
elm_win_resize_object_add ( win , bx ) ;
evas_object_show ( bx ) ;
gl = elm_genlist_add ( win ) ;
2012-03-07 08:07:34 -08:00
elm_genlist_mode_set ( gl , ELM_LIST_COMPRESS ) ;
2009-08-13 15:41:43 -07:00
elm_genlist_multi_select_set ( gl , 1 ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
2013-02-07 05:26:37 -08:00
evas_object_smart_callback_add ( gl , " realized " , _realized , NULL ) ;
2009-08-13 15:41:43 -07:00
itc3 . item_style = " default " ;
2011-11-30 22:15:08 -08:00
itc3 . func . text_get = gl3_text_get ;
2011-10-23 19:10:35 -07:00
itc3 . func . content_get = gl3_content_get ;
2009-08-13 15:41:43 -07:00
itc3 . func . state_get = gl3_state_get ;
2012-02-22 01:31:37 -08:00
itc3 . func . del = NULL ;
2009-08-13 15:41:43 -07:00
tit [ 0 ] . mode = 0 ;
tit [ 0 ] . item = elm_genlist_item_append ( gl , & itc3 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 0 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 1 ] . mode = 1 ;
tit [ 1 ] . item = elm_genlist_item_append ( gl , & itc3 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 1 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 2 ] . mode = 2 ;
tit [ 2 ] . item = elm_genlist_item_append ( gl , & itc3 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 2 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx , gl ) ;
2010-03-01 17:27:08 -08:00
evas_object_show ( bx ) ;
2009-08-13 15:41:43 -07:00
bx2 = elm_box_add ( win ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2009-08-13 15:41:43 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [1] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 0 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [2] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 1 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [3] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 2 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
/*************/
2012-06-15 00:58:05 -07:00
2009-08-13 15:41:43 -07:00
static void
2010-10-19 11:25:22 -07:00
my_gl_item_check_changed2 ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
Testitem * tit = data ;
tit - > onoff = elm_check_state_get ( obj ) ;
2012-07-31 13:07:09 -07:00
printf ( " item %p onoff = %i \n " , tit , tit - > onoff ) ;
2009-08-13 15:41:43 -07:00
}
static Elm_Genlist_Item_Class itc5 ;
2012-02-22 01:31:37 -08:00
2011-11-30 22:15:08 -08:00
char * gl5_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2009-08-13 15:41:43 -07:00
char buf [ 256 ] ;
if ( ! strcmp ( part , " elm.text " ) )
{
2011-02-21 07:46:23 -08:00
snprintf ( buf , sizeof ( buf ) , " Item mode %i " , tit - > mode ) ;
2009-08-13 15:41:43 -07:00
}
else if ( ! strcmp ( part , " elm.text.sub " ) )
{
2011-02-21 07:46:23 -08:00
snprintf ( buf , sizeof ( buf ) , " %i bottles on the wall " , tit - > mode ) ;
2009-08-13 15:41:43 -07:00
}
return strdup ( buf ) ;
}
2012-02-22 01:31:37 -08:00
2011-10-23 19:10:35 -07:00
Evas_Object * gl5_content_get ( void * data , Evas_Object * obj , const char * part )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2009-08-13 15:41:43 -07:00
char buf [ PATH_MAX ] ;
if ( ! strcmp ( part , " elm.swallow.icon " ) )
{
2011-02-21 07:46:23 -08:00
Evas_Object * bx = elm_box_add ( obj ) ;
Evas_Object * ic ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx , EINA_TRUE ) ;
2011-02-21 07:46:23 -08:00
ic = elm_icon_add ( obj ) ;
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/logo_small.png " , elm_app_data_dir_get ( ) ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
elm_image_resizable_set ( ic , 0 , 0 ) ;
2011-02-21 07:46:23 -08:00
evas_object_show ( ic ) ;
elm_box_pack_end ( bx , ic ) ;
ic = elm_icon_add ( obj ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
elm_image_resizable_set ( ic , 0 , 0 ) ;
2011-02-21 07:46:23 -08:00
evas_object_show ( ic ) ;
elm_box_pack_end ( bx , ic ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx , EINA_TRUE ) ;
2011-02-21 07:46:23 -08:00
evas_object_show ( bx ) ;
return bx ;
2009-08-13 15:41:43 -07:00
}
else if ( ! strcmp ( part , " elm.swallow.end " ) )
{
2011-02-21 07:46:23 -08:00
Evas_Object * ck ;
ck = elm_check_add ( obj ) ;
2011-06-08 09:58:08 -07:00
evas_object_propagate_events_set ( ck , EINA_FALSE ) ;
2011-02-21 07:46:23 -08:00
elm_check_state_set ( ck , tit - > onoff ) ;
evas_object_smart_callback_add ( ck , " changed " , my_gl_item_check_changed2 , data ) ;
evas_object_show ( ck ) ;
return ck ;
2009-08-13 15:41:43 -07:00
}
return NULL ;
}
2012-02-22 01:31:37 -08:00
2010-10-19 11:25:22 -07:00
Eina_Bool gl5_state_get ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2009-09-07 23:35:14 -07:00
static void
2010-10-19 11:25:22 -07:00
item_drag_up ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-09-07 23:35:14 -07:00
{
2012-07-31 13:07:09 -07:00
INF ( " drag up " ) ;
2009-09-07 23:35:14 -07:00
}
static void
2010-10-19 11:25:22 -07:00
item_drag_down ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-09-07 23:35:14 -07:00
{
2012-07-31 13:07:09 -07:00
INF ( " drag down " ) ;
2009-09-07 23:35:14 -07:00
}
static void
2010-10-19 11:25:22 -07:00
item_drag_left ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-09-07 23:35:14 -07:00
{
2012-07-31 13:07:09 -07:00
INF ( " drag left " ) ;
2009-09-07 23:35:14 -07:00
}
static void
2010-10-19 11:25:22 -07:00
item_drag_right ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-09-07 23:35:14 -07:00
{
2012-07-31 13:07:09 -07:00
INF ( " drag right " ) ;
2009-09-07 23:35:14 -07:00
}
This small patch allows to get a smart callback when the scrollers in an
elm_list or in an elm_genlist fire the edge,{top,bottom,left,right}
signals, backporting them to the list object.
The new smart callbacks called are:
· "scroll,edge,top" - the list is scrolled until the top edge
· "scroll,edge,bottom" - the list is scrolled until the bottom edge
· "scroll,edge,left" - the list is scrolled until the left edge
· "scroll,edge,right" - the list is scrolled until the right edge
SVN revision: 3
SVN revision: 54393
2010-11-09 18:48:59 -08:00
static void
scroll_top ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-07-31 13:07:09 -07:00
INF ( " Top edge! " ) ;
This small patch allows to get a smart callback when the scrollers in an
elm_list or in an elm_genlist fire the edge,{top,bottom,left,right}
signals, backporting them to the list object.
The new smart callbacks called are:
· "scroll,edge,top" - the list is scrolled until the top edge
· "scroll,edge,bottom" - the list is scrolled until the bottom edge
· "scroll,edge,left" - the list is scrolled until the left edge
· "scroll,edge,right" - the list is scrolled until the right edge
SVN revision: 3
SVN revision: 54393
2010-11-09 18:48:59 -08:00
}
static void
scroll_bottom ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-07-31 13:07:09 -07:00
INF ( " Bottom edge! " ) ;
This small patch allows to get a smart callback when the scrollers in an
elm_list or in an elm_genlist fire the edge,{top,bottom,left,right}
signals, backporting them to the list object.
The new smart callbacks called are:
· "scroll,edge,top" - the list is scrolled until the top edge
· "scroll,edge,bottom" - the list is scrolled until the bottom edge
· "scroll,edge,left" - the list is scrolled until the left edge
· "scroll,edge,right" - the list is scrolled until the right edge
SVN revision: 3
SVN revision: 54393
2010-11-09 18:48:59 -08:00
}
static void
scroll_left ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-07-31 13:07:09 -07:00
INF ( " Left edge! " ) ;
This small patch allows to get a smart callback when the scrollers in an
elm_list or in an elm_genlist fire the edge,{top,bottom,left,right}
signals, backporting them to the list object.
The new smart callbacks called are:
· "scroll,edge,top" - the list is scrolled until the top edge
· "scroll,edge,bottom" - the list is scrolled until the bottom edge
· "scroll,edge,left" - the list is scrolled until the left edge
· "scroll,edge,right" - the list is scrolled until the right edge
SVN revision: 3
SVN revision: 54393
2010-11-09 18:48:59 -08:00
}
static void
scroll_right ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-07-31 13:07:09 -07:00
INF ( " Right edge! " ) ;
This small patch allows to get a smart callback when the scrollers in an
elm_list or in an elm_genlist fire the edge,{top,bottom,left,right}
signals, backporting them to the list object.
The new smart callbacks called are:
· "scroll,edge,top" - the list is scrolled until the top edge
· "scroll,edge,bottom" - the list is scrolled until the bottom edge
· "scroll,edge,left" - the list is scrolled until the left edge
· "scroll,edge,right" - the list is scrolled until the right edge
SVN revision: 3
SVN revision: 54393
2010-11-09 18:48:59 -08:00
}
2009-09-07 23:35:14 -07:00
static void
2010-10-19 11:25:22 -07:00
item_drag ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-09-07 23:35:14 -07:00
{
2012-07-31 13:07:09 -07:00
INF ( " drag " ) ;
2009-09-07 23:35:14 -07:00
}
static void
2010-10-19 11:25:22 -07:00
item_drag_stop ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-09-07 23:35:14 -07:00
{
2012-07-31 13:07:09 -07:00
INF ( " drag stop " ) ;
2009-09-07 23:35:14 -07:00
}
2010-02-25 22:30:17 -08:00
static void
2010-10-19 11:25:22 -07:00
item_longpress ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2010-02-25 22:30:17 -08:00
{
2012-07-31 13:07:09 -07:00
INF ( " longpress " ) ;
2010-02-25 22:30:17 -08:00
}
2009-08-13 15:41:43 -07:00
void
2010-10-19 11:25:22 -07:00
test_genlist5 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * gl , * bx , * bx2 , * bt ;
2009-08-13 15:41:43 -07:00
static Testitem tit [ 3 ] ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist5 " , " Genlist 5 " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2009-08-13 15:41:43 -07:00
bx = elm_box_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
elm_win_resize_object_add ( win , bx ) ;
evas_object_show ( bx ) ;
gl = elm_genlist_add ( win ) ;
2012-03-07 08:01:37 -08:00
elm_genlist_select_mode_set ( gl , ELM_OBJECT_SELECT_MODE_ALWAYS ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
itc5 . item_style = " double_label " ;
2011-11-30 22:15:08 -08:00
itc5 . func . text_get = gl5_text_get ;
2011-10-23 19:10:35 -07:00
itc5 . func . content_get = gl5_content_get ;
2009-08-13 15:41:43 -07:00
itc5 . func . state_get = gl5_state_get ;
2012-02-22 01:31:37 -08:00
itc5 . func . del = NULL ;
2009-08-13 15:41:43 -07:00
tit [ 0 ] . mode = 0 ;
tit [ 0 ] . item = elm_genlist_item_append ( gl , & itc5 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 0 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 1 ] . mode = 1 ;
tit [ 1 ] . item = elm_genlist_item_append ( gl , & itc5 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 1 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 2 ] . mode = 2 ;
tit [ 2 ] . item = elm_genlist_item_append ( gl , & itc5 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 2 ] ) /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx , gl ) ;
2010-03-01 17:27:08 -08:00
evas_object_show ( bx ) ;
2009-10-10 08:59:55 -07:00
2009-09-07 23:35:14 -07:00
evas_object_smart_callback_add ( gl , " drag,start,up " , item_drag_up , NULL ) ;
evas_object_smart_callback_add ( gl , " drag,start,down " , item_drag_down , NULL ) ;
evas_object_smart_callback_add ( gl , " drag,start,left " , item_drag_left , NULL ) ;
evas_object_smart_callback_add ( gl , " drag,start,right " , item_drag_right , NULL ) ;
evas_object_smart_callback_add ( gl , " drag " , item_drag , NULL ) ;
evas_object_smart_callback_add ( gl , " drag,stop " , item_drag_stop , NULL ) ;
2010-02-25 22:30:17 -08:00
evas_object_smart_callback_add ( gl , " longpressed " , item_longpress , NULL ) ;
2009-08-13 15:41:43 -07:00
bx2 = elm_box_add ( win ) ;
2011-04-15 04:44:05 -07:00
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2009-08-13 15:41:43 -07:00
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [1] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 0 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [2] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 1 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt , " [3] " ) ;
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update , & ( tit [ 2 ] ) ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
2009-08-13 15:41:43 -07:00
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
/*************/
2012-03-15 01:52:19 -07:00
static Elm_Genlist_Item_Class * itc4 ;
2009-08-13 15:41:43 -07:00
static void
2010-10-19 11:25:22 -07:00
gl4_sel ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2009-08-13 15:41:43 -07:00
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
int depth = elm_genlist_item_expanded_depth_get ( glit ) ;
2012-07-31 13:07:09 -07:00
printf ( " expanded depth for selected item is %d " , depth ) ;
2009-08-13 15:41:43 -07:00
}
2012-02-22 01:31:37 -08:00
2009-08-13 15:41:43 -07:00
static void
2010-10-19 11:25:22 -07:00
gl4_exp ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2009-08-13 15:41:43 -07:00
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
2012-01-29 20:37:41 -08:00
Evas_Object * gl = elm_object_item_widget_get ( glit ) ;
2013-02-16 19:53:02 -08:00
int val = ( int ) ( uintptr_t ) elm_object_item_data_get ( glit ) ;
2012-04-27 04:08:58 -07:00
int i = 0 ;
2009-08-13 15:41:43 -07:00
val * = 10 ;
2012-04-27 04:08:58 -07:00
for ( i = 0 ; i < 10 ; i + + )
{
elm_genlist_item_append ( gl , itc4 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( val + i ) /* item data */ ,
2012-04-27 04:08:58 -07:00
glit /* parent */ ,
ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
NULL /* func data */ ) ;
}
2009-08-13 15:41:43 -07:00
}
2012-04-27 04:08:58 -07:00
2009-08-13 15:41:43 -07:00
static void
2010-10-19 11:25:22 -07:00
gl4_con ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2009-08-13 15:41:43 -07:00
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
elm_genlist_item_subitems_clear ( glit ) ;
2009-08-13 15:41:43 -07:00
}
static void
2010-10-19 11:25:22 -07:00
gl4_exp_req ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2009-08-13 15:41:43 -07:00
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_TRUE ) ;
2009-08-13 15:41:43 -07:00
}
2012-02-22 01:31:37 -08:00
2009-08-13 15:41:43 -07:00
static void
2010-10-19 11:25:22 -07:00
gl4_con_req ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
2009-08-13 15:41:43 -07:00
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_FALSE ) ;
2009-08-13 15:41:43 -07:00
}
2011-11-30 22:15:08 -08:00
char * gl4_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
char buf [ 256 ] ;
2013-02-16 19:53:02 -08:00
snprintf ( buf , sizeof ( buf ) , " Item mode %i " , ( int ) ( uintptr_t ) data ) ;
2009-08-13 15:41:43 -07:00
return strdup ( buf ) ;
}
2012-02-22 01:31:37 -08:00
2011-10-23 19:10:35 -07:00
Evas_Object * gl4_content_get ( void * data __UNUSED__ , Evas_Object * obj , const char * part )
2009-08-13 15:41:43 -07:00
{
char buf [ PATH_MAX ] ;
if ( ! strcmp ( part , " elm.swallow.icon " ) )
{
2011-02-21 07:46:23 -08:00
Evas_Object * ic = elm_icon_add ( obj ) ;
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/logo_small.png " , elm_app_data_dir_get ( ) ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
2011-02-21 07:46:23 -08:00
evas_object_size_hint_aspect_set ( ic , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
evas_object_show ( ic ) ;
return ic ;
2009-08-13 15:41:43 -07:00
}
else if ( ! strcmp ( part , " elm.swallow.end " ) )
{
2011-02-21 07:46:23 -08:00
Evas_Object * ck ;
ck = elm_check_add ( obj ) ;
2011-06-08 09:58:08 -07:00
evas_object_propagate_events_set ( ck , EINA_FALSE ) ;
2011-02-21 07:46:23 -08:00
evas_object_show ( ck ) ;
return ck ;
2009-08-13 15:41:43 -07:00
}
return NULL ;
}
2012-02-22 01:31:37 -08:00
2010-10-19 11:25:22 -07:00
Eina_Bool gl4_state_get ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2012-02-22 01:31:37 -08:00
2010-10-19 11:25:22 -07:00
void gl4_del ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2012-07-31 13:07:09 -07:00
printf ( " item deleted. \n " ) ;
2009-08-13 15:41:43 -07:00
}
2012-04-27 04:08:58 -07:00
static void
_tree_effect_enable_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
elm_genlist_tree_effect_enabled_set ( data , EINA_TRUE ) ;
}
static void
_tree_effect_disable_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
elm_genlist_tree_effect_enabled_set ( data , EINA_FALSE ) ;
}
2009-08-13 15:41:43 -07:00
void
2010-10-19 11:25:22 -07:00
test_genlist6 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2009-08-13 15:41:43 -07:00
{
2012-04-27 04:08:58 -07:00
Evas_Object * win , * gl , * bx , * fr , * bx2 , * rd1 , * rd2 ;
2009-08-13 15:41:43 -07:00
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-tree " , " Genlist Tree " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2009-08-13 15:41:43 -07:00
bx = elm_box_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
elm_win_resize_object_add ( win , bx ) ;
evas_object_show ( bx ) ;
2012-04-27 04:08:58 -07:00
fr = elm_frame_add ( win ) ;
elm_object_text_set ( fr , " Genlist Tree Effect " ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_object_content_set ( fr , bx2 ) ;
evas_object_show ( bx2 ) ;
rd1 = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd1 , 0 ) ;
elm_object_text_set ( rd1 , " Enable " ) ;
evas_object_show ( rd1 ) ;
elm_box_pack_end ( bx2 , rd1 ) ;
rd2 = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd2 , 1 ) ;
elm_radio_group_add ( rd1 , rd2 ) ;
elm_object_text_set ( rd2 , " Disable " ) ;
evas_object_show ( rd2 ) ;
elm_box_pack_end ( bx2 , rd2 ) ;
2009-08-13 15:41:43 -07:00
gl = elm_genlist_add ( win ) ;
2009-09-28 12:23:33 -07:00
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
2012-04-27 04:08:58 -07:00
elm_genlist_tree_effect_enabled_set ( gl , EINA_TRUE ) ;
2013-04-16 22:15:19 -07:00
evas_object_smart_callback_add ( gl , " edge,left " , scroll_left , NULL ) ;
evas_object_smart_callback_add ( gl , " edge,right " , scroll_right , NULL ) ;
evas_object_smart_callback_add ( gl , " edge,top " , scroll_top , NULL ) ;
evas_object_smart_callback_add ( gl , " edge,bottom " , scroll_bottom , NULL ) ;
2012-04-27 04:08:58 -07:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl4_text_get ;
itc1 - > func . content_get = gl4_content_get ;
itc1 - > func . state_get = gl4_state_get ;
itc1 - > func . del = gl4_del ;
2009-08-13 15:41:43 -07:00
2012-03-15 01:52:19 -07:00
itc4 = elm_genlist_item_class_new ( ) ;
2012-04-27 04:08:58 -07:00
itc4 - > item_style = " tree_effect " ;
2012-03-15 01:52:19 -07:00
itc4 - > func . text_get = gl4_text_get ;
itc4 - > func . content_get = gl4_content_get ;
itc4 - > func . state_get = gl4_state_get ;
itc4 - > func . del = gl4_del ;
2009-08-13 15:41:43 -07:00
2012-03-15 01:52:19 -07:00
elm_genlist_item_append ( gl , itc4 ,
2012-03-07 04:57:13 -08:00
( void * ) 1 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-03-15 01:52:19 -07:00
elm_genlist_item_append ( gl , itc4 ,
2012-03-07 04:57:13 -08:00
( void * ) 2 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-04-27 04:08:58 -07:00
elm_genlist_item_append ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 3 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_NONE , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-04-27 04:08:58 -07:00
elm_genlist_item_class_free ( itc1 ) ;
2012-03-15 01:52:19 -07:00
elm_genlist_item_class_free ( itc4 ) ;
2012-04-27 04:08:58 -07:00
2009-08-13 15:41:43 -07:00
evas_object_smart_callback_add ( gl , " expand,request " , gl4_exp_req , gl ) ;
evas_object_smart_callback_add ( gl , " contract,request " , gl4_con_req , gl ) ;
evas_object_smart_callback_add ( gl , " expanded " , gl4_exp , gl ) ;
evas_object_smart_callback_add ( gl , " contracted " , gl4_con , gl ) ;
elm_box_pack_end ( bx , gl ) ;
2012-04-27 04:08:58 -07:00
evas_object_smart_callback_add ( rd1 , " changed " , _tree_effect_enable_cb , gl ) ;
evas_object_smart_callback_add ( rd2 , " changed " , _tree_effect_disable_cb , gl ) ;
2009-08-13 15:41:43 -07:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2010-10-15 04:24:46 -07:00
/*************/
struct genlist7_data
{
2012-02-16 01:26:35 -08:00
Evas_Object * win , * naviframe ;
2010-10-15 04:24:46 -07:00
} ;
2010-11-17 09:15:28 -08:00
static Elm_Genlist_Item_Class itc7 ;
2012-02-22 01:31:37 -08:00
2010-11-17 09:15:28 -08:00
static void
gl_sel7 ( void * data , Evas_Object * obj , void * event_info )
{
if ( ! event_info ) return ;
elm_genlist_item_item_class_update ( event_info , & itc7 ) ;
2012-07-31 13:07:09 -07:00
printf ( " sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n " , data , obj , event_info , itc7 . item_style ) ;
2010-11-17 09:15:28 -08:00
}
2010-10-15 04:24:46 -07:00
static void
2010-10-19 11:25:22 -07:00
test_genlist7_back_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2010-10-15 04:24:46 -07:00
{
2011-02-21 07:46:23 -08:00
struct genlist7_data * info = data ;
if ( ! info ) return ;
2010-10-15 04:24:46 -07:00
2012-02-16 01:26:35 -08:00
elm_naviframe_item_pop ( info - > naviframe ) ;
2010-10-15 04:24:46 -07:00
}
static void
2010-10-19 11:25:22 -07:00
test_genlist7_swipe ( void * data , Evas_Object * obj __UNUSED__ , void * event_info )
2010-10-15 04:24:46 -07:00
{
struct genlist7_data * info = data ;
Evas_Object * box , * entry , * button ;
char item_data [ ] = " Just a simple test " ;
2010-10-22 14:41:22 -07:00
if ( ( ! event_info ) | | ( ! data ) ) return ;
2010-10-15 04:24:46 -07:00
box = elm_box_add ( info - > win ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( box , EINA_FALSE ) ;
2010-10-15 04:24:46 -07:00
evas_object_size_hint_weight_set ( box , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( box , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_show ( box ) ;
2011-06-17 02:44:31 -07:00
entry = elm_entry_add ( info - > win ) ;
elm_entry_scrollable_set ( entry , EINA_TRUE ) ;
elm_entry_editable_set ( entry , EINA_FALSE ) ;
2011-12-30 02:02:19 -08:00
elm_object_text_set ( entry , item_data ) ;
2010-10-15 04:24:46 -07:00
evas_object_size_hint_weight_set ( entry , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( entry , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_show ( entry ) ;
button = elm_button_add ( info - > win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( button , " back " ) ;
2010-10-15 04:24:46 -07:00
evas_object_size_hint_weight_set ( button , EVAS_HINT_EXPAND , 0 ) ;
evas_object_size_hint_align_set ( button , EVAS_HINT_FILL , 0 ) ;
evas_object_smart_callback_add ( button , " clicked " , test_genlist7_back_cb ,
info ) ;
evas_object_show ( button ) ;
elm_box_pack_start ( box , entry ) ;
elm_box_pack_end ( box , button ) ;
2012-02-16 01:26:35 -08:00
elm_naviframe_item_simple_push ( info - > naviframe , box ) ;
2010-10-15 04:24:46 -07:00
}
void
2010-10-19 11:25:22 -07:00
test_genlist7 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2010-10-15 04:24:46 -07:00
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * gl , * naviframe ;
2010-10-15 04:24:46 -07:00
static struct genlist7_data info ;
static Testitem tit [ 3 ] ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist7 " , " Genlist 7 " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2010-10-15 04:24:46 -07:00
info . win = win ;
2012-02-16 01:26:35 -08:00
naviframe = elm_naviframe_add ( win ) ;
elm_win_resize_object_add ( win , naviframe ) ;
evas_object_size_hint_weight_set ( naviframe , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( naviframe , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_show ( naviframe ) ;
info . naviframe = naviframe ;
2010-10-15 04:24:46 -07:00
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_smart_callback_add ( gl , " swipe " , test_genlist7_swipe , & info ) ;
evas_object_show ( gl ) ;
2012-02-16 01:26:35 -08:00
elm_naviframe_item_simple_push ( naviframe , gl ) ;
2010-10-15 04:24:46 -07:00
itc2 . item_style = " default " ;
2011-11-30 22:15:08 -08:00
itc2 . func . text_get = gl2_text_get ;
2011-10-23 19:10:35 -07:00
itc2 . func . content_get = gl2_content_get ;
2010-10-15 04:24:46 -07:00
itc2 . func . state_get = gl2_state_get ;
2012-02-22 01:31:37 -08:00
itc2 . func . del = NULL ;
2010-10-15 04:24:46 -07:00
2010-11-17 09:15:28 -08:00
itc7 . item_style = " double_label " ;
2011-11-30 22:15:08 -08:00
itc7 . func . text_get = gl5_text_get ;
2011-10-23 19:10:35 -07:00
itc7 . func . content_get = gl5_content_get ;
2010-11-17 09:15:28 -08:00
itc7 . func . state_get = gl5_state_get ;
2012-02-22 01:31:37 -08:00
itc7 . func . del = NULL ;
2010-11-17 09:15:28 -08:00
2010-10-15 04:24:46 -07:00
tit [ 0 ] . mode = 0 ;
tit [ 0 ] . item = elm_genlist_item_append ( gl , & itc2 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 0 ] ) /* item data */ , NULL /* parent */ ,
2010-11-17 09:15:28 -08:00
ELM_GENLIST_ITEM_NONE , gl_sel7 /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2010-10-15 04:24:46 -07:00
tit [ 1 ] . mode = 1 ;
tit [ 1 ] . item = elm_genlist_item_append ( gl , & itc2 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 1 ] ) /* item data */ , NULL /* parent */ ,
2010-11-17 09:15:28 -08:00
ELM_GENLIST_ITEM_NONE , gl_sel7 /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2010-10-15 04:24:46 -07:00
tit [ 2 ] . mode = 2 ;
tit [ 2 ] . item = elm_genlist_item_append ( gl , & itc2 ,
2011-02-21 07:46:23 -08:00
& ( tit [ 2 ] ) /* item data */ , NULL /* parent */ ,
2010-11-17 09:15:28 -08:00
ELM_GENLIST_ITEM_NONE , gl_sel7 /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2010-10-15 04:24:46 -07:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2011-01-05 21:13:11 -08:00
/*************/
2012-09-06 15:52:36 -07:00
static Elm_Genlist_Item_Class * itc_group ;
2012-02-22 01:31:37 -08:00
2011-11-30 22:15:08 -08:00
char * gl8_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2011-01-05 21:13:11 -08:00
{
char buf [ 256 ] ;
2013-02-16 19:53:02 -08:00
snprintf ( buf , sizeof ( buf ) , " Group Index # %i (Item # %i) " , ( int ) ( ( uintptr_t ) data / 10 ) , ( int ) ( uintptr_t ) data ) ;
2011-01-05 21:13:11 -08:00
return strdup ( buf ) ;
}
static void
_bt_show_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-03-07 00:38:32 -08:00
elm_genlist_item_show ( data , ELM_GENLIST_ITEM_SCROLLTO_TOP ) ;
2011-01-05 21:13:11 -08:00
}
2012-02-22 01:31:37 -08:00
2011-01-05 21:13:11 -08:00
static void
_bt_bring_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-03-07 00:38:32 -08:00
elm_genlist_item_bring_in ( data , ELM_GENLIST_ITEM_SCROLLTO_TOP ) ;
2011-01-05 21:13:11 -08:00
}
void
test_genlist8 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * gl , * bt [ 8 ] , * bx , * bx2 , * bx3 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli = NULL , * git = NULL ;
2011-10-24 16:43:34 -07:00
int i , bt_num ;
2011-01-05 21:13:11 -08:00
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-group " , " Genlist Group " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2011-01-05 21:13:11 -08:00
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 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_smart_callback_add ( gl , " selected " , _gl_selected , NULL ) ;
2011-04-12 10:29:59 -07:00
evas_object_smart_callback_add ( gl , " clicked,double " , _gl_double_clicked , NULL ) ;
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( gl , " longpressed " , _gl_longpress , NULL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( gl ) ;
2012-06-26 20:23:48 -07:00
// Use homogeneous mode for group index + homogeneous test.
// Homogeneous is not mandatory for group index.
elm_genlist_homogeneous_set ( gl , EINA_TRUE ) ;
2012-02-20 00:26:17 -08:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2011-01-05 21:13:11 -08:00
2012-09-06 15:52:36 -07:00
itc_group = elm_genlist_item_class_new ( ) ;
itc_group - > item_style = " group_index " ;
itc_group - > func . text_get = gl8_text_get ;
itc_group - > func . content_get = NULL ;
itc_group - > func . state_get = NULL ;
itc_group - > func . del = NULL ;
2011-01-05 21:13:11 -08:00
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
bt_num = 0 ;
bt [ bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Show 0 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx2 , bt [ bt_num ] ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Show 26 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx2 , bt [ bt_num ] ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Show 101 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx2 , bt [ bt_num ] ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Show 480 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx2 , bt [ bt_num ] ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
bx3 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx3 , EINA_TRUE ) ;
2011-05-03 21:53:39 -07:00
elm_box_homogeneous_set ( bx3 , EINA_TRUE ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_weight_set ( bx3 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx3 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Bring top 0 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx3 , bt [ bt_num ] ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Bring top 31 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx3 , bt [ bt_num ] ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Bring top 239 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx3 , bt [ bt_num ] ) ;
bt [ + + bt_num ] = elm_button_add ( win ) ;
2011-06-29 00:11:54 -07:00
elm_object_text_set ( bt [ bt_num ] , " Bring top 477 " ) ;
2011-01-05 21:13:11 -08:00
evas_object_size_hint_align_set ( bt [ bt_num ] , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt [ bt_num ] , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_show ( bt [ bt_num ] ) ;
elm_box_pack_end ( bx3 , bt [ bt_num ] ) ;
elm_box_pack_end ( bx , bx3 ) ;
evas_object_show ( bx3 ) ;
for ( i = 0 ; i < 500 ; i + + )
{
if ( ! ( i % 10 ) )
{
2012-09-06 15:52:36 -07:00
gli = git = elm_genlist_item_append ( gl , itc_group ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2011-02-21 07:46:23 -08:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_GROUP ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2012-03-07 08:22:58 -08:00
elm_genlist_item_select_mode_set ( git , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY ) ;
2011-01-05 21:13:11 -08:00
}
else if ( git )
{
2012-02-20 00:26:17 -08:00
gli = elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2011-01-05 21:13:11 -08:00
git /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2011-01-05 21:13:11 -08:00
}
switch ( i )
{
2011-03-28 17:51:56 -07:00
case 0 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 0 ] , " clicked " , _bt_show_cb , gli ) ;
evas_object_smart_callback_add ( bt [ 4 ] , " clicked " , _bt_bring_cb , gli ) ;
break ;
2011-03-28 17:51:56 -07:00
case 26 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 1 ] , " clicked " , _bt_show_cb , gli ) ;
break ;
2011-03-28 17:51:56 -07:00
case 31 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 5 ] , " clicked " , _bt_bring_cb , gli ) ;
break ;
2011-03-28 17:51:56 -07:00
case 101 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 2 ] , " clicked " , _bt_show_cb , gli ) ;
break ;
2011-03-28 17:51:56 -07:00
case 239 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 6 ] , " clicked " , _bt_bring_cb , gli ) ;
break ;
2011-03-28 17:51:56 -07:00
case 477 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 7 ] , " clicked " , _bt_bring_cb , gli ) ;
break ;
2011-03-28 17:51:56 -07:00
case 480 :
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( bt [ 3 ] , " clicked " , _bt_show_cb , gli ) ;
break ;
}
}
2012-02-20 00:26:17 -08:00
elm_genlist_item_class_free ( itc1 ) ;
2012-09-06 15:52:36 -07:00
elm_genlist_item_class_free ( itc_group ) ;
2011-01-05 21:13:11 -08:00
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
/*************/
static void
gl9_exp ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
2012-01-29 20:37:41 -08:00
Evas_Object * gl = elm_object_item_widget_get ( glit ) ;
2013-02-16 19:53:02 -08:00
int val = ( int ) ( uintptr_t ) elm_object_item_data_get ( glit ) ;
2011-01-05 21:13:11 -08:00
val * = 10 ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( val + 1 ) /* item data */ ,
2012-01-19 21:18:31 -08:00
glit /* parent */ ,
2011-01-05 21:13:11 -08:00
ELM_GENLIST_ITEM_NONE , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( val + 2 ) /* item data */ ,
2012-01-19 21:18:31 -08:00
glit /* parent */ ,
2011-01-05 21:13:11 -08:00
ELM_GENLIST_ITEM_NONE , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( val + 3 ) /* item data */ ,
2012-01-19 21:18:31 -08:00
glit /* parent */ ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-01-05 21:13:11 -08:00
NULL /* func data */ ) ;
}
2012-02-22 01:31:37 -08:00
2011-01-05 21:13:11 -08:00
static void
gl9_con ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
elm_genlist_item_subitems_clear ( glit ) ;
2011-01-05 21:13:11 -08:00
}
static void
gl9_exp_req ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_TRUE ) ;
2011-01-05 21:13:11 -08:00
}
2012-02-22 01:31:37 -08:00
2011-01-05 21:13:11 -08:00
static void
gl9_con_req ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_FALSE ) ;
2011-01-05 21:13:11 -08:00
}
void
test_genlist9 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * gl , * bx ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * git ;
2011-01-05 21:13:11 -08:00
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-group-tree " , " Genlist Group Tree " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2011-01-05 21:13:11 -08:00
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 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_smart_callback_add ( gl , " selected " , _gl_selected , NULL ) ;
2011-04-12 10:29:59 -07:00
evas_object_smart_callback_add ( gl , " clicked,double " , _gl_double_clicked , NULL ) ;
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( gl , " longpressed " , _gl_longpress , NULL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( gl ) ;
2012-02-20 00:26:17 -08:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2011-01-05 21:13:11 -08:00
2012-09-06 15:52:36 -07:00
itc_group = elm_genlist_item_class_new ( ) ;
itc_group - > item_style = " group_index " ;
itc_group - > func . text_get = gl8_text_get ;
itc_group - > func . content_get = NULL ;
itc_group - > func . state_get = NULL ;
itc_group - > func . del = NULL ;
2011-01-05 21:13:11 -08:00
2012-09-06 15:52:36 -07:00
git = elm_genlist_item_append ( gl , itc_group ,
2011-02-21 07:46:23 -08:00
( void * ) 0 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_GROUP , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-03-07 08:22:58 -08:00
elm_genlist_item_select_mode_set ( git , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2012-03-07 04:57:13 -08:00
( void * ) 1 /* item data */ , git /* parent */ , ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 2 /* item data */ , git /* parent */ , ELM_GENLIST_ITEM_NONE , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2012-03-07 04:57:13 -08:00
( void * ) 3 /* item data */ , git /* parent */ , ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-09-06 15:52:36 -07:00
git = elm_genlist_item_append ( gl , itc_group ,
2011-02-21 07:46:23 -08:00
( void * ) 4 /* item data */ , NULL /* parent */ , ELM_GENLIST_ITEM_GROUP , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-03-07 08:22:58 -08:00
elm_genlist_item_select_mode_set ( git , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2012-03-07 04:57:13 -08:00
( void * ) 5 /* item data */ , git /* parent */ , ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2011-02-21 07:46:23 -08:00
( void * ) 6 /* item data */ , git /* parent */ , ELM_GENLIST_ITEM_NONE , gl4_sel /* func */ ,
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2012-03-07 04:57:13 -08:00
( void * ) 7 /* item data */ , git /* parent */ , ELM_GENLIST_ITEM_TREE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_class_free ( itc1 ) ;
2012-09-06 15:52:36 -07:00
elm_genlist_item_class_free ( itc_group ) ;
2011-01-05 21:13:11 -08:00
evas_object_smart_callback_add ( gl , " expand,request " , gl9_exp_req , gl ) ;
evas_object_smart_callback_add ( gl , " contract,request " , gl9_con_req , gl ) ;
evas_object_smart_callback_add ( gl , " expanded " , gl9_exp , gl ) ;
evas_object_smart_callback_add ( gl , " contracted " , gl9_con , gl ) ;
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
2011-04-21 04:47:36 -07:00
/*************/
static Elm_Genlist_Item_Class itc10 ;
static char * mode_type [ ] = { " slide " , " rotate " } ;
2012-02-22 01:31:37 -08:00
2011-11-30 22:15:08 -08:00
char * gl10_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part )
2011-04-21 04:47:36 -07:00
{
char buf [ 256 ] ;
if ( ! strcmp ( part , " elm.text.mode " ) )
2013-02-16 19:53:02 -08:00
snprintf ( buf , sizeof ( buf ) , " Mode # %i " , ( int ) ( uintptr_t ) data ) ;
2011-04-21 04:47:36 -07:00
else
2013-02-16 19:53:02 -08:00
snprintf ( buf , sizeof ( buf ) , " Item # %i " , ( int ) ( uintptr_t ) data ) ;
2011-04-21 04:47:36 -07:00
return strdup ( buf ) ;
}
2011-10-23 19:10:35 -07:00
Evas_Object * gl10_content_get ( void * data __UNUSED__ , Evas_Object * obj , const char * part )
2011-04-21 04:47:36 -07:00
{
char buf [ PATH_MAX ] ;
Evas_Object * ic = elm_icon_add ( obj ) ;
if ( ! strcmp ( part , " elm.swallow.end " ) )
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/bubble.png " , elm_app_data_dir_get ( ) ) ;
2011-04-21 04:47:36 -07:00
else
2011-08-25 03:01:59 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/logo_small.png " , elm_app_data_dir_get ( ) ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
2011-04-21 04:47:36 -07:00
evas_object_size_hint_aspect_set ( ic , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
return ic ;
}
2012-02-22 01:31:37 -08:00
2011-04-21 04:47:36 -07:00
static void
_gl_sel10 ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
if ( ! data ) return ;
int v = elm_radio_value_get ( data ) ;
if ( v = = 1 )
2012-03-07 08:29:26 -08:00
elm_genlist_item_decorate_mode_set ( event_info , mode_type [ v ] , EINA_TRUE ) ;
2011-04-21 04:47:36 -07:00
}
static void
_my_gl_mode_right ( void * data , Evas_Object * obj __UNUSED__ , void * event_info )
{
if ( ! data ) return ;
int v = elm_radio_value_get ( data ) ;
if ( v = = 0 )
2012-03-07 08:29:26 -08:00
elm_genlist_item_decorate_mode_set ( event_info , mode_type [ v ] , EINA_TRUE ) ;
2011-04-21 04:47:36 -07:00
}
static void
_my_gl_mode_left ( void * data , Evas_Object * obj __UNUSED__ , void * event_info )
{
if ( ! data ) return ;
int v = elm_radio_value_get ( data ) ;
if ( v = = 0 )
2012-03-07 08:29:26 -08:00
elm_genlist_item_decorate_mode_set ( event_info , mode_type [ v ] , EINA_FALSE ) ;
2011-04-21 04:47:36 -07:00
}
static void
_my_gl_mode_cancel ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
{
fprintf ( stderr , " drag \n " ) ;
if ( ! data ) return ;
int v = elm_radio_value_get ( data ) ;
2012-06-16 03:12:25 -07:00
Elm_Object_Item * glit = elm_genlist_decorated_item_get ( obj ) ;
2012-03-07 08:29:26 -08:00
if ( glit ) elm_genlist_item_decorate_mode_set ( glit , mode_type [ v ] , EINA_FALSE ) ;
2011-04-21 04:47:36 -07:00
}
void
test_genlist10 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-04-03 05:53:23 -07:00
Evas_Object * win , * fr , * bx , * bx2 , * rd , * rdg , * gl ;
2011-04-21 04:47:36 -07:00
int i ;
2012-04-03 05:53:23 -07:00
win = elm_win_util_standard_add ( " genlist-decorate-item-mode " , " Genlist Decorate Item Mode " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2011-04-21 04:47:36 -07:00
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 ) ;
fr = elm_frame_add ( win ) ;
2012-11-26 03:51:49 -08:00
elm_object_text_set ( fr , " Decorate Item Mode Type " ) ;
2011-04-21 04:47:36 -07:00
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
bx2 = elm_box_add ( win ) ;
2011-10-28 21:32:24 -07:00
elm_object_content_set ( fr , bx2 ) ;
2011-04-21 04:47:36 -07:00
evas_object_show ( bx2 ) ;
rd = elm_radio_add ( win ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_radio_state_value_set ( rd , 0 ) ;
2012-04-03 05:53:23 -07:00
elm_object_text_set ( rd , " Slide : Sweep genlist items to the right. " ) ;
2011-04-21 04:47:36 -07:00
evas_object_show ( rd ) ;
2012-04-03 05:53:23 -07:00
elm_box_pack_end ( bx2 , rd ) ;
2011-04-21 04:47:36 -07:00
rdg = rd ;
rd = elm_radio_add ( win ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_radio_state_value_set ( rd , 1 ) ;
2012-04-03 05:53:23 -07:00
elm_object_text_set ( rd , " Rotate : Click each item. " ) ;
2011-04-21 04:47:36 -07:00
elm_radio_group_add ( rd , rdg ) ;
evas_object_show ( rd ) ;
2012-04-03 05:53:23 -07:00
elm_box_pack_end ( bx2 , rd ) ;
2011-04-21 04:47:36 -07:00
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_smart_callback_add ( gl , " drag,start,right " , _my_gl_mode_right , rdg ) ;
evas_object_smart_callback_add ( gl , " drag,start,left " , _my_gl_mode_left , rdg ) ;
evas_object_smart_callback_add ( gl , " drag,start,up " , _my_gl_mode_cancel , rdg ) ;
evas_object_smart_callback_add ( gl , " drag,start,down " , _my_gl_mode_cancel , rdg ) ;
evas_object_show ( gl ) ;
itc10 . item_style = " default " ;
2012-03-09 04:00:28 -08:00
itc10 . decorate_item_style = " mode " ;
2011-11-30 22:15:08 -08:00
itc10 . func . text_get = gl10_text_get ;
2011-10-23 19:10:35 -07:00
itc10 . func . content_get = gl10_content_get ;
2011-04-21 04:47:36 -07:00
itc10 . func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc10 . func . del = NULL ;
2011-04-21 04:47:36 -07:00
for ( i = 0 ; i < 50 ; i + + )
elm_genlist_item_append ( gl ,
& itc10 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( 1000 + i ) /* item data */ ,
2011-04-21 04:47:36 -07:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE /* flags */ ,
_gl_sel10 /* func */ ,
rdg /* func data */ ) ;
elm_box_pack_end ( bx , gl ) ;
evas_object_resize ( win , 520 , 520 ) ;
evas_object_show ( win ) ;
}
2011-06-01 20:10:11 -07:00
/*************/
static void
2011-06-03 18:52:08 -07:00
_reorder_tg_changed_cb ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
2011-06-01 20:10:11 -07:00
{
2011-10-20 14:27:15 -07:00
elm_genlist_reorder_mode_set ( data , elm_check_state_get ( obj ) ) ;
2011-06-01 20:10:11 -07:00
}
/**
* gl_moved is called after an item was reordered .
* This is only called when reorder mode is enabled .
*
2011-10-20 19:43:08 -07:00
* @ param data : the genlist object passed as data .
2011-06-01 20:10:11 -07:00
* @ param obj : the genlist object .
* @ param item : the moved item .
*
2012-03-21 04:50:33 -07:00
* the item ( * item ) had been moved
*
*/
static void gl_moved ( Evas_Object * data __UNUSED__ , Evas_Object * obj __UNUSED__ , Elm_Object_Item * item __UNUSED__ )
{
// if needed, add application logic.
}
/**
* gl_moved_after is called after an item was reordered .
* This is only called when reorder mode is enabled .
*
* @ param data : the genlist object passed as data .
* @ param obj : the genlist object .
* @ param item : the moved item .
*
2011-06-01 20:10:11 -07:00
* the item ( * item ) had been moved after the given relative item ( * rel_item ) in list .
2012-03-21 04:50:33 -07:00
*
*/
static void gl_moved_after ( Evas_Object * data __UNUSED__ , Evas_Object * obj __UNUSED__ , Elm_Object_Item * item __UNUSED__ )
{
// if needed, add application logic.
Elm_Object_Item * it ;
it = elm_genlist_item_prev_get ( item ) ;
2012-07-31 13:07:09 -07:00
printf ( " it=%p, prev_it=%p \n " , item , it ) ;
2012-03-21 04:50:33 -07:00
}
/**
* gl_moved_before is called after an item was reordered .
* This is only called when reorder mode is enabled .
*
* @ param data : the genlist object passed as data .
* @ param obj : the genlist object .
* @ param item : the moved item .
*
2011-06-01 20:10:11 -07:00
* the item ( * item ) had been moved before the given relative item ( * rel_item ) in list .
*
*/
2012-03-21 04:50:33 -07:00
static void gl_moved_before ( Evas_Object * data __UNUSED__ , Evas_Object * obj __UNUSED__ , Elm_Object_Item * item __UNUSED__ )
2011-06-01 20:10:11 -07:00
{
// if needed, add application logic.
2012-03-21 04:50:33 -07:00
Elm_Object_Item * it ;
it = elm_genlist_item_next_get ( item ) ;
2012-07-31 13:07:09 -07:00
printf ( " it=%p, next_it=%p \n " , item , it ) ;
2011-06-01 20:10:11 -07:00
}
void
test_genlist11 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * fr , * lb , * bx , * tg , * gl ;
2011-06-01 20:10:11 -07:00
int i ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-reorder-mode " , " Genlist Reorder Mode " ) ;
2011-07-25 07:22:19 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2011-06-01 20:10:11 -07:00
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 ) ;
fr = elm_frame_add ( win ) ;
2011-06-29 02:11:48 -07:00
elm_object_text_set ( fr , " Reorder Mode " ) ;
2011-06-01 20:10:11 -07:00
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
lb = elm_label_add ( win ) ;
2011-06-28 23:41:31 -07:00
elm_object_text_set ( lb ,
2011-12-08 04:39:18 -08:00
" Enable reorder mode if you want to move item.<br/> "
2011-06-01 20:10:11 -07:00
" Then long press and drag item. " ) ;
2011-10-28 21:32:24 -07:00
elm_object_content_set ( fr , lb ) ;
2011-06-01 20:10:11 -07:00
evas_object_show ( lb ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( gl ) ;
2011-10-20 14:27:15 -07:00
tg = elm_check_add ( win ) ;
elm_object_style_set ( tg , " toggle " ) ;
2011-06-29 01:57:43 -07:00
elm_object_text_set ( tg , " Reorder Mode: " ) ;
2012-03-06 04:04:25 -08:00
elm_check_state_set ( tg , elm_config_mirrored_get ( ) ) ;
2011-06-03 18:52:08 -07:00
evas_object_smart_callback_add ( tg , " changed " , _reorder_tg_changed_cb , gl ) ;
2011-06-01 20:10:11 -07:00
elm_box_pack_end ( bx , tg ) ;
evas_object_show ( tg ) ;
2012-02-20 00:26:17 -08:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2011-10-20 19:43:08 -07:00
evas_object_smart_callback_add ( gl , " moved " , ( Evas_Smart_Cb ) gl_moved , gl ) ;
2012-03-21 04:50:33 -07:00
evas_object_smart_callback_add ( gl , " moved,after " , ( Evas_Smart_Cb ) gl_moved_after , gl ) ;
evas_object_smart_callback_add ( gl , " moved,before " , ( Evas_Smart_Cb ) gl_moved_before , gl ) ;
2011-06-01 20:10:11 -07:00
for ( i = 0 ; i < 50 ; i + + )
elm_genlist_item_append ( gl ,
2012-02-20 00:26:17 -08:00
itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( 1 + i ) /* item data */ ,
2011-06-01 20:10:11 -07:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE /* flags */ ,
NULL /* func */ ,
NULL /* func data */ ) ;
2012-02-20 00:26:17 -08:00
elm_genlist_item_class_free ( itc1 ) ;
2011-06-01 20:10:11 -07:00
elm_box_pack_end ( bx , gl ) ;
evas_object_resize ( win , 400 , 500 ) ;
evas_object_show ( win ) ;
}
2011-09-08 03:21:04 -07:00
2012-06-15 00:58:05 -07:00
/*************/
2011-11-30 22:15:08 -08:00
char * gl12_text_get ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
2011-09-08 03:21:04 -07:00
{
return strdup ( " Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager. It covers uses from small mobile devices like phones all the way to powerful multi-core desktops (which are the primary development environment) . " ) ;
}
void
test_genlist12 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * bx , * gl ;
2011-09-08 03:21:04 -07:00
int i ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-textblock " , " Genlist Textblock " ) ;
2011-09-08 03:21:04 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
gl = elm_genlist_add ( win ) ;
2012-03-07 08:07:34 -08:00
elm_genlist_mode_set ( gl , ELM_LIST_COMPRESS ) ;
2011-09-08 03:21:04 -07:00
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( gl ) ;
2012-03-15 01:52:19 -07:00
itc1 = elm_genlist_item_class_new ( ) ;
2012-02-20 00:26:17 -08:00
itc1 - > item_style = " message " ;
itc1 - > func . text_get = gl12_text_get ;
itc1 - > func . content_get = gl_content_get ;
itc1 - > func . state_get = gl_state_get ;
2012-02-22 01:31:37 -08:00
itc1 - > func . del = NULL ;
2011-09-08 03:21:04 -07:00
for ( i = 0 ; i < 1000 ; i + + )
{
2012-02-20 00:26:17 -08:00
elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2011-10-24 16:43:34 -07:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2011-09-08 03:21:04 -07:00
}
2012-02-20 00:26:17 -08:00
elm_genlist_item_class_free ( itc1 ) ;
2011-09-08 03:21:04 -07:00
evas_object_resize ( win , 400 , 500 ) ;
evas_object_show ( win ) ;
}
2012-01-06 15:38:33 -08:00
2012-06-15 00:58:05 -07:00
/*************/
2012-01-06 15:38:33 -08:00
static int
gl13_cmp ( const void * pa , const void * pb )
{
2012-01-19 21:18:31 -08:00
const Elm_Object_Item * ia = pa , * ib = pb ;
2013-02-16 19:53:02 -08:00
int a = ( int ) ( uintptr_t ) elm_object_item_data_get ( ia ) ;
int b = ( int ) ( uintptr_t ) elm_object_item_data_get ( ib ) ;
2012-01-06 15:38:33 -08:00
return a - b ;
}
void
test_genlist13 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * pi [ 6 ] ;
2012-02-22 01:31:37 -08:00
Evas_Object * win , * bx , * gl ; int i , base , idx [ 3 ] = { 1 , 10 , 15 } ;
2012-01-06 15:38:33 -08:00
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-tree-insert-sorted " , " Genlist Tree, Insert Sorted " ) ;
2012-01-06 15:38:33 -08:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( gl ) ;
2012-03-15 01:52:19 -07:00
itc4 = elm_genlist_item_class_new ( ) ;
itc4 - > item_style = " default " ;
itc4 - > func . text_get = gl4_text_get ;
itc4 - > func . content_get = NULL ;
itc4 - > func . state_get = NULL ;
itc4 - > func . del = NULL ;
2012-01-06 15:38:33 -08:00
/* mixed order to test insert sorted */
for ( i = 0 ; i < 3 ; i + + )
{
2012-02-27 23:17:00 -08:00
pi [ i ] = elm_genlist_item_sorted_insert
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) idx [ i ] /* item data */ , NULL /* parent */ ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , gl13_cmp /* cmp */ ,
2012-01-06 15:38:33 -08:00
NULL /* func */ , NULL /* func data */ ) ;
}
for ( i = 0 , base = 100 ; i < 3 ; i + + , base + = 100 )
{
int j ;
for ( j = 0 ; j < 3 ; j + + )
{
2012-02-27 23:17:00 -08:00
elm_genlist_item_sorted_insert
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ j ] + base ) /* item data */ ,
2012-01-06 15:38:33 -08:00
pi [ i ] /* parent */ , ELM_GENLIST_ITEM_NONE ,
gl13_cmp /* cmp */ , NULL /* func */ , NULL /* func data */ ) ;
}
}
for ( i = 0 ; i < 3 ; i + + )
{
2012-02-27 23:17:00 -08:00
pi [ i + 3 ] = elm_genlist_item_sorted_insert
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ i ] * 2 ) /* item data */ , NULL /* parent */ ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , gl13_cmp /* cmp */ , NULL /* func */ ,
2012-01-06 15:38:33 -08:00
NULL /* func data */ ) ;
}
for ( i = 0 , base = 10000 ; i < 3 ; i + + , base + = 10000 )
{
int j ;
for ( j = 0 ; j < 3 ; j + + )
{
2012-02-27 23:17:00 -08:00
elm_genlist_item_sorted_insert
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ j ] + base ) /* item data */ ,
2012-01-06 15:38:33 -08:00
pi [ i + 3 ] /* parent */ , ELM_GENLIST_ITEM_NONE ,
gl13_cmp /* cmp */ , NULL /* func */ , NULL /* func data */ ) ;
}
}
2012-03-15 01:52:19 -07:00
elm_genlist_item_class_free ( itc4 ) ;
2012-01-06 15:38:33 -08:00
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( bx ) ;
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2012-01-06 18:02:02 -08:00
2012-06-15 00:58:05 -07:00
/*************/
2012-01-06 18:02:02 -08:00
static void
my_gl_insert_before_rel ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Evas_Object * gl = data ;
static int i = 1000 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli_selected ;
2012-01-06 18:02:02 -08:00
2012-08-14 02:17:47 -07:00
if ( ! itc1 ) itc1 = elm_genlist_item_class_new ( ) ;
2012-02-20 00:26:17 -08:00
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = NULL ;
itc1 - > func . state_get = NULL ;
itc1 - > func . del = NULL ;
2012-01-06 18:02:02 -08:00
gli_selected = elm_genlist_selected_item_get ( gl ) ;
if ( ! gli_selected )
{
2012-07-31 13:07:09 -07:00
printf ( " no item selected \n " ) ;
2012-01-06 18:02:02 -08:00
return ;
}
2012-02-20 00:26:17 -08:00
elm_genlist_item_insert_before ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2012-01-06 18:02:02 -08:00
elm_genlist_item_parent_get ( gli_selected ) ,
gli_selected /* item before */ ,
ELM_GENLIST_ITEM_NONE ,
NULL /* func */ , NULL /* func data */ ) ;
i + + ;
}
static void
my_gl_insert_after_rel ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Evas_Object * gl = data ;
static int i = 0 ;
2012-01-19 21:18:31 -08:00
Elm_Object_Item * gli_selected ;
2012-01-06 18:02:02 -08:00
2012-08-14 02:17:47 -07:00
if ( ! itc1 ) itc1 = elm_genlist_item_class_new ( ) ;
2012-02-20 00:26:17 -08:00
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_text_get ;
itc1 - > func . content_get = NULL ;
itc1 - > func . state_get = NULL ;
itc1 - > func . del = NULL ;
2012-01-06 18:02:02 -08:00
gli_selected = elm_genlist_selected_item_get ( gl ) ;
if ( ! gli_selected )
{
2012-07-31 13:07:09 -07:00
printf ( " no item selected \n " ) ;
2012-01-06 18:02:02 -08:00
return ;
}
2012-02-20 00:26:17 -08:00
elm_genlist_item_insert_after ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2012-01-06 18:02:02 -08:00
elm_genlist_item_parent_get ( gli_selected ) ,
gli_selected /* item after */ ,
ELM_GENLIST_ITEM_NONE ,
NULL /* func */ , NULL /* func data */ ) ;
i + + ;
}
void
test_genlist14 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * pi [ 6 ] ;
2012-02-22 01:31:37 -08:00
Evas_Object * win , * bx , * bx2 , * bt , * gl ;
2012-01-29 17:08:54 -08:00
int i , base ;
2012-01-06 18:02:02 -08:00
/* index: 0, 1, 2, 3, 4, 5
* items : 1 , 15 , 11 , 2 , 33 , 21
* final : 1 , 2 , 11 , 15 , 21 , 33
*/
2012-01-29 17:08:54 -08:00
const int idx [ 6 ] = { 1 , 15 , 11 , 2 , 33 , 21 } ;
2012-01-06 18:02:02 -08:00
const int relative [ 6 ] = {
0 , /* item '1' - not used */
0 , /* item '15' - insert after pi[0], item '1' */
- 1 , /* item '11' - insert before pi[1], item '15' */
- 2 , /* item '2' - insert before pi[2], item '11' */
1 , /* item '33' - insert after pi[1], item '15' */
- 4 /* item '21' - insert before pi[4], item '33' */
} ;
2012-02-22 01:31:37 -08:00
win = elm_win_util_standard_add ( " genlist-tree-insert-relative " , " Genlist Tree, Insert Relative " ) ;
2012-01-06 18:02:02 -08:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( gl ) ;
2012-03-15 01:52:19 -07:00
itc4 = elm_genlist_item_class_new ( ) ;
itc4 - > item_style = " default " ;
itc4 - > func . text_get = gl4_text_get ;
itc4 - > func . content_get = NULL ;
itc4 - > func . state_get = NULL ;
itc4 - > func . del = NULL ;
2012-01-06 18:02:02 -08:00
/* mixed order to test insert sorted */
// BUG1: should be able to insert before=NULL, prepend
// BUG2: should be able to insert after=NULL, append
pi [ 0 ] = elm_genlist_item_append
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) idx [ 0 ] /* item data */ ,
2012-01-06 18:02:02 -08:00
NULL /* parent */ ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
for ( i = 1 ; i < 3 ; i + + )
{
if ( relative [ i ] < 0 )
pi [ i ] = elm_genlist_item_insert_before
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) idx [ i ] /* item data */ ,
2012-01-06 18:02:02 -08:00
NULL /* parent */ , pi [ - relative [ i ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
else
pi [ i ] = elm_genlist_item_insert_after
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) idx [ i ] /* item data */ ,
2012-01-06 18:02:02 -08:00
NULL /* parent */ , pi [ relative [ i ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
}
for ( i = 0 ; i < 3 ; i + + )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * sub_glit [ 6 ] ;
2012-01-06 18:02:02 -08:00
int j ;
2013-02-16 19:53:02 -08:00
base = 1000 * ( int ) ( uintptr_t ) elm_object_item_data_get ( pi [ i ] ) ;
2012-01-06 18:02:02 -08:00
2012-01-19 21:18:31 -08:00
sub_glit [ 0 ] = elm_genlist_item_append
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ 0 ] + base ) /* item data */ , pi [ i ] /* parent */ ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
for ( j = 1 ; j < 6 ; j + + ) {
if ( relative [ j ] < 0 )
2012-01-19 21:18:31 -08:00
sub_glit [ j ] = elm_genlist_item_insert_before
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ j ] + base ) /* item data */ ,
2012-01-19 21:18:31 -08:00
pi [ i ] /* parent */ , sub_glit [ - relative [ j ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
else
2012-01-19 21:18:31 -08:00
sub_glit [ j ] = elm_genlist_item_insert_after
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ j ] + base ) /* item data */ ,
2012-01-19 21:18:31 -08:00
pi [ i ] /* parent */ , sub_glit [ relative [ j ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
}
}
for ( i = 3 ; i < 6 ; i + + )
{
if ( relative [ i ] < 0 )
pi [ i ] = elm_genlist_item_insert_before
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) idx [ i ] /* item data */ ,
2012-01-06 18:02:02 -08:00
NULL /* parent */ , pi [ - relative [ i ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
else
pi [ i ] = elm_genlist_item_insert_after
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) idx [ i ] /* item data */ ,
2012-01-06 18:02:02 -08:00
NULL /* parent */ , pi [ relative [ i ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
}
for ( i = 3 ; i < 6 ; i + + )
{
2012-01-19 21:18:31 -08:00
Elm_Object_Item * sub_glit [ 6 ] ;
2012-01-06 18:02:02 -08:00
int j ;
2013-02-16 19:53:02 -08:00
base = 1000 * ( int ) ( uintptr_t ) elm_object_item_data_get ( pi [ i ] ) ;
2012-01-06 18:02:02 -08:00
2012-01-19 21:18:31 -08:00
sub_glit [ 0 ] = elm_genlist_item_append
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ 0 ] + base ) /* item data */ , pi [ i ] /* parent */ ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
for ( j = 1 ; j < 6 ; j + + ) {
if ( relative [ j ] < 0 )
2012-01-19 21:18:31 -08:00
sub_glit [ j ] = elm_genlist_item_insert_before
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ j ] + base ) /* item data */ ,
2012-01-19 21:18:31 -08:00
pi [ i ] /* parent */ , sub_glit [ - relative [ j ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
else
2012-01-19 21:18:31 -08:00
sub_glit [ j ] = elm_genlist_item_insert_after
2013-02-16 19:53:02 -08:00
( gl , itc4 , ( void * ) ( uintptr_t ) ( idx [ j ] + base ) /* item data */ ,
2012-01-19 21:18:31 -08:00
pi [ i ] /* parent */ , sub_glit [ relative [ j ] ] ,
2012-03-07 04:57:13 -08:00
ELM_GENLIST_ITEM_TREE , NULL /* func */ , NULL /* func data */ ) ;
2012-01-06 18:02:02 -08:00
}
}
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( bx ) ;
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " + before " ) ;
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_before_rel , gl ) ;
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " + after " ) ;
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_after_rel , gl ) ;
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
2012-03-15 01:52:19 -07:00
/* item_class_ref is needed for itc4. some items can be added in callbacks */
elm_genlist_item_class_ref ( itc4 ) ;
elm_genlist_item_class_free ( itc4 ) ;
2012-02-20 00:26:17 -08:00
2012-01-06 18:02:02 -08:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2012-02-22 23:39:10 -08:00
2012-06-15 00:58:05 -07:00
/*************/
2012-02-22 23:39:10 -08:00
static void _edit_icon_clicked_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Elm_Object_Item * item = ( Elm_Object_Item * ) data ;
elm_object_item_del ( item ) ;
}
char * gl15_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
{
const Testitem * tit = data ;
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item #%i " , tit - > mode ) ;
return strdup ( buf ) ;
}
Evas_Object * gl15_content_get ( void * data , Evas_Object * obj , const char * part )
{
Testitem * tit = data ;
char buf [ PATH_MAX ] ;
2013-01-14 04:01:25 -08:00
// "edit" EDC layout is like below. each part is swallow part.
2012-02-22 23:39:10 -08:00
// the existing item is swllowed to elm.swallow.edit.content part.
2012-04-01 19:37:05 -07:00
// --------------------------------------------------------------------
// | elm.edit.icon.1 | elm.swallow.decorate.content | elm.edit.icon,2 |
// --------------------------------------------------------------------
2012-02-22 23:39:10 -08:00
if ( ! strcmp ( part , " elm.swallow.end " ) )
{
2012-02-29 19:38:45 -08:00
Evas_Object * ic = elm_icon_add ( obj ) ;
2012-02-22 23:39:10 -08:00
snprintf ( buf , sizeof ( buf ) , " %s/images/bubble.png " , PACKAGE_DATA_DIR ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( ic , buf , NULL ) ;
2012-02-22 23:39:10 -08:00
evas_object_size_hint_aspect_set ( ic , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
return ic ;
}
else if ( ! strcmp ( part , " elm.edit.icon.1 " ) )
{
Evas_Object * ck ;
ck = elm_check_add ( obj ) ;
elm_check_state_pointer_set ( ck , & tit - > checked ) ;
evas_object_propagate_events_set ( ck , EINA_FALSE ) ;
evas_object_show ( ck ) ;
return ck ;
}
else if ( ! strcmp ( part , " elm.edit.icon.2 " ) )
{
2012-02-23 05:58:49 -08:00
Evas_Object * icn = elm_icon_add ( obj ) ;
2012-02-22 23:39:10 -08:00
snprintf ( buf , sizeof ( buf ) , " %s/images/icon_06.png " , PACKAGE_DATA_DIR ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( icn , buf , NULL ) ;
2012-02-23 05:58:49 -08:00
evas_object_propagate_events_set ( icn , EINA_FALSE ) ;
evas_object_size_hint_aspect_set ( icn , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
evas_object_smart_callback_add ( icn , " clicked " , _edit_icon_clicked_cb , ( void * ) tit - > item ) ;
return icn ;
2012-02-22 23:39:10 -08:00
}
else return NULL ;
}
static void
gl15_sel ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
{
Testitem * tit = data ;
2012-03-07 08:56:21 -08:00
if ( elm_genlist_decorate_mode_get ( obj ) )
2012-02-22 23:39:10 -08:00
{
if ( ! tit - > checked ) tit - > checked = EINA_TRUE ;
else tit - > checked = EINA_FALSE ;
}
elm_genlist_item_update ( tit - > item ) ;
}
static void
2012-04-01 19:37:05 -07:00
gl15_deco_all_mode ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
2012-02-22 23:39:10 -08:00
{
2012-03-07 08:56:21 -08:00
elm_genlist_decorate_mode_set ( data , EINA_TRUE ) ;
2012-03-07 08:01:37 -08:00
elm_genlist_select_mode_set ( data , ELM_OBJECT_SELECT_MODE_ALWAYS ) ;
2012-02-22 23:39:10 -08:00
}
static void
gl15_normal_mode ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-03-07 08:56:21 -08:00
elm_genlist_decorate_mode_set ( data , EINA_FALSE ) ;
2012-03-07 08:01:37 -08:00
elm_genlist_select_mode_set ( data , ELM_OBJECT_SELECT_MODE_DEFAULT ) ;
2012-02-22 23:39:10 -08:00
}
2012-02-22 23:46:05 -08:00
void gl15_del ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ )
{
2013-04-17 09:08:13 -07:00
Testitem * ti = data ;
printf ( " item deleted. (# %d) \n " , ti - > mode ) ;
2012-02-22 23:46:05 -08:00
}
2012-03-15 01:52:19 -07:00
static Elm_Genlist_Item_Class * itc15 ;
2012-02-22 23:39:10 -08:00
void
test_genlist15 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-03-02 04:07:55 -08:00
Evas_Object * win , * bx , * bx2 , * bt , * gl ;
2012-02-22 23:39:10 -08:00
int i ;
static Testitem tit [ 100 ] ;
2012-04-01 19:37:05 -07:00
win = elm_win_util_standard_add ( " genlist-decorate-all-mode " , " Genlist Decorate All Mode " ) ;
2012-02-22 23:39:10 -08:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( gl ) ;
2012-02-22 23:46:05 -08:00
itc15 = elm_genlist_item_class_new ( ) ;
itc15 - > item_style = " default " ;
itc15 - > func . text_get = gl15_text_get ;
itc15 - > func . content_get = gl15_content_get ;
itc15 - > func . state_get = gl_state_get ;
itc15 - > func . del = gl15_del ;
2012-03-09 04:00:28 -08:00
itc15 - > decorate_all_item_style = " edit " ;
2012-02-22 23:39:10 -08:00
for ( i = 0 ; i < 100 ; i + + )
{
tit [ i ] . mode = i ;
2012-02-22 23:47:59 -08:00
tit [ i ] . item = elm_genlist_item_append ( gl , itc15 ,
2012-02-22 23:39:10 -08:00
& ( tit [ i ] ) /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE /* flags */ ,
gl15_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) & ( tit [ i ] ) /* func data */ ) ;
2012-02-22 23:39:10 -08:00
}
2012-02-22 23:46:05 -08:00
elm_genlist_item_class_free ( itc15 ) ;
2012-02-22 23:39:10 -08:00
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( bx ) ;
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
elm_box_homogeneous_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
bt = elm_button_add ( win ) ;
2012-04-01 19:37:05 -07:00
elm_object_text_set ( bt , " Decorate All mode " ) ;
evas_object_smart_callback_add ( bt , " clicked " , gl15_deco_all_mode , gl ) ;
2012-02-22 23:39:10 -08:00
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Normal mode " ) ;
evas_object_smart_callback_add ( bt , " clicked " , gl15_normal_mode , gl ) ;
evas_object_size_hint_align_set ( bt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( bt , EVAS_HINT_EXPAND , 0.0 ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
evas_object_resize ( win , 520 , 520 ) ;
evas_object_show ( win ) ;
}
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
2012-06-15 00:58:05 -07:00
/*************/
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
static void _flip_icon_clicked_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
const Testitem * tit = data ;
if ( elm_genlist_item_flip_get ( tit - > item ) )
elm_genlist_item_flip_set ( tit - > item , EINA_FALSE ) ;
else
elm_genlist_item_flip_set ( tit - > item , EINA_TRUE ) ;
}
char * gl16_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part __UNUSED__ )
{
const Testitem * tit = data ;
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item #%i " , tit - > mode ) ;
return strdup ( buf ) ;
}
Evas_Object * gl16_content_get ( void * data , Evas_Object * obj , const char * part )
{
Testitem * tit = data ;
char buf [ PATH_MAX ] ;
if ( ! strcmp ( part , " elm.text.flip " ) )
{
Evas_Object * btn = elm_button_add ( obj ) ;
elm_object_text_set ( btn , " flipped content placement " ) ;
evas_object_size_hint_align_set ( btn , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( btn , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( btn , " clicked " , _flip_icon_clicked_cb , ( void * ) tit ) ;
evas_object_show ( btn ) ;
return btn ;
}
else if ( ! strcmp ( part , " elm.edit.icon.1 " ) )
{
Evas_Object * icn = elm_icon_add ( obj ) ;
snprintf ( buf , sizeof ( buf ) , " %s/images/icon_04.png " , PACKAGE_DATA_DIR ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( icn , buf , NULL ) ;
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
evas_object_propagate_events_set ( icn , EINA_FALSE ) ;
evas_object_size_hint_aspect_set ( icn , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
return icn ;
}
else if ( ! strcmp ( part , " elm.edit.icon.2 " ) )
{
Evas_Object * icn = elm_icon_add ( obj ) ;
snprintf ( buf , sizeof ( buf ) , " %s/images/icon_09.png " , PACKAGE_DATA_DIR ) ;
2012-05-28 14:50:11 -07:00
elm_image_file_set ( icn , buf , NULL ) ;
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
evas_object_propagate_events_set ( icn , EINA_FALSE ) ;
evas_object_size_hint_aspect_set ( icn , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
evas_object_smart_callback_add ( icn , " clicked " , _flip_icon_clicked_cb , ( void * ) tit ) ;
return icn ;
}
else return NULL ;
}
void
test_genlist16 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Evas_Object * win , * bx , * gl ;
int i ;
static Testitem tit [ 100 ] ;
win = elm_win_util_standard_add ( " genlist-flip-mode " , " Genlist Flip Mode " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( gl ) ;
2012-03-05 18:13:28 -08:00
/* note: flip mode can be used with/without edit mode */
2012-03-07 08:56:21 -08:00
elm_genlist_decorate_mode_set ( gl , EINA_TRUE ) ;
2012-03-07 08:01:37 -08:00
elm_genlist_select_mode_set ( gl , ELM_OBJECT_SELECT_MODE_ALWAYS ) ;
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
itc15 = elm_genlist_item_class_new ( ) ;
itc15 - > item_style = " default " ;
itc15 - > func . text_get = gl16_text_get ;
itc15 - > func . content_get = gl16_content_get ;
itc15 - > func . state_get = gl_state_get ;
itc15 - > func . del = NULL ;
2012-03-09 04:00:28 -08:00
itc15 - > decorate_all_item_style = " edit " ;
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
for ( i = 0 ; i < 100 ; i + + )
{
tit [ i ] . mode = i ;
tit [ i ] . item = elm_genlist_item_append ( gl , itc15 ,
& ( tit [ i ] ) /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE /* flags */ ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) & ( tit [ i ] ) /* func data */ ) ;
elm genlist: Added elm_genlist_item_flip_get/set APIs. Patch by
Hyoyoung Chang <hyoyoung@gmail.com>
On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Dear all.
>
> I made a patch to introduce new genlist item mode.
> Two public apis are added.
> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool
flip);
> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>
> It provides on-the-flying item change. It works like that a new item
> added on existed item.
> In elementary test, you can test it.
> It's useful at adding widgets or show buttons in genlist item.
>
> Thanks.
On Mon, Mar 5, 2012 at 5:56 PM, Hyoyoung Chang <hyoyoung@gmail.com>
wrote:
> Hello, I modifed fliP_set api to use ecore_job.
> It resolved version of mouse_{move, up} bugs.
>
SVN revision: 68727
2012-03-05 07:03:12 -08:00
}
elm_genlist_item_class_free ( itc15 ) ;
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( bx ) ;
evas_object_resize ( win , 520 , 520 ) ;
evas_object_show ( win ) ;
}
2012-06-15 00:58:11 -07:00
/*************/
static Elm_Genlist_Item_Class * itc17 ;
char *
gl17_text_get ( void * data , Evas_Object * obj __UNUSED__ , const char * part )
{
const Testitem * tit = data ;
char buf [ 256 ] ;
if ( ! strcmp ( part , " elm.text.mode " ) )
snprintf ( buf , sizeof ( buf ) , " Mode # %i " , tit - > mode ) ;
else
2013-02-16 19:53:02 -08:00
snprintf ( buf , sizeof ( buf ) , " Item # %i " , ( int ) ( uintptr_t ) data ) ;
2012-06-15 00:58:11 -07:00
return strdup ( buf ) ;
}
Evas_Object *
_decorate_item_mode_frame_new ( Evas_Object * win , Evas_Object * * rdg )
{
Evas_Object * fr , * bx , * rd ;
fr = elm_frame_add ( win ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_object_text_set ( fr , " Decorate Item Mode Type " ) ;
evas_object_show ( fr ) ;
bx = elm_box_add ( win ) ;
elm_object_content_set ( fr , bx ) ;
evas_object_show ( bx ) ;
rd = elm_radio_add ( win ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_radio_state_value_set ( rd , 0 ) ;
elm_object_text_set ( rd , " Slide : Sweep genlist items to the right. " ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
* rdg = rd ;
rd = elm_radio_add ( win ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_radio_state_value_set ( rd , 1 ) ;
elm_object_text_set ( rd , " Rotate : Click each item. " ) ;
elm_radio_group_add ( rd , * rdg ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
return fr ;
}
void
_decorate_all_set_btn_clicked_cb ( void * data , Evas_Object * obj , void * event_info __UNUSED__ )
{
if ( ! data ) return ;
2012-06-19 07:51:38 -07:00
Evas_Object * gl ;
2012-06-15 00:58:11 -07:00
gl = evas_object_data_get ( obj , " gl " ) ;
if ( ! gl ) return ;
2012-06-21 00:48:00 -07:00
if ( evas_object_data_get ( gl , " tree_effect " ) )
elm_genlist_tree_effect_enabled_set ( gl , EINA_FALSE ) ;
2012-06-15 00:58:11 -07:00
elm_genlist_decorate_mode_set ( gl , EINA_TRUE ) ;
}
void
_decorate_all_unset_btn_clicked_cb ( void * data , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
2012-06-21 00:48:00 -07:00
if ( evas_object_data_get ( data , " tree_effect " ) )
elm_genlist_tree_effect_enabled_set ( data , EINA_TRUE ) ;
2012-06-15 00:58:11 -07:00
elm_genlist_decorate_mode_set ( data , EINA_FALSE ) ;
}
Evas_Object *
_decorate_all_mode_frame_new ( Evas_Object * win , Evas_Object * rdg , Evas_Object * gl )
{
Evas_Object * fr , * bx , * btn ;
fr = elm_frame_add ( win ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_object_text_set ( fr , " Decorate All Mode Type " ) ;
evas_object_show ( fr ) ;
bx = elm_box_add ( win ) ;
elm_object_content_set ( fr , bx ) ;
evas_object_show ( bx ) ;
btn = elm_button_add ( win ) ;
evas_object_data_set ( btn , " gl " , gl ) ;
elm_object_text_set ( btn , " Set Decorate All Mode " ) ;
evas_object_smart_callback_add ( btn , " clicked " , _decorate_all_set_btn_clicked_cb , rdg ) ;
elm_box_pack_end ( bx , btn ) ;
evas_object_show ( btn ) ;
btn = elm_button_add ( win ) ;
elm_object_text_set ( btn , " Unset Decorate All Mode " ) ;
evas_object_smart_callback_add ( btn , " clicked " , _decorate_all_unset_btn_clicked_cb , gl ) ;
elm_box_pack_end ( bx , btn ) ;
evas_object_show ( btn ) ;
return fr ;
}
void
test_genlist17 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Evas_Object * win , * fr1 , * fr2 , * bx , * bx2 , * rdg = NULL , * gl ;
int i ;
static Testitem tit [ 50 ] ;
win = elm_win_util_standard_add ( " genlist-decorate-modes " , " Genlist Decorate Modes " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
bx2 = elm_box_add ( win ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
fr1 = _decorate_item_mode_frame_new ( win , & rdg ) ;
elm_box_pack_end ( bx2 , fr1 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_smart_callback_add ( gl , " drag,start,right " , _my_gl_mode_right , rdg ) ;
evas_object_smart_callback_add ( gl , " drag,start,left " , _my_gl_mode_left , rdg ) ;
evas_object_smart_callback_add ( gl , " drag,start,up " , _my_gl_mode_cancel , rdg ) ;
evas_object_smart_callback_add ( gl , " drag,start,down " , _my_gl_mode_cancel , rdg ) ;
evas_object_show ( gl ) ;
itc17 = elm_genlist_item_class_new ( ) ;
itc17 - > item_style = " default " ;
itc17 - > decorate_item_style = " mode " ;
2012-07-24 22:03:53 -07:00
itc17 - > func . text_get = gl15_text_get ;
2012-06-15 00:58:11 -07:00
itc17 - > func . content_get = gl15_content_get ;
itc17 - > func . state_get = gl_state_get ;
itc17 - > func . del = NULL ;
itc17 - > decorate_all_item_style = " edit " ;
for ( i = 0 ; i < 50 ; i + + )
{
tit [ i ] . checked = EINA_FALSE ;
tit [ i ] . mode = i ;
tit [ i ] . item = elm_genlist_item_append ( gl ,
itc17 ,
& ( tit [ i ] ) /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE /* flags */ ,
NULL /* select func */ ,
NULL /* func data */ ) ;
}
elm_genlist_item_class_free ( itc17 ) ;
elm_box_pack_end ( bx , gl ) ;
fr2 = _decorate_all_mode_frame_new ( win , rdg , gl ) ;
elm_box_pack_end ( bx2 , fr2 ) ;
evas_object_resize ( win , 520 , 520 ) ;
evas_object_show ( win ) ;
}
2012-06-21 00:48:00 -07:00
/*************/
Elm_Genlist_Item_Class * itc18 , * itc18_tree ;
Evas_Object *
_tree_effect_frame_new ( Evas_Object * win , Evas_Object * * rdg , Evas_Object * gl )
{
Evas_Object * fr , * bx , * rd ;
fr = elm_frame_add ( win ) ;
elm_object_text_set ( fr , " Genlist Tree Effect " ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_show ( fr ) ;
bx = elm_box_add ( win ) ;
elm_box_homogeneous_set ( bx , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( bx , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_object_content_set ( fr , bx ) ;
evas_object_show ( bx ) ;
rd = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd , 0 ) ;
elm_object_text_set ( rd , " Enable " ) ;
evas_object_smart_callback_add ( rd , " changed " , _tree_effect_enable_cb , gl ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
* rdg = rd ;
rd = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd , 1 ) ;
elm_radio_group_add ( rd , * rdg ) ;
elm_object_text_set ( rd , " Disable " ) ;
evas_object_smart_callback_add ( rd , " changed " , _tree_effect_disable_cb , gl ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
return fr ;
}
static void
gl18_sel ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
Elm_Object_Item * glit = event_info ;
int depth = elm_genlist_item_expanded_depth_get ( glit ) ;
2012-07-31 13:07:09 -07:00
printf ( " expanded depth for selected item is %d \n " , depth ) ;
2012-06-21 00:48:00 -07:00
}
static void
gl18_del ( void * data , Evas_Object * obj __UNUSED__ )
{
free ( data ) ;
}
static void
gl18_exp ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
Elm_Object_Item * glit = event_info ;
Evas_Object * gl = elm_object_item_widget_get ( glit ) ;
2012-06-21 03:56:12 -07:00
Testitem * tit = elm_object_item_data_get ( glit ) ;
int i , j , val ;
2012-06-21 00:48:00 -07:00
2012-06-21 03:56:12 -07:00
val = tit - > mode * 10 ;
for ( i = 0 ; i < 100 ; i + + )
2012-06-21 00:48:00 -07:00
{
tit = calloc ( 1 , sizeof ( Testitem ) ) ;
tit - > mode = val + i ;
tit - > item = elm_genlist_item_append ( gl ,
itc18_tree ,
tit /* item data */ ,
glit /* parent */ ,
ELM_GENLIST_ITEM_TREE ,
gl18_sel /* func */ ,
NULL /* func data */ ) ;
}
for ( j = 0 ; j < 3 ; j + + )
{
tit = calloc ( 1 , sizeof ( Testitem ) ) ;
tit - > mode = i ;
tit - > item = elm_genlist_item_append ( gl ,
itc18 ,
tit /* item data */ ,
glit /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl18_sel /* func */ ,
NULL /* func data */ ) ;
i + + ;
}
}
static void
gl18_con ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info )
{
Elm_Object_Item * glit = event_info ;
elm_genlist_item_subitems_clear ( glit ) ;
}
static void
gl18_exp_req ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ ,
void * event_info )
{
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_TRUE ) ;
}
static void
gl18_con_req ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ ,
void * event_info )
{
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_FALSE ) ;
}
void
test_genlist18 ( void * data __UNUSED__ ,
Evas_Object * obj __UNUSED__ ,
void * event_info __UNUSED__ )
{
Evas_Object * win , * gl , * bx , * fr1 , * fr2 , * bx2 , * rdg ;
Testitem * tit = NULL ;
int i , j ;
win = elm_win_util_standard_add ( " genlist-tree-decorate-all " ,
" Genlist Tree and Decorate All Mode " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
bx2 = elm_box_add ( win ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
gl = elm_genlist_add ( win ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( gl ) ;
elm_genlist_tree_effect_enabled_set ( gl , EINA_TRUE ) ;
evas_object_data_set ( gl , " tree_effect " , " true " ) ;
/* normal item */
itc18 = elm_genlist_item_class_new ( ) ;
2012-06-21 01:36:35 -07:00
itc18 - > item_style = " tree_effect " ; /* item/tree_effect */
2012-06-21 03:56:12 -07:00
itc18 - > func . text_get = gl15_text_get ;
2012-06-21 00:48:00 -07:00
itc18 - > func . content_get = gl15_content_get ;
2012-06-21 03:56:12 -07:00
itc18 - > func . state_get = gl_state_get ;
itc18 - > func . del = gl18_del ;
2012-06-21 00:48:00 -07:00
itc18 - > decorate_all_item_style = " edit " ;
/* expandable item */
itc18_tree = elm_genlist_item_class_new ( ) ;
2012-06-21 01:36:35 -07:00
itc18_tree - > item_style = " tree_effect " ; /* tree/tree_effect */
2012-06-21 03:56:12 -07:00
itc18_tree - > func . text_get = gl15_text_get ;
2012-06-21 00:48:00 -07:00
itc18_tree - > func . content_get = gl15_content_get ;
2012-06-21 03:56:12 -07:00
itc18_tree - > func . state_get = gl_state_get ;
2012-06-21 00:48:00 -07:00
itc18_tree - > func . del = gl18_del ;
itc18_tree - > decorate_all_item_style = " edit " ;
for ( i = 0 ; i < 5 ; i + + )
{
tit = calloc ( 1 , sizeof ( Testitem ) ) ;
tit - > mode = i ;
tit - > item = elm_genlist_item_append ( gl ,
itc18_tree ,
tit /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_TREE ,
gl18_sel /* func */ ,
NULL /* func data */ ) ;
}
for ( j = 0 ; j < 3 ; j + + )
{
tit = calloc ( 1 , sizeof ( Testitem ) ) ;
tit - > mode = i ;
tit - > item = elm_genlist_item_append ( gl ,
itc18 ,
tit /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl18_sel /* func */ ,
NULL /* func data */ ) ;
i + + ;
}
elm_genlist_item_class_free ( itc18 ) ;
elm_genlist_item_class_free ( itc18_tree ) ;
evas_object_smart_callback_add ( gl , " expand,request " , gl18_exp_req , gl ) ;
evas_object_smart_callback_add ( gl , " contract,request " , gl18_con_req , gl ) ;
evas_object_smart_callback_add ( gl , " expanded " , gl18_exp , gl ) ;
evas_object_smart_callback_add ( gl , " contracted " , gl18_con , gl ) ;
elm_box_pack_end ( bx , gl ) ;
fr1 = _tree_effect_frame_new ( win , & rdg , gl ) ;
elm_box_pack_end ( bx2 , fr1 ) ;
fr2 = _decorate_all_mode_frame_new ( win , rdg , gl ) ;
elm_box_pack_end ( bx2 , fr2 ) ;
evas_object_resize ( win , 400 , 800 ) ;
evas_object_show ( win ) ;
}
2012-07-31 13:07:09 -07:00
void
test_genlist19 ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ , void * event_info __UNUSED__ )
{
Evas_Object * win , * gl , * bt_50 , * bt_1500 , * bx , * bxx , * bt ;
Evas_Object * over ;
Elm_Object_Item * gli ;
int i ;
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
win = elm_win_util_standard_add ( " genlist-full " , " Genlist Full " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
bxx = elm_box_add ( win ) ;
elm_win_resize_object_add ( win , bxx ) ;
evas_object_size_hint_weight_set ( bxx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( bxx ) ;
bx = elm_box_add ( win ) ;
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( bx , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
api - > box = bx ;
evas_object_show ( bx ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Next API function " ) ;
evas_object_smart_callback_add ( bt , " clicked " , _api_bt_clicked , ( void * ) api ) ;
elm_box_pack_end ( bxx , bt ) ;
elm_object_disabled_set ( bt , api - > state = = API_STATE_LAST ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bxx , bx ) ;
gl = elm_genlist_add ( win ) ;
evas_object_smart_callback_add ( gl , " selected " , _gl_selected , NULL ) ;
evas_object_smart_callback_add ( gl , " clicked,double " , _gl_double_clicked , NULL ) ;
evas_object_smart_callback_add ( gl , " longpressed " , _gl_longpress , NULL ) ;
// FIXME: This causes genlist to resize the horiz axis very slowly :(
// Reenable this and resize the window horizontally, then try to resize it back
//elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , gl ) ;
evas_object_show ( gl ) ;
over = evas_object_rectangle_add ( evas_object_evas_get ( win ) ) ;
evas_object_color_set ( over , 0 , 0 , 0 , 0 ) ;
evas_object_event_callback_add ( over , EVAS_CALLBACK_MOUSE_MOVE , _move , gl ) ;
evas_object_repeat_events_set ( over , 1 ) ;
evas_object_show ( over ) ;
evas_object_size_hint_weight_set ( over , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_win_resize_object_add ( win , over ) ;
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " full " ;
2013-01-31 16:39:44 -08:00
itc1 - > func . text_get = NULL ;
2012-07-31 13:07:09 -07:00
itc1 - > func . content_get = gl_content_full_get ;
itc1 - > func . state_get = gl_state_get ;
itc1 - > func . del = NULL ;
bt_50 = elm_button_add ( win ) ;
elm_object_text_set ( bt_50 , " Go to 50 " ) ;
evas_object_show ( bt_50 ) ;
elm_box_pack_end ( bx , bt_50 ) ;
bt_1500 = elm_button_add ( win ) ;
elm_object_text_set ( bt_1500 , " Go to 1500 " ) ;
evas_object_show ( bt_1500 ) ;
elm_box_pack_end ( bx , bt_1500 ) ;
for ( i = 0 ; i < 2000 ; i + + )
{
gli = elm_genlist_item_append ( gl , itc1 ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) i /* item data */ ,
2012-07-31 13:07:09 -07:00
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
2013-02-16 19:53:02 -08:00
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2012-07-31 13:07:09 -07:00
if ( i = = 50 )
evas_object_smart_callback_add ( bt_50 , " clicked " , _bt50_cb , gli ) ;
else if ( i = = 1500 )
evas_object_smart_callback_add ( bt_1500 , " clicked " , _bt1500_cb , gli ) ;
}
elm_genlist_item_class_free ( itc1 ) ;
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
2012-11-27 07:21:27 -08:00
/* test genlist item styles */
const char * _genlist_styles [ ] = {
" default " , " full " , " one_icon " , " end_icon " , " no_icon " ,
" default_style " , " double_label " , " icon_top_text_bottom " ,
NULL
} ;
static void
_genlist_renew ( Evas_Object * obj , const char * style )
{
Elm_Genlist_Item_Class * ic ;
int i ;
if ( ! obj ) return ;
elm_genlist_clear ( obj ) ;
ic = elm_genlist_item_class_new ( ) ;
ic - > item_style = style ;
ic - > func . text_get = gl_text_get ;
ic - > func . content_get = gl_content_get ;
ic - > func . state_get = NULL ;
ic - > func . del = NULL ;
for ( i = 0 ; i < 50 ; i + + )
{
elm_genlist_item_append ( obj , ic , ( void * ) ( long ) i , NULL ,
ELM_GENLIST_ITEM_NONE , NULL , NULL ) ;
}
elm_genlist_item_class_free ( ic ) ;
}
static void
_item_style_sel_cb ( void * data __UNUSED__ , Evas_Object * obj , void * event_info )
{
Evas_Object * gl = evas_object_data_get ( obj , " genlist " ) ;
if ( gl )
_genlist_renew ( gl , elm_object_item_text_get ( event_info ) ) ;
}
static Evas_Object *
_item_styles_list_create ( Evas_Object * parent )
{
Evas_Object * list ;
int i = 0 ;
list = elm_list_add ( parent ) ;
EXPAND ( list ) ; FILL ( list ) ;
while ( _genlist_styles [ i ] )
{
elm_list_item_append ( list , _genlist_styles [ i ] , NULL , NULL ,
_item_style_sel_cb , _genlist_styles [ i ] ) ;
i + + ;
}
return list ;
}
void
test_genlist_item_styles ( void * data __UNUSED__ , Evas_Object * obj __UNUSED__ ,
void * event_info __UNUSED__ )
{
Evas_Object * win , * box , * gl , * list , * table ;
win = elm_win_util_standard_add ( " genlist-item-styles " , " Gengrid Item Styles " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
evas_object_resize ( win , 600 , 600 ) ;
evas_object_show ( win ) ;
box = elm_box_add ( win ) ;
elm_box_horizontal_set ( box , EINA_TRUE ) ;
EXPAND ( box ) ;
elm_win_resize_object_add ( win , box ) ;
evas_object_show ( box ) ;
list = _item_styles_list_create ( box ) ;
evas_object_show ( list ) ;
table = _elm_min_set ( list , box , 100 , 0 ) ;
WEIGHT ( table , 0 , EVAS_HINT_EXPAND ) ;
FILL ( table ) ;
elm_box_pack_end ( box , table ) ;
evas_object_show ( table ) ;
gl = elm_genlist_add ( box ) ;
EXPAND ( gl ) ; FILL ( gl ) ;
_genlist_renew ( gl , " default " ) ;
elm_box_pack_end ( box , gl ) ;
evas_object_show ( gl ) ;
evas_object_data_set ( list , " genlist " , gl ) ;
}
2009-09-13 21:21:52 -07:00
# endif