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>
2013-11-04 00:54:31 -08:00
2015-08-26 17:47:53 -07:00
# include "test_explode.h"
2012-11-27 07:21:27 -08:00
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 */
2014-08-27 11:50:43 -07:00
2014-12-13 11:06:44 -08:00
Elm_Genlist_Item_Class * itc ;
2014-08-27 11:50:43 -07:00
Elm_Genlist_Item_Class * itc1 ;
Elm_Genlist_Item_Class * itc2 ;
void * gl ;
2015-09-23 04:50:05 -07:00
void * filter_data ; /* The data used for filtering */
2016-01-04 14:05:29 -08:00
int scrollto ;
2012-02-23 05:58:32 -08:00
} ;
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 ;
2016-02-01 16:02:56 -08:00
static int bounce_max = 50 ;
2012-02-23 05:58:32 -08:00
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
2013-08-31 18:18:03 -07:00
_api_bt_clicked ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2012-02-23 05:58:32 -08:00
{ /* 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 ;
2014-09-05 09:47:45 -07:00
static char *
gl_text_get1 ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
char buf [ 256 ] ;
2014-09-05 09:47:45 -07:00
int num = ( int ) ( uintptr_t ) data ;
2015-12-24 10:34:26 -08:00
snprintf ( buf , sizeof ( buf ) , " Item # %i " , num ) ;
2014-09-05 09:47:45 -07:00
2009-08-13 15:41:43 -07:00
return strdup ( buf ) ;
}
2013-08-31 18:18:03 -07:00
Evas_Object * gl_content_get ( void * data EINA_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
2013-08-31 18:18:03 -07:00
static void on_bt_clicked ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-07-31 13:07:09 -07:00
{
printf ( " button clicked \n " ) ;
}
2013-08-31 18:18:03 -07:00
static void on_ck_changed ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-07-31 13:07:09 -07:00
{
printf ( " checkbox changed \n " ) ;
}
2013-08-31 18:18:03 -07:00
Evas_Object * gl_content_full_get ( void * data EINA_UNUSED , Evas_Object * obj , const char * part )
2012-07-31 13:07:09 -07:00
{
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 " ) ;
2014-11-12 07:08:37 -08:00
evas_object_size_hint_min_set ( ic ,
ELM_SCALE_SIZE ( 32 ) ,
ELM_SCALE_SIZE ( 32 ) ) ;
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 ) ;
2014-11-12 07:08:37 -08:00
evas_object_size_hint_min_set ( fr ,
ELM_SCALE_SIZE ( 100 ) ,
ELM_SCALE_SIZE ( 100 ) ) ;
2012-07-31 13:07:09 -07:00
return fr ;
}
2013-08-31 18:18:03 -07:00
Eina_Bool gl_state_get ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2016-02-12 11:14:13 -08:00
Evas_Object * gl_reusable_content_get ( void * data EINA_UNUSED , Evas_Object * obj , const char * part , Evas_Object * old )
{
if ( old & & ! strcmp ( part , " elm.swallow.end " ) )
{
// Reuse old content
// Here need to add initializing and state changing
// for cached content.
// printf("content reuse for cached content %p, %s\n", old, part);
return old ;
}
else
{
// Create new content object for non-reused part.
//printf("content create in reuse %p, %s\n", old, part);
char buf [ PATH_MAX ] ;
Evas_Object * ic = elm_icon_add ( obj ) ;
if ( ! strcmp ( part , " elm.swallow.end " ) )
snprintf ( buf , sizeof ( buf ) , " %s/images/bubble.png " , elm_app_data_dir_get ( ) ) ;
else
snprintf ( buf , sizeof ( buf ) , " %s/images/logo_small.png " , elm_app_data_dir_get ( ) ) ;
elm_image_file_set ( ic , buf , NULL ) ;
evas_object_size_hint_aspect_set ( ic , EVAS_ASPECT_CONTROL_VERTICAL , 1 , 1 ) ;
return ic ;
}
// If return NULL value, content_get will be called to get new content.
// return NULL;
}
2009-08-13 15:41:43 -07:00
static void
gl_sel ( void * data , Evas_Object * obj , void * event_info )
{
2015-02-12 05:01:59 -08:00
printf ( " sel item data [%p] on genlist obj [%p], item pointer [%p], index [%d] \n " ,
data , obj , event_info , elm_genlist_item_index_get ( event_info ) ) ;
2009-08-13 15:41:43 -07:00
}
2009-09-22 20:22:07 -07:00
static void
2013-08-31 18:18:03 -07:00
_move ( void * data , Evas * evas EINA_UNUSED , Evas_Object * obj EINA_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
}
2015-09-01 10:34:43 -07:00
/*** Genlist ***************************************************************/
2009-10-10 08:59:55 -07:00
static void
2013-08-31 18:18:03 -07:00
_bt50_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
_bt1500_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
_gl_selected ( void * data EINA_UNUSED , Evas_Object * obj EINA_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
2013-08-31 18:18:03 -07:00
_gl_double_clicked ( void * data EINA_UNUSED , Evas_Object * obj EINA_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
}
2014-12-29 07:35:24 -08:00
static void
_gl_right_clicked ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
printf ( " right clicked: %p \n " , event_info ) ;
}
2010-03-27 18:44:56 -07:00
static void
2013-08-31 18:18:03 -07:00
_gl_longpress ( void * data EINA_UNUSED , Evas_Object * obj EINA_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
}
2015-07-29 13:20:40 -07:00
static void
2015-10-19 20:18:59 -07:00
_gl_changed ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2015-07-29 13:20:40 -07:00
{
2015-10-19 20:18:59 -07:00
// printf("changed %p\n", event_info);
2015-07-29 13:20:40 -07:00
}
2012-02-23 05:58:32 -08:00
static void
2013-08-31 18:18:03 -07:00
_cleanup_cb ( void * data , Evas * e EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-02-23 05:58:32 -08:00
{
2015-09-23 04:50:05 -07:00
api_data * api = ( api_data * ) data ;
if ( api - > filter_data ) free ( api - > filter_data ) ;
free ( api ) ;
2012-02-23 05:58:32 -08:00
}
2015-10-19 20:18:59 -07:00
typedef struct
{
Evas_Object * gl ;
Elm_Object_Item * it1 , * it2 ;
int state ;
} Bounce ;
static Eina_Bool
_bounce_cb ( void * data )
{
Bounce * bounce = data ;
bounce - > state + + ;
2015-10-19 22:05:05 -07:00
if ( bounce - > state & 0x1 )
2015-10-19 20:18:59 -07:00
elm_genlist_item_bring_in ( bounce - > it2 , ELM_GENLIST_ITEM_SCROLLTO_MIDDLE ) ;
else
elm_genlist_item_bring_in ( bounce - > it1 , ELM_GENLIST_ITEM_SCROLLTO_MIDDLE ) ;
2016-02-01 16:02:56 -08:00
if ( bounce - > state > bounce_max )
2015-10-19 22:05:05 -07:00
{
if ( getenv ( " ELM_TEST_AUTOBOUNCE " ) ) elm_exit ( ) ;
}
2015-10-19 20:18:59 -07:00
return EINA_TRUE ;
}
static void
_btbounce_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
{
Ecore_Timer * tim = evas_object_data_get ( obj , " timer " ) ;
if ( ! tim )
{
_bounce_cb ( data ) ;
tim = ecore_timer_add ( 0.5 , _bounce_cb , data ) ;
evas_object_data_set ( obj , " timer " , tim ) ;
}
}
static void
_btdel_cb ( void * data , Evas * e EINA_UNUSED , Evas_Object * obj , void * event_info EINA_UNUSED )
{
Bounce * bounce = data ;
Ecore_Timer * tim = evas_object_data_get ( obj , " timer " ) ;
if ( tim )
{
ecore_timer_del ( tim ) ;
evas_object_data_del ( obj , " timer " ) ;
}
free ( bounce ) ;
}
2009-08-13 15:41:43 -07:00
void
2013-08-31 18:18:03 -07:00
test_genlist ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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 ;
2015-10-19 20:18:59 -07:00
int i , max ;
Bounce * bounce ;
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 ) ;
2015-10-19 20:18:59 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_DEL , _cleanup_cb , api ) ;
2012-02-23 05:58:32 -08:00
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 ) ;
2014-12-29 07:35:24 -08:00
evas_object_smart_callback_add ( gl , " clicked,right " , _gl_right_clicked , NULL ) ;
2010-03-27 18:44:56 -07:00
evas_object_smart_callback_add ( gl , " longpressed " , _gl_longpress , NULL ) ;
2015-07-29 13:20:40 -07:00
evas_object_smart_callback_add ( gl , " changed " , _gl_changed , 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 ) ;
2014-01-06 23:48:58 -08:00
evas_object_repeat_events_set ( over , EINA_TRUE ) ;
2009-09-22 20:22:07 -07:00
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
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
2014-09-05 09:47:45 -07:00
api - > itc1 - > func . text_get = gl_text_get1 ;
2016-02-12 11:14:13 -08:00
api - > itc1 - > func . content_get = NULL ; // gl_content_get;
2014-08-27 11:50:43 -07:00
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2016-02-12 11:14:13 -08:00
// use content_reuse function for reusing
// repeated content objects instead of content_get
api - > itc1 - > func . reusable_content_get = gl_reusable_content_get ;
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 ) ;
2015-10-19 20:18:59 -07:00
bounce = calloc ( 1 , sizeof ( Bounce ) ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Bounce " ) ;
evas_object_show ( bt ) ;
elm_box_pack_end ( bx , bt ) ;
bounce - > gl = gl ;
evas_object_smart_callback_add ( bt , " clicked " , _btbounce_cb , bounce ) ;
evas_object_event_callback_add ( bt , EVAS_CALLBACK_DEL , _btdel_cb , bounce ) ;
max = 2000 ;
2016-02-01 16:02:56 -08:00
if ( getenv ( " ELM_TEST_AUTOBOUNCE " ) )
{
max = 200 ;
bounce_max = atoi ( getenv ( " ELM_TEST_AUTOBOUNCE " ) ) ;
}
2015-10-19 20:18:59 -07:00
for ( i = 0 ; i < max ; i + + )
2009-08-13 15:41:43 -07:00
{
2015-12-24 10:34:26 -08:00
gli = elm_genlist_item_append ( gl , api - > itc1 ,
( void * ) ( uintptr_t ) i /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
2014-09-05 09:47:45 -07:00
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 ) ;
2015-10-19 20:18:59 -07:00
if ( i = = 100 ) bounce - > it1 = gli ;
if ( i = = 120 ) bounce - > it2 = gli ;
2009-08-13 15:41:43 -07:00
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2012-02-20 00:26:17 -08:00
2015-10-19 20:18:59 -07:00
evas_object_resize ( win , 480 , 400 ) ;
2015-08-26 17:47:53 -07:00
explode_win_enable ( win ) ;
2009-08-13 15:41:43 -07:00
evas_object_show ( win ) ;
2015-10-19 20:18:59 -07:00
if ( max = = 200 ) _btbounce_cb ( bounce , bt , NULL ) ;
2009-08-13 15:41:43 -07:00
}
2015-09-01 10:34:43 -07:00
/*** Genlist 2 *************************************************************/
2009-08-13 15:41:43 -07:00
static void
2013-08-31 18:18:03 -07:00
my_gl_clear ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-09-05 09:33:22 -07:00
elm_genlist_clear ( data ) ;
2009-08-13 15:41:43 -07:00
}
2014-09-05 09:47:45 -07:00
static char *
gl_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
{
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item # %i " , ( int ) ( uintptr_t ) data ) ;
return strdup ( buf ) ;
}
2009-08-13 15:41:43 -07:00
static void
2013-08-31 18:18:03 -07:00
my_gl_add ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
2009-08-13 15:41:43 -07:00
static int i = 0 ;
2014-08-27 11:50:43 -07:00
if ( ! api - > itc1 )
2013-05-08 04:50:05 -07:00
{
ERR ( " Genlist item class should not be null. Something very bad is happening!! " ) ;
return ;
}
2014-08-27 11:50:43 -07:00
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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
2013-08-31 18:18:03 -07:00
my_gl_insert_before ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-20 10:49:04 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
2009-08-20 10:49:04 -07:00
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
2014-08-27 11:50:43 -07:00
if ( ! api - > itc1 )
2013-05-08 04:50:05 -07:00
{
ERR ( " Genlist item class should not be null. Something very bad is happening!! " ) ;
return ;
}
2014-08-27 11:50:43 -07:00
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > 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
2014-08-27 11:50:43 -07:00
elm_genlist_item_insert_before ( gl , api - > 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
2013-08-31 18:18:03 -07:00
my_gl_insert_after ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-20 10:49:04 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
2009-08-20 10:49:04 -07:00
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
2014-08-27 11:50:43 -07:00
if ( ! api - > itc1 )
2013-05-08 04:50:05 -07:00
{
ERR ( " Genlist item class should not be null. Something very bad is happening!! " ) ;
return ;
}
2014-08-27 11:50:43 -07:00
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > 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
2014-08-27 11:50:43 -07:00
elm_genlist_item_insert_after ( gl , api - > 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
2013-08-31 18:18:03 -07:00
my_gl_del ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
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
2013-08-31 18:18:03 -07:00
my_gl_disable ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
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
2013-08-31 18:18:03 -07:00
my_gl_update_all ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
2009-08-13 15:41:43 -07:00
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
2013-08-31 18:18:03 -07:00
my_gl_first ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
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
2013-08-31 18:18:03 -07:00
my_gl_last ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
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
2013-08-31 18:18:03 -07:00
my_gl_flush_delay ( void * data EINA_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
2013-08-31 18:18:03 -07:00
my_gl_flush ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
_genlist_del_cb ( void * data , Evas * evas EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2013-05-08 04:50:05 -07:00
{
if ( ! data ) return ;
elm_genlist_item_class_free ( data ) ;
}
2009-08-13 15:41:43 -07:00
void
2013-08-31 18:18:03 -07:00
test_genlist2 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
2014-08-27 11:50:43 -07:00
gli [ 0 ] = elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
gli [ 1 ] = elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
gli [ 2 ] = elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
gli [ 3 ] = elm_genlist_item_prepend ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
gli [ 4 ] = elm_genlist_item_prepend ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
gli [ 5 ] = elm_genlist_item_insert_before ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
gli [ 6 ] = elm_genlist_item_insert_after ( gl , api - > 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 , " / \\ " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_first , api ) ;
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 , " \\ / " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_last , api ) ;
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 , " # " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_disable , api ) ;
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 " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_update_all , api ) ;
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 " ) ;
2014-09-05 09:33:22 -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 , " + " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_add , api ) ;
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 , " - " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_del , api ) ;
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 " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_before , api ) ;
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 " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_after , api ) ;
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 " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_flush , api ) ;
2010-04-04 21:58:43 -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 ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( gl , EVAS_CALLBACK_DEL , _genlist_del_cb , api - > itc1 ) ;
2009-08-13 15:41:43 -07:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2015-09-01 10:34:43 -07:00
/*** Genlist 3 *************************************************************/
char *
gl2_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_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
2015-09-01 10:34:43 -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
2015-09-01 10:34:43 -07:00
Eina_Bool
gl2_state_get ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
static void
2013-08-31 18:18:03 -07:00
my_gl_update ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
my_gl_labels_update ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-11-29 06:03:14 -08:00
{
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
2013-08-31 18:18:03 -07:00
my_gl_contents_update ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-11-29 06:03:14 -08:00
{
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
2013-08-31 18:18:03 -07:00
test_genlist3 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl2_text_get ;
api - > itc1 - > func . content_get = gl2_content_get ;
api - > itc1 - > func . state_get = gl2_state_get ;
api - > itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
tit [ 0 ] . mode = 0 ;
2014-08-27 11:50:43 -07:00
tit [ 0 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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 ;
2014-08-27 11:50:43 -07:00
tit [ 1 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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 ;
2014-08-27 11:50:43 -07:00
tit [ 2 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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 ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2009-08-13 15:41:43 -07:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2015-09-01 10:34:43 -07:00
/*** Genlist 4 *************************************************************/
2009-08-13 15:41:43 -07:00
static void
2013-08-31 18:18:03 -07:00
my_gl_item_check_changed ( void * data , Evas_Object * obj , void * event_info EINA_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
}
2015-09-01 10:34:43 -07:00
char *
gl3_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_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
2015-09-01 10:34:43 -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
2015-09-01 10:34:43 -07:00
Eina_Bool
gl3_state_get ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2015-09-01 10:34:43 -07:00
static void
_realized ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * ei )
2013-02-07 05:26:37 -08:00
{
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
2013-08-31 18:18:03 -07:00
test_genlist4 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-01-06 23:48:58 -08:00
elm_genlist_multi_select_set ( gl , EINA_TRUE ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl3_text_get ;
api - > itc1 - > func . content_get = gl3_content_get ;
api - > itc1 - > func . state_get = gl3_state_get ;
api - > itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
tit [ 0 ] . mode = 0 ;
2014-08-27 11:50:43 -07:00
tit [ 0 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 10:34:43 -07:00
& ( tit [ 0 ] ) /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 1 ] . mode = 1 ;
2014-08-27 11:50:43 -07:00
tit [ 1 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 10:34:43 -07:00
& ( tit [ 1 ] ) /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 2 ] . mode = 2 ;
2014-08-27 11:50:43 -07:00
tit [ 2 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 10:34:43 -07:00
& ( tit [ 2 ] ) /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
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
2015-09-01 10:34:43 -07:00
/*** Genlist 5 *************************************************************/
2009-08-13 15:41:43 -07:00
static void
2013-08-31 18:18:03 -07:00
my_gl_item_check_changed2 ( void * data , Evas_Object * obj , void * event_info EINA_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
}
2015-09-01 10:34:43 -07:00
char *
gl5_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part )
2009-08-13 15:41:43 -07:00
{
2009-12-19 05:55:08 -08:00
const Testitem * tit = data ;
2014-04-12 09:40:27 -07:00
char buf [ 256 ] = { 0 } ;
2009-08-13 15:41:43 -07:00
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
2015-09-01 10:34:43 -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 ) ;
2013-12-19 02:20:20 -08:00
elm_image_resizable_set ( ic , EINA_FALSE , EINA_FALSE ) ;
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 ) ;
2013-12-19 02:20:20 -08:00
elm_image_resizable_set ( ic , EINA_FALSE , EINA_FALSE ) ;
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
2015-09-01 10:34:43 -07:00
Eina_Bool
gl5_state_get ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2009-09-07 23:35:14 -07:00
static void
2013-08-31 18:18:03 -07:00
item_drag_up ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
item_drag_down ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
item_drag_left ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
item_drag_right ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
scroll_top ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
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
{
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
2013-08-31 18:18:03 -07:00
scroll_bottom ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
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
{
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
2013-08-31 18:18:03 -07:00
scroll_left ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
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
{
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
2013-08-31 18:18:03 -07:00
scroll_right ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
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
{
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
2013-08-31 18:18:03 -07:00
item_drag ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
item_drag_stop ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
item_longpress ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
test_genlist5 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-06-10 03:29:47 -07:00
elm_win_focus_highlight_enabled_set ( win , EINA_TRUE ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " double_label " ;
api - > itc1 - > func . text_get = gl5_text_get ;
api - > itc1 - > func . content_get = gl5_content_get ;
api - > itc1 - > func . state_get = gl5_state_get ;
api - > itc1 - > func . del = NULL ;
2009-08-13 15:41:43 -07:00
tit [ 0 ] . mode = 0 ;
2014-08-27 11:50:43 -07:00
tit [ 0 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 10:34:43 -07:00
& ( tit [ 0 ] ) /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 1 ] . mode = 1 ;
2014-08-27 11:50:43 -07:00
tit [ 1 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 10:34:43 -07:00
& ( tit [ 1 ] ) /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2009-08-13 15:41:43 -07:00
tit [ 2 ] . mode = 2 ;
2014-08-27 11:50:43 -07:00
tit [ 2 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 10:34:43 -07:00
& ( tit [ 2 ] ) /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl_sel /* func */ ,
2011-02-21 07:46:23 -08:00
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 ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2009-08-13 15:41:43 -07:00
evas_object_resize ( win , 320 , 320 ) ;
evas_object_show ( win ) ;
}
2015-09-01 10:34:43 -07:00
/*** Genlist Tree **********************************************************/
2009-08-13 15:41:43 -07:00
static void
2013-08-31 18:18:03 -07:00
gl4_sel ( void * data EINA_UNUSED , Evas_Object * obj EINA_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 ) ;
2015-11-03 19:33:46 -08:00
printf ( " item sel callback %p - expanded depth = %d \n " , glit , 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
2014-08-27 11:50:43 -07:00
gl4_exp ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2009-08-13 15:41:43 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
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 ;
2015-11-03 19:33:46 -08:00
printf ( " expand %p \n " , glit ) ;
2009-08-13 15:41:43 -07:00
val * = 10 ;
2015-09-01 11:08:42 -07:00
for ( i = 0 ; i < 30 ; i + + )
2012-04-27 04:08:58 -07:00
{
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > itc2 ,
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
2013-08-31 18:18:03 -07:00
gl4_con ( void * data EINA_UNUSED , Evas_Object * obj EINA_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 ;
2014-11-20 19:21:45 -08:00
const Eina_List * list = NULL , * l = NULL ;
Elm_Object_Item * it = NULL ;
2015-11-03 19:33:46 -08:00
printf ( " contract request %p \n " , glit ) ;
2014-11-20 19:21:45 -08:00
list = elm_genlist_item_subitems_get ( glit ) ;
EINA_LIST_FOREACH ( list , l , it )
{
printf ( " sub item: %p %s \n " , it , elm_object_item_text_get ( it ) ) ;
}
2012-01-19 21:18:31 -08:00
elm_genlist_item_subitems_clear ( glit ) ;
2009-08-13 15:41:43 -07:00
}
static void
2013-08-31 18:18:03 -07:00
gl4_exp_req ( void * data EINA_UNUSED , Evas_Object * obj EINA_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 ;
2015-11-03 19:33:46 -08:00
printf ( " expand request %p \n " , glit ) ;
2012-01-19 21:18:31 -08:00
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
2013-08-31 18:18:03 -07:00
gl4_con_req ( void * data EINA_UNUSED , Evas_Object * obj EINA_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
}
2015-11-03 19:33:46 -08:00
static void
gl4_selected ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Elm_Object_Item * glit = event_info ;
printf ( " selected %p \n " , glit ) ;
}
static void
gl4_activated ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Elm_Object_Item * glit = event_info ;
printf ( " activated %p \n " , glit ) ;
}
static void
gl4_unselected ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Elm_Object_Item * glit = event_info ;
printf ( " unselected %p \n " , glit ) ;
}
static void
gl4_longpressed ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Elm_Object_Item * glit = event_info ;
printf ( " longpressed %p \n " , glit ) ;
}
static void
gl4_pressed ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Elm_Object_Item * glit = event_info ;
printf ( " pressed %p \n " , glit ) ;
}
static void
gl4_released ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Elm_Object_Item * glit = event_info ;
printf ( " released %p \n " , glit ) ;
}
2015-09-01 10:34:43 -07:00
char *
gl4_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_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
2015-09-01 10:34:43 -07:00
Evas_Object *
gl4_content_get ( void * data EINA_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
2015-09-01 10:34:43 -07:00
Eina_Bool
gl4_state_get ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
return EINA_FALSE ;
}
2012-02-22 01:31:37 -08:00
2015-09-01 10:34:43 -07:00
void
gl4_del ( void * data EINA_UNUSED , Evas_Object * obj EINA_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
2015-09-01 11:08:42 -07:00
_tree_effect_changed_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2012-04-27 04:08:58 -07:00
{
2015-09-01 11:08:42 -07:00
elm_genlist_tree_effect_enabled_set ( data , elm_check_state_get ( obj ) ) ;
2012-04-27 04:08:58 -07:00
}
static void
2015-09-01 11:08:42 -07:00
_tree_homogeneous_changed_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2012-04-27 04:08:58 -07:00
{
2015-09-01 11:08:42 -07:00
elm_genlist_homogeneous_set ( data , elm_check_state_get ( obj ) ) ;
2012-04-27 04:08:58 -07:00
}
2009-08-13 15:41:43 -07:00
void
2013-08-31 18:18:03 -07:00
test_genlist6 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2009-08-13 15:41:43 -07:00
{
2015-09-01 11:08:42 -07:00
Evas_Object * win , * gl , * bx , * fr , * bx2 , * ck1 , * ck2 ;
2009-08-13 15:41:43 -07:00
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2015-09-01 11:08:42 -07:00
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , 0.0 ) ;
elm_object_text_set ( fr , " Genlist Tree Options " ) ;
2012-04-27 04:08:58 -07:00
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 ) ;
2015-09-01 11:08:42 -07:00
ck1 = elm_check_add ( win ) ;
elm_object_text_set ( ck1 , " Tree Effect " ) ;
evas_object_show ( ck1 ) ;
elm_box_pack_end ( bx2 , ck1 ) ;
2012-04-27 04:08:58 -07:00
2015-09-01 11:08:42 -07:00
ck2 = elm_check_add ( win ) ;
elm_object_text_set ( ck2 , " Homogeneous " ) ;
evas_object_show ( ck2 ) ;
elm_box_pack_end ( bx2 , ck2 ) ;
2012-04-27 04:08:58 -07:00
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2009-08-13 15:41:43 -07:00
evas_object_show ( gl ) ;
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
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl4_text_get ;
api - > itc1 - > func . content_get = gl4_content_get ;
api - > itc1 - > func . state_get = gl4_state_get ;
api - > itc1 - > func . del = gl4_del ;
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " tree_effect " ;
api - > itc2 - > func . text_get = gl4_text_get ;
api - > itc2 - > func . content_get = gl4_content_get ;
api - > itc2 - > func . state_get = gl4_state_get ;
api - > itc2 - > func . del = gl4_del ;
elm_genlist_item_append ( gl , api - > itc2 ,
2015-09-01 11:08:42 -07: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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > itc2 ,
2015-09-01 11:08:42 -07: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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > itc1 ,
2015-09-01 11:08:42 -07:00
( void * ) 3 /* item data */ , NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE , gl4_sel /* func */ ,
2011-02-21 07:46:23 -08:00
NULL /* func data */ ) ;
2012-04-27 04:08:58 -07:00
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
elm_genlist_item_class_free ( api - > itc2 ) ;
2012-04-27 04:08:58 -07:00
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( gl , " expand,request " , gl4_exp_req , api ) ;
evas_object_smart_callback_add ( gl , " contract,request " , gl4_con_req , api ) ;
evas_object_smart_callback_add ( gl , " expanded " , gl4_exp , api ) ;
evas_object_smart_callback_add ( gl , " contracted " , gl4_con , api ) ;
2009-08-13 15:41:43 -07:00
2015-11-03 19:33:46 -08:00
evas_object_smart_callback_add ( gl , " selected " , gl4_selected , api ) ;
evas_object_smart_callback_add ( gl , " unselected " , gl4_unselected , api ) ;
evas_object_smart_callback_add ( gl , " activated " , gl4_activated , api ) ;
evas_object_smart_callback_add ( gl , " longpressed " , gl4_longpressed , api ) ;
evas_object_smart_callback_add ( gl , " pressed " , gl4_pressed , api ) ;
evas_object_smart_callback_add ( gl , " released " , gl4_released , api ) ;
2015-09-01 11:08:42 -07:00
evas_object_smart_callback_add ( ck1 , " changed " , _tree_effect_changed_cb , gl ) ;
evas_object_smart_callback_add ( ck2 , " changed " , _tree_homogeneous_changed_cb , gl ) ;
2009-08-13 15:41:43 -07:00
2015-09-01 11:08:42 -07:00
elm_box_pack_end ( bx , 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
2015-09-01 10:34:43 -07:00
/*** Genlist 7 *************************************************************/
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 void
gl_sel7 ( void * data , Evas_Object * obj , void * event_info )
{
if ( ! event_info ) return ;
2014-08-27 11:50:43 -07:00
api_data * api = data ;
elm_genlist_item_item_class_update ( event_info , api - > itc2 ) ;
printf ( " sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n " , data , obj , event_info , api - > itc2 - > item_style ) ;
2010-11-17 09:15:28 -08:00
}
2010-10-15 04:24:46 -07:00
static void
2014-04-26 21:04:26 -07:00
_gl7_back_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2014-04-26 21:04:26 -07:00
_gl7_swipe_cb ( void * data , Evas_Object * obj EINA_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 ) ;
2014-04-26 21:04:26 -07:00
evas_object_smart_callback_add ( button , " clicked " , _gl7_back_cb ,
2010-10-15 04:24:46 -07:00
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
2013-08-31 18:18:03 -07:00
test_genlist7 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-04-26 21:04:26 -07:00
evas_object_smart_callback_add ( gl , " swipe " , _gl7_swipe_cb , & info ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2010-10-15 04:24:46 -07:00
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
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl2_text_get ;
api - > itc1 - > func . content_get = gl2_content_get ;
api - > itc1 - > func . state_get = gl2_state_get ;
api - > itc1 - > func . del = NULL ;
2010-10-15 04:24:46 -07:00
2014-08-27 11:50:43 -07:00
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " double_label " ;
api - > itc2 - > func . text_get = gl5_text_get ;
api - > itc2 - > func . content_get = gl5_content_get ;
api - > itc2 - > func . state_get = gl5_state_get ;
api - > itc2 - > func . del = NULL ;
2010-11-17 09:15:28 -08:00
2010-10-15 04:24:46 -07:00
tit [ 0 ] . mode = 0 ;
2014-08-27 11:50:43 -07:00
tit [ 0 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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 */ ,
2014-08-27 11:50:43 -07:00
api /* func data */ ) ;
2010-10-15 04:24:46 -07:00
tit [ 1 ] . mode = 1 ;
2014-08-27 11:50:43 -07:00
tit [ 1 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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 */ ,
2014-08-27 11:50:43 -07:00
api /* func data */ ) ;
2010-10-15 04:24:46 -07:00
tit [ 2 ] . mode = 2 ;
2014-08-27 11:50:43 -07:00
tit [ 2 ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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 */ ,
2014-08-27 11:50:43 -07:00
api /* 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
2015-09-01 10:34:43 -07:00
/*** Genlist Group *********************************************************/
2013-08-31 18:18:03 -07:00
char * gl8_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2011-01-05 21:13:11 -08:00
{
char buf [ 256 ] ;
2014-07-09 08:30:48 -07: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
2013-08-31 18:18:03 -07:00
_bt_show_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-01-05 21:13:11 -08:00
{
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
2013-08-31 18:18:03 -07:00
_bt_bring_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-01-05 21:13:11 -08:00
{
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
2013-08-31 18:18:03 -07:00
test_genlist8 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-01-05 21:13:11 -08:00
{
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
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2011-01-05 21:13:11 -08:00
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 ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2011-01-05 21:13:11 -08:00
2014-08-27 11:50:43 -07:00
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " group_index " ;
api - > itc2 - > func . text_get = gl8_text_get ;
api - > itc2 - > func . content_get = NULL ;
api - > itc2 - > func . state_get = NULL ;
api - > itc2 - > 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 ) )
{
2014-08-27 11:50:43 -07:00
gli = git = elm_genlist_item_append ( gl , api - > itc2 ,
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 )
{
2014-08-27 11:50:43 -07:00
gli = elm_genlist_item_append ( gl , api - > 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 ;
}
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
elm_genlist_item_class_free ( api - > itc2 ) ;
2011-01-05 21:13:11 -08:00
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
2015-09-01 10:34:43 -07:00
/*** Genlist Group Tree ****************************************************/
2011-01-05 21:13:11 -08:00
static void
2014-08-27 11:50:43 -07:00
gl9_exp ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-01-05 21:13:11 -08:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
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 ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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
2013-08-31 18:18:03 -07:00
gl9_con ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-01-05 21:13:11 -08:00
{
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
2013-08-31 18:18:03 -07:00
gl9_exp_req ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-01-05 21:13:11 -08:00
{
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
2013-08-31 18:18:03 -07:00
gl9_con_req ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-01-05 21:13:11 -08:00
{
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
2013-08-31 18:18:03 -07:00
test_genlist9 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-01-05 21:13:11 -08:00
{
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
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2011-01-05 21:13:11 -08:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " group_index " ;
api - > itc2 - > func . text_get = gl8_text_get ;
api - > itc2 - > func . content_get = NULL ;
api - > itc2 - > func . state_get = NULL ;
api - > itc2 - > func . del = NULL ;
git = elm_genlist_item_append ( gl , api - > itc2 ,
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 ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
git = elm_genlist_item_append ( gl , api - > itc2 ,
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 ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
elm_genlist_item_class_free ( api - > itc2 ) ;
2011-01-05 21:13:11 -08:00
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( gl , " expand,request " , gl9_exp_req , api ) ;
evas_object_smart_callback_add ( gl , " contract,request " , gl9_con_req , api ) ;
evas_object_smart_callback_add ( gl , " expanded " , gl9_exp , api ) ;
evas_object_smart_callback_add ( gl , " contracted " , gl9_con , api ) ;
2011-01-05 21:13:11 -08:00
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
2011-04-21 04:47:36 -07:00
2015-09-01 10:34:43 -07:00
/*** Genlist Decorate Item Mode ********************************************/
2011-04-21 04:47:36 -07:00
static char * mode_type [ ] = { " slide " , " rotate " } ;
2012-02-22 01:31:37 -08:00
2015-09-01 10:34:43 -07:00
char *
gl10_text_get ( void * data , Evas_Object * obj EINA_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 ) ;
}
2015-09-01 10:34:43 -07:00
Evas_Object *
gl10_content_get ( void * data EINA_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
2013-08-31 18:18:03 -07:00
_gl_sel10 ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-04-21 04:47:36 -07:00
{
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
2013-08-31 18:18:03 -07:00
_my_gl_mode_right ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-04-21 04:47:36 -07:00
{
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
2013-08-31 18:18:03 -07:00
_my_gl_mode_left ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-04-21 04:47:36 -07:00
{
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
2013-08-31 18:18:03 -07:00
_my_gl_mode_cancel ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2011-04-21 04:47:36 -07:00
{
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
2013-08-31 18:18:03 -07:00
test_genlist10 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-04-21 04:47:36 -07:00
{
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 ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2011-04-21 04:47:36 -07:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > decorate_item_style = " mode " ;
api - > itc1 - > func . text_get = gl10_text_get ;
api - > itc1 - > func . content_get = gl10_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2011-04-21 04:47:36 -07:00
for ( i = 0 ; i < 50 ; i + + )
elm_genlist_item_append ( gl ,
2014-08-27 11:50:43 -07:00
api - > itc1 ,
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 ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2011-04-21 04:47:36 -07:00
evas_object_resize ( win , 520 , 520 ) ;
evas_object_show ( win ) ;
}
2011-06-01 20:10:11 -07:00
2015-09-01 10:34:43 -07:00
/*** Genlist Reorder Mode **************************************************/
2011-06-01 20:10:11 -07:00
static void
2013-08-31 18:18:03 -07:00
_reorder_tg_changed_cb ( void * data , Evas_Object * obj , void * event_info EINA_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 .
*
* @ param obj : the genlist object .
2015-02-08 17:34:06 -08:00
* @ param event_info : the moved item .
2011-06-01 20:10:11 -07:00
*
2015-02-08 17:34:06 -08:00
* the item ( event_info ) had been moved
2012-03-21 04:50:33 -07:00
*
*/
2015-02-08 17:34:06 -08:00
static void
_gl_reorder_moved_cb ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2012-03-21 04:50:33 -07:00
{
2015-02-08 17:34:06 -08:00
printf ( " \" moved \" it: %p \n " , event_info ) ;
2012-03-21 04:50:33 -07:00
}
/**
2015-02-08 17:34:06 -08:00
* _gl_reorder_moved_after_cb is called after an item was reordered .
2012-03-21 04:50:33 -07:00
* This is only called when reorder mode is enabled .
*
* @ param obj : the genlist object .
2015-02-08 17:34:06 -08:00
* @ param event_info : the moved item .
2012-03-21 04:50:33 -07:00
*
2015-02-08 17:34:06 -08:00
* the item ( event_info ) had been moved after the given relative item ( * rel_item ) in list .
2012-03-21 04:50:33 -07:00
*
*/
2015-02-08 17:34:06 -08:00
static void
_gl_reorder_moved_after_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
2012-03-21 04:50:33 -07:00
{
// if needed, add application logic.
2015-02-08 17:34:06 -08:00
Elm_Object_Item * it = elm_genlist_item_prev_get ( ( Elm_Object_Item * ) event_info ) ;
printf ( " it = %p, prev_it = %p \n " , event_info , it ) ;
2012-03-21 04:50:33 -07:00
}
/**
2015-02-08 17:34:06 -08:00
* _gl_reorder_moved_before_cb is called after an item was reordered .
2012-03-21 04:50:33 -07:00
* This is only called when reorder mode is enabled .
*
* @ param obj : the genlist object .
2015-02-08 17:34:06 -08:00
* @ param event_info : the moved item .
2012-03-21 04:50:33 -07:00
*
2015-02-08 17:34:06 -08:00
* the item ( event_info ) had been moved before the given relative item ( * rel_item ) in list .
2011-06-01 20:10:11 -07:00
*
*/
2015-02-08 17:34:06 -08:00
static void
_gl_reorder_moved_before_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
2011-06-01 20:10:11 -07:00
{
// if needed, add application logic.
2015-02-08 17:34:06 -08:00
Elm_Object_Item * it = elm_genlist_item_next_get ( ( Elm_Object_Item * ) event_info ) ;
printf ( " it = %p, next_it = %p \n " , event_info , it ) ;
}
static void
_gl_reorder_item_focused_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
{
printf ( " \" item,focused \" it: %p \n " , event_info ) ;
}
static void
_gl_reorder_item_unfocused_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
{
printf ( " \" item,unfocused \" it: %p \n " , event_info ) ;
}
static void
_gl_reorder_item_selected_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
{
printf ( " \" selected \" it: %p \n " , event_info ) ;
}
static void
_gl_reorder_item_unselected_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
{
printf ( " \" unselected \" it: %p \n " , event_info ) ;
2011-06-01 20:10:11 -07:00
}
void
2015-02-08 17:34:06 -08:00
test_genlist_reorder ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2011-06-01 20:10:11 -07:00
{
2015-01-19 03:56:50 -08:00
Evas_Object * win , * fr , * lb , * bx , * tg , * gl ;
2011-06-01 20:10:11 -07:00
int i ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2011-06-01 20:10:11 -07:00
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 ) ;
2015-01-19 03:56:50 -08:00
elm_box_pack_end ( bx , tg ) ;
2011-06-01 20:10:11 -07:00
evas_object_show ( tg ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2015-02-08 17:34:06 -08:00
evas_object_smart_callback_add ( gl , " moved " , _gl_reorder_moved_cb , NULL ) ;
evas_object_smart_callback_add ( gl , " moved,after " , _gl_reorder_moved_after_cb , NULL ) ;
evas_object_smart_callback_add ( gl , " moved,before " , _gl_reorder_moved_before_cb , NULL ) ;
evas_object_smart_callback_add ( gl , " item,focused " , _gl_reorder_item_focused_cb , NULL ) ;
evas_object_smart_callback_add ( gl , " item,unfocused " , _gl_reorder_item_unfocused_cb , NULL ) ;
evas_object_smart_callback_add ( gl , " selected " , _gl_reorder_item_selected_cb , NULL ) ;
evas_object_smart_callback_add ( gl , " unselected " , _gl_reorder_item_unselected_cb , NULL ) ;
2011-06-01 20:10:11 -07:00
for ( i = 0 ; i < 50 ; i + + )
elm_genlist_item_append ( gl ,
2014-08-27 11:50:43 -07:00
api - > 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 */ ) ;
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2012-02-20 00:26:17 -08:00
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
2015-09-01 10:34:43 -07:00
/*** Genlist Textblock *****************************************************/
2013-08-31 18:18:03 -07:00
char * gl12_text_get ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * part EINA_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
2013-08-31 18:18:03 -07:00
test_genlist12 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-08 03:21:04 -07:00
{
2012-02-22 01:31:37 -08:00
Evas_Object * win , * bx , * gl ;
2011-09-08 03:21:04 -07:00
int i ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
2011-09-08 03:21:04 -07:00
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
2011-09-08 03:21:04 -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 ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2011-09-08 03:21:04 -07:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " message " ;
api - > itc1 - > func . text_get = gl12_text_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2011-09-08 03:21:04 -07:00
for ( i = 0 ; i < 1000 ; i + + )
{
2014-08-27 11:50:43 -07:00
elm_genlist_item_append ( gl , api - > 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
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > 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
2015-09-01 10:34:43 -07:00
/*** Genlist Tree, Insert Sorted *******************************************/
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
2013-08-31 18:18:03 -07:00
test_genlist13 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-01-06 15:38:33 -08:00
{
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
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
2012-01-06 15:38:33 -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_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 ) ;
2014-08-27 11:50:43 -07:00
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " default " ;
api - > itc2 - > func . text_get = gl4_text_get ;
api - > itc2 - > func . content_get = NULL ;
api - > itc2 - > func . state_get = NULL ;
api - > itc2 - > 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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 */ ) ;
}
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc2 ) ;
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
2015-09-01 10:34:43 -07:00
/*** Genlist Tree, Insert Relative *****************************************/
2012-01-06 18:02:02 -08:00
static void
2013-08-31 18:18:03 -07:00
my_gl_insert_before_rel ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-01-06 18:02:02 -08:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
2012-01-06 18:02:02 -08:00
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
2014-08-27 11:50:43 -07:00
if ( ! api - > itc1 ) api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = NULL ;
api - > itc1 - > func . state_get = NULL ;
api - > 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 ;
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_insert_before ( gl , api - > 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
2013-08-31 18:18:03 -07:00
my_gl_insert_after_rel ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-01-06 18:02:02 -08:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
Evas_Object * gl = api - > gl ;
2012-01-06 18:02:02 -08:00
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
2014-08-27 11:50:43 -07:00
if ( ! api - > itc1 ) api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get ;
api - > itc1 - > func . content_get = NULL ;
api - > itc1 - > func . state_get = NULL ;
api - > 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 ;
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_insert_after ( gl , api - > 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
2013-08-31 18:18:03 -07:00
test_genlist14 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-01-06 18:02:02 -08:00
{
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' */
} ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
2012-01-06 18:02:02 -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_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2012-01-06 18:02:02 -08:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " default " ;
api - > itc2 - > func . text_get = gl4_text_get ;
api - > itc2 - > func . content_get = NULL ;
api - > itc2 - > func . state_get = NULL ;
api - > itc2 - > 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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
2014-08-27 11:50:43 -07:00
( gl , api - > itc2 , ( 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 " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_before_rel , api ) ;
2012-01-06 18:02:02 -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 , " + after " ) ;
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( bt , " clicked " , my_gl_insert_after_rel , api ) ;
2012-01-06 18:02:02 -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 ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
2014-08-27 11:50:43 -07:00
/* item_class_ref is needed for itc2. some items can be added in callbacks */
elm_genlist_item_class_ref ( api - > itc2 ) ;
elm_genlist_item_class_free ( api - > itc2 ) ;
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
2015-09-01 10:34:43 -07:00
/*** Genlist Decorate All Mode *********************************************/
static void
_edit_icon_clicked_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-02-22 23:39:10 -08:00
{
Elm_Object_Item * item = ( Elm_Object_Item * ) data ;
elm_object_item_del ( item ) ;
}
2015-09-01 10:34:43 -07:00
char *
gl15_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
2012-02-22 23:39:10 -08:00
{
const Testitem * tit = data ;
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item #%i " , tit - > mode ) ;
return strdup ( buf ) ;
}
2015-09-01 10:34:43 -07:00
Evas_Object *
gl15_content_get ( void * data , Evas_Object * obj , const char * part )
2012-02-22 23:39:10 -08:00
{
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 ) ;
2015-03-09 02:02:36 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/bubble.png " , elm_app_data_dir_get ( ) ) ;
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 ) ;
2015-03-09 02:02:36 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/icon_06.png " , elm_app_data_dir_get ( ) ) ;
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
2013-08-31 18:18:03 -07:00
gl15_sel ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2012-02-22 23:39:10 -08:00
{
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
2013-08-31 18:18:03 -07:00
gl15_deco_all_mode ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_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
2013-08-31 18:18:03 -07:00
gl15_normal_mode ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-02-22 23:39:10 -08:00
{
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
}
2015-09-01 10:34:43 -07:00
void
gl15_del ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED )
2012-02-22 23:46:05 -08:00
{
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-02-22 23:39:10 -08:00
void
2013-08-31 18:18:03 -07:00
test_genlist15 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-02-22 23:39:10 -08:00
{
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 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
2012-02-22 23:39:10 -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_size_hint_align_set ( gl , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_size_hint_weight_set ( gl , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2012-02-22 23:39:10 -08:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl15_text_get ;
api - > itc1 - > func . content_get = gl15_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = gl15_del ;
api - > itc1 - > decorate_all_item_style = " edit " ;
2012-02-22 23:39:10 -08:00
for ( i = 0 ; i < 100 ; i + + )
{
tit [ i ] . mode = i ;
2014-08-27 11:50:43 -07:00
tit [ i ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
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
2015-09-01 10:34:43 -07:00
/*** Genlist Flip Mode *****************************************************/
static void
_flip_icon_clicked_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
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
{
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 ) ;
}
2015-09-01 10:34:43 -07:00
char *
gl16_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
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
{
const Testitem * tit = data ;
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " Item #%i " , tit - > mode ) ;
return strdup ( buf ) ;
}
2015-09-01 10:34:43 -07:00
Evas_Object *
gl16_content_get ( void * data , Evas_Object * obj , const char * part )
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
{
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 ) ;
2015-03-09 02:02:36 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/icon_04.png " , elm_app_data_dir_get ( ) ) ;
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 ) ;
2015-03-09 02:02:36 -07:00
snprintf ( buf , sizeof ( buf ) , " %s/images/icon_09.png " , elm_app_data_dir_get ( ) ) ;
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
2013-08-31 18:18:03 -07:00
test_genlist16 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
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 * win , * bx , * gl ;
int i ;
static Testitem tit [ 100 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_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
win = elm_win_util_standard_add ( " genlist-flip-mode " , " Genlist Flip Mode " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
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
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
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_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
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl16_text_get ;
api - > itc1 - > func . content_get = gl16_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
api - > itc1 - > 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 ;
2014-08-27 11:50:43 -07:00
tit [ i ] . item = elm_genlist_item_append ( gl , api - > itc1 ,
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
& ( 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
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
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_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
2015-09-01 10:34:43 -07:00
/*** Genlist Decorate Modes ************************************************/
2012-06-15 00:58:11 -07:00
char *
2013-08-31 18:18:03 -07:00
gl17_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part )
2012-06-15 00:58:11 -07:00
{
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
2013-08-31 18:18:03 -07:00
_decorate_all_set_btn_clicked_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2012-06-15 00:58:11 -07:00
{
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
2013-08-31 18:18:03 -07:00
_decorate_all_unset_btn_clicked_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-06-15 00:58:11 -07:00
{
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
2013-08-31 18:18:03 -07:00
test_genlist17 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-06-15 00:58:11 -07:00
{
Evas_Object * win , * fr1 , * fr2 , * bx , * bx2 , * rdg = NULL , * gl ;
int i ;
static Testitem tit [ 50 ] ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
2012-06-15 00:58:11 -07:00
win = elm_win_util_standard_add ( " genlist-decorate-modes " , " Genlist Decorate Modes " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
2012-06-15 00:58: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 ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2012-06-15 00:58:11 -07:00
evas_object_show ( gl ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > decorate_item_style = " mode " ;
api - > itc1 - > func . text_get = gl15_text_get ;
api - > itc1 - > func . content_get = gl15_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
api - > itc1 - > decorate_all_item_style = " edit " ;
2012-06-15 00:58:11 -07:00
for ( i = 0 ; i < 50 ; i + + )
{
tit [ i ] . checked = EINA_FALSE ;
tit [ i ] . mode = i ;
tit [ i ] . item = elm_genlist_item_append ( gl ,
2014-08-27 11:50:43 -07:00
api - > itc1 ,
2012-06-15 00:58:11 -07:00
& ( tit [ i ] ) /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE /* flags */ ,
NULL /* select func */ ,
NULL /* func data */ ) ;
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2012-06-15 00:58:11 -07:00
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 ) ;
}
2015-09-01 10:34:43 -07:00
/*** Genlist Tree and Decorate All Mode ************************************/
2015-09-01 11:08:42 -07:00
static void
_tree_effect_enable_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
elm_genlist_tree_effect_enabled_set ( data , EINA_TRUE ) ;
}
static void
_tree_effect_disable_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
elm_genlist_tree_effect_enabled_set ( data , EINA_FALSE ) ;
}
2012-06-21 00:48:00 -07:00
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
2013-08-31 18:18:03 -07:00
gl18_sel ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
2012-06-21 00:48:00 -07: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 \n " , depth ) ;
2012-06-21 00:48:00 -07:00
}
static void
2013-08-31 18:18:03 -07:00
gl18_del ( void * data , Evas_Object * obj EINA_UNUSED )
2012-06-21 00:48:00 -07:00
{
free ( data ) ;
}
static void
2013-08-31 18:18:03 -07:00
gl18_exp ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
2012-06-21 00:48:00 -07:00
{
2014-08-27 11:50:43 -07:00
api_data * api = data ;
2012-06-21 00:48:00 -07:00
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 ,
2014-08-27 11:50:43 -07:00
api - > itc2 ,
2012-06-21 00:48:00 -07:00
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 ,
2014-08-27 11:50:43 -07:00
api - > itc1 ,
2012-06-21 00:48:00 -07:00
tit /* item data */ ,
glit /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl18_sel /* func */ ,
NULL /* func data */ ) ;
i + + ;
}
}
static void
2013-08-31 18:18:03 -07:00
gl18_con ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info )
2012-06-21 00:48:00 -07:00
{
Elm_Object_Item * glit = event_info ;
elm_genlist_item_subitems_clear ( glit ) ;
}
static void
2013-08-31 18:18:03 -07:00
gl18_exp_req ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
2012-06-21 00:48:00 -07:00
void * event_info )
{
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_TRUE ) ;
}
static void
2013-08-31 18:18:03 -07:00
gl18_con_req ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
2012-06-21 00:48:00 -07:00
void * event_info )
{
Elm_Object_Item * glit = event_info ;
elm_genlist_item_expanded_set ( glit , EINA_FALSE ) ;
}
void
2013-08-31 18:18:03 -07:00
test_genlist18 ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2012-06-21 00:48:00 -07:00
{
Evas_Object * win , * gl , * bx , * fr1 , * fr2 , * bx2 , * rdg ;
Testitem * tit = NULL ;
int i , j ;
2014-08-27 11:50:43 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
2012-06-21 00:48:00 -07:00
win = elm_win_util_standard_add ( " genlist-tree-decorate-all " ,
" Genlist Tree and Decorate All Mode " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
2014-08-27 11:50:43 -07:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
2012-06-21 00:48:00 -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 ) ;
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2012-06-21 00:48:00 -07:00
evas_object_show ( gl ) ;
elm_genlist_tree_effect_enabled_set ( gl , EINA_TRUE ) ;
evas_object_data_set ( gl , " tree_effect " , " true " ) ;
/* normal item */
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " tree_effect " ; /* item/tree_effect */
api - > itc1 - > func . text_get = gl15_text_get ;
api - > itc1 - > func . content_get = gl15_content_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = gl18_del ;
api - > itc1 - > decorate_all_item_style = " edit " ;
2012-06-21 00:48:00 -07:00
/* expandable item */
2014-08-27 11:50:43 -07:00
api - > itc2 = elm_genlist_item_class_new ( ) ;
api - > itc2 - > item_style = " tree_effect " ; /* tree/tree_effect */
api - > itc2 - > func . text_get = gl15_text_get ;
api - > itc2 - > func . content_get = gl15_content_get ;
api - > itc2 - > func . state_get = gl_state_get ;
api - > itc2 - > func . del = gl18_del ;
api - > itc2 - > decorate_all_item_style = " edit " ;
2012-06-21 00:48:00 -07:00
for ( i = 0 ; i < 5 ; i + + )
{
tit = calloc ( 1 , sizeof ( Testitem ) ) ;
tit - > mode = i ;
tit - > item = elm_genlist_item_append ( gl ,
2014-08-27 11:50:43 -07:00
api - > itc2 ,
2012-06-21 00:48:00 -07:00
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 ,
2014-08-27 11:50:43 -07:00
api - > itc1 ,
2012-06-21 00:48:00 -07:00
tit /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl18_sel /* func */ ,
NULL /* func data */ ) ;
i + + ;
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
elm_genlist_item_class_free ( api - > itc2 ) ;
2012-06-21 00:48:00 -07:00
2014-08-27 11:50:43 -07:00
evas_object_smart_callback_add ( gl , " expand,request " , gl18_exp_req , api ) ;
evas_object_smart_callback_add ( gl , " contract,request " , gl18_con_req , api ) ;
evas_object_smart_callback_add ( gl , " expanded " , gl18_exp , api ) ;
evas_object_smart_callback_add ( gl , " contracted " , gl18_con , api ) ;
2012-06-21 00:48:00 -07:00
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 ) ;
}
2015-09-01 10:34:43 -07:00
/*** Genlist Full Widget ***************************************************/
2012-07-31 13:07:09 -07:00
void
2013-08-31 18:18:03 -07:00
test_genlist19 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2012-07-31 13:07:09 -07:00
{
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 ) ) ;
2013-12-15 14:21:23 -08:00
win = elm_win_util_standard_add ( " genlist-full " , " Genlist Full Widget " ) ;
2012-07-31 13:07:09 -07:00
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 ) ;
2014-08-27 11:50:43 -07:00
api - > gl = gl ;
2012-07-31 13:07:09 -07:00
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 ) ;
2014-01-06 23:48:58 -08:00
evas_object_repeat_events_set ( over , EINA_TRUE ) ;
2012-07-31 13:07:09 -07:00
evas_object_show ( over ) ;
evas_object_size_hint_weight_set ( over , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_win_resize_object_add ( win , over ) ;
2014-08-27 11:50:43 -07:00
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " full " ;
api - > itc1 - > func . text_get = NULL ;
api - > itc1 - > func . content_get = gl_content_full_get ;
api - > itc1 - > func . state_get = gl_state_get ;
api - > itc1 - > func . del = NULL ;
2012-07-31 13:07:09 -07:00
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 + + )
{
2014-08-27 11:50:43 -07:00
gli = elm_genlist_item_append ( gl , api - > 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 ) ;
}
2014-08-27 11:50:43 -07:00
elm_genlist_item_class_free ( api - > itc1 ) ;
2012-07-31 13:07:09 -07:00
evas_object_resize ( win , 480 , 800 ) ;
evas_object_show ( win ) ;
}
2012-11-27 07:21:27 -08:00
2015-09-01 10:34:43 -07:00
/*** Genlist Item Styles ***************************************************/
2012-11-27 07:21:27 -08:00
const char * _genlist_styles [ ] = {
" default " , " full " , " one_icon " , " end_icon " , " no_icon " ,
" default_style " , " double_label " , " icon_top_text_bottom " ,
2013-06-23 07:18:13 -07:00
" message " , " media " , " media-album " , " media-preview " ,
2012-11-27 07:21:27 -08:00
NULL
} ;
static void
_genlist_renew ( Evas_Object * obj , const char * style )
{
Elm_Genlist_Item_Class * ic ;
2013-06-12 04:15:52 -07:00
Evas_Object * check ;
2012-11-27 07:21:27 -08:00
int i ;
if ( ! obj ) return ;
2013-09-30 03:21:31 -07:00
2012-11-27 07:21:27 -08:00
elm_genlist_clear ( obj ) ;
2013-06-12 04:15:52 -07:00
check = evas_object_data_get ( obj , " check " ) ;
if ( elm_check_state_get ( check ) )
elm_genlist_mode_set ( obj , ELM_LIST_COMPRESS ) ;
else
elm_genlist_mode_set ( obj , ELM_LIST_SCROLL ) ;
2013-09-30 03:21:31 -07:00
2012-11-27 07:21:27 -08:00
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 + + )
{
2014-06-10 22:04:48 -07:00
elm_genlist_item_append ( obj , ic , ( void * ) ( uintptr_t ) i , NULL ,
2012-11-27 07:21:27 -08:00
ELM_GENLIST_ITEM_NONE , NULL , NULL ) ;
}
elm_genlist_item_class_free ( ic ) ;
}
static void
2013-08-31 18:18:03 -07:00
_item_style_sel_cb ( void * data EINA_UNUSED , Evas_Object * obj , void * event_info )
2012-11-27 07:21:27 -08:00
{
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 ) ;
2014-02-02 00:25:25 -08:00
evas_object_size_hint_weight_set ( list , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( list , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2012-11-27 07:21:27 -08:00
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
2013-08-31 18:18:03 -07:00
test_genlist_item_styles ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2012-11-27 07:21:27 -08:00
{
2013-06-12 04:15:52 -07:00
Evas_Object * win , * box , * gl , * list , * table , * check ;
2012-11-27 07:21:27 -08:00
2013-12-15 15:42:06 -08:00
win = elm_win_util_standard_add ( " genlist-item-styles " , " Genlist Item Styles " ) ;
2012-11-27 07:21:27 -08:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
box = elm_box_add ( win ) ;
elm_box_horizontal_set ( box , EINA_TRUE ) ;
2014-02-02 00:25:25 -08:00
evas_object_size_hint_weight_set ( box , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2012-11-27 07:21:27 -08:00
elm_win_resize_object_add ( win , box ) ;
evas_object_show ( box ) ;
list = _item_styles_list_create ( box ) ;
evas_object_show ( list ) ;
2013-06-12 04:15:52 -07:00
table = _elm_min_set ( list , box , 200 , 0 ) ;
2014-02-02 00:25:25 -08:00
evas_object_size_hint_weight_set ( table , 0.0 , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( table , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
2012-11-27 07:21:27 -08:00
elm_box_pack_end ( box , table ) ;
evas_object_show ( table ) ;
gl = elm_genlist_add ( box ) ;
2014-02-02 00:25:25 -08: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 ) ;
2012-11-27 07:21:27 -08:00
elm_box_pack_end ( box , gl ) ;
evas_object_show ( gl ) ;
2013-09-30 03:21:31 -07:00
2013-06-12 04:15:52 -07:00
check = elm_check_add ( win ) ;
elm_object_text_set ( check , " Compress " ) ;
elm_box_pack_end ( box , check ) ;
evas_object_show ( check ) ;
evas_object_data_set ( gl , " check " , check ) ;
2014-02-05 21:31:15 -08:00
_genlist_renew ( gl , " default " ) ;
2012-11-27 07:21:27 -08:00
evas_object_data_set ( list , " genlist " , gl ) ;
2013-12-14 12:45:57 -08:00
evas_object_resize ( win , 600 , 600 ) ;
evas_object_show ( win ) ;
2012-11-27 07:21:27 -08:00
}
2013-11-05 20:11:23 -08:00
2015-09-01 10:34:43 -07:00
/*** Genlist Multi Select **************************************************/
2013-11-05 20:11:23 -08:00
typedef struct _Genlist_Multi_Data Genlist_Multi_Data ;
struct _Genlist_Multi_Data
{
Evas_Object * gl ;
Evas_Object * rd1 ;
Evas_Object * rd2 ;
} ;
static void
_multi_select_changed_cb ( void * data , Evas_Object * obj ,
void * event_info EINA_UNUSED )
{
Eina_Bool multi = elm_check_state_get ( obj ) ;
Genlist_Multi_Data * gd = data ;
if ( ! gd ) return ;
elm_genlist_multi_select_set ( gd - > gl , multi ) ;
elm_object_disabled_set ( gd - > rd1 , ! multi ) ;
elm_object_disabled_set ( gd - > rd2 , ! multi ) ;
}
static void
_multi_select_mode_changed_cb ( void * data , Evas_Object * obj ,
void * event_info EINA_UNUSED )
{
elm_genlist_multi_select_mode_set ( data , elm_radio_value_get ( obj ) ) ;
}
static void
_multi_select_frame_create ( Evas_Object * bx , Genlist_Multi_Data * gd )
{
Evas_Object * fr , * bx2 , * bx3 , * tg , * rd , * rdg ;
if ( ! gd ) return ;
fr = elm_frame_add ( bx ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , 0.5 ) ;
elm_object_text_set ( fr , " Multi Select Option " ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
bx2 = elm_box_add ( fr ) ;
elm_object_content_set ( fr , bx2 ) ;
evas_object_show ( bx2 ) ;
tg = elm_check_add ( bx2 ) ;
elm_object_style_set ( tg , " toggle " ) ;
elm_object_text_set ( tg , " Multi Select Mode " ) ;
elm_box_pack_end ( bx2 , tg ) ;
evas_object_show ( tg ) ;
bx3 = elm_box_add ( bx2 ) ;
elm_box_horizontal_set ( bx3 , EINA_TRUE ) ;
elm_box_pack_end ( bx2 , bx3 ) ;
evas_object_show ( bx3 ) ;
gd - > rd1 = rdg = rd = elm_radio_add ( bx3 ) ;
elm_radio_state_value_set ( rd , ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT ) ;
elm_object_text_set ( rd , " Default Mode " ) ;
elm_box_pack_end ( bx3 , rd ) ;
evas_object_show ( rd ) ;
elm_object_disabled_set ( rd , EINA_TRUE ) ;
evas_object_smart_callback_add ( rd , " changed " ,
_multi_select_mode_changed_cb , gd - > gl ) ;
gd - > rd2 = rd = elm_radio_add ( bx3 ) ;
elm_radio_state_value_set ( rd , ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL ) ;
elm_radio_group_add ( rd , rdg ) ;
elm_object_text_set ( rd , " With Control Mode " ) ;
elm_box_pack_end ( bx3 , rd ) ;
evas_object_show ( rd ) ;
elm_object_disabled_set ( rd , EINA_TRUE ) ;
evas_object_smart_callback_add ( rd , " changed " ,
_multi_select_mode_changed_cb , gd - > gl ) ;
evas_object_smart_callback_add ( tg , " changed " ,
_multi_select_changed_cb , gd ) ;
}
void
test_genlist_multi_select ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Evas_Object * win , * gl , * bx ;
Genlist_Multi_Data * gd = calloc ( 1 , sizeof ( Genlist_Multi_Data ) ) ;
Elm_Genlist_Item_Class * itc = NULL ;
int i = 0 ;
win = elm_win_util_standard_add ( " genlist-multi-select " , " Genlist Multi Select " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , gd ) ;
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 ) ;
gd - > gl = gl = elm_genlist_add ( bx ) ;
_multi_select_frame_create ( bx , gd ) ;
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 ) ;
itc = elm_genlist_item_class_new ( ) ;
2013-11-17 16:57:16 -08:00
itc - > item_style = " default " ;
2013-11-05 20:11:23 -08:00
itc - > func . text_get = gl_text_get ;
2014-07-09 08:30:48 -07:00
itc - > func . content_get = gl_content_get ;
2013-11-05 20:11:23 -08:00
itc - > func . state_get = gl_state_get ;
2013-11-17 16:57:16 -08:00
itc - > func . del = NULL ;
2013-11-05 20:11:23 -08:00
for ( i = 0 ; i < 100 ; i + + )
{
elm_genlist_item_append ( gl , itc ,
( void * ) ( uintptr_t ) i /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
gl_sel /* func */ ,
( void * ) ( uintptr_t ) ( i * 10 ) /* func data */ ) ;
}
2013-11-06 08:24:12 -08:00
elm_genlist_item_class_free ( itc ) ;
2013-12-14 12:45:57 -08:00
evas_object_resize ( win , 320 , 500 ) ;
evas_object_show ( win ) ;
2013-11-05 20:11:23 -08:00
}
2013-11-13 00:03:49 -08:00
2014-05-26 23:53:11 -07:00
2015-09-01 10:34:43 -07:00
/*** Genlist Item Search By Text *******************************************/
2014-05-26 23:53:11 -07:00
typedef struct _gl20_Event_Data gl20_Event_Data ;
struct _gl20_Event_Data
{
Evas_Object * gl_obj ;
Evas_Object * tg_obj ;
Evas_Object * en_obj ;
Elm_Object_Item * last_item_found ;
} ;
static const char * _gl20_items_text [ ] = {
" Albany " , " Annapolis " ,
" Atlanta " , " Augusta " ,
" Austin " , " Baton Rouge " ,
" Bismarck " , " Boise " ,
" Boston " , " Carson City " ,
" Charleston " , " Cheyenne " ,
" Columbia " , " Columbus " ,
" Concord " , " Denver " ,
" Des Moines " , " Dover " ,
" Frankfort " , " Harrisburg " ,
" Hartford " , " Helena " ,
" Honolulu " , " Indianapolis " ,
" Jackson " , " Jefferson City " ,
" Juneau " , " Lansing " ,
" Lincoln " , " Little Rock " ,
" Madison " , " Montgomery " ,
" Montpelier " , " Nashville " ,
" Oklahoma City " , " Olympia " ,
" Phoenix " , " Pierre " ,
" Providence " , " Raleigh " ,
" Richmond " , " Sacramento " ,
" Saint Paul " , " Salem " ,
" Salt Lake City " , " Santa Fe " ,
" Springfield " , " Tallahassee " ,
" Topeka " , " Trenton " } ;
2016-02-01 03:48:21 -08:00
static void
_gl20_del_cb ( void * data , Evas * e EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
free ( data ) ;
}
2014-05-26 23:53:11 -07:00
static char *
2014-07-23 20:41:33 -07:00
_gl20_text_get ( void * data , Evas_Object * obj EINA_UNUSED ,
const char * part EINA_UNUSED )
2014-05-26 23:53:11 -07:00
{
char buf [ 32 ] ;
int item_index = ( int ) ( uintptr_t ) data ;
if ( item_index < 50 )
{
snprintf ( buf , sizeof ( buf ) , " %s " , _gl20_items_text [ item_index ] ) ;
return strdup ( buf ) ;
}
else if ( item_index < 100 )
{
snprintf ( buf , sizeof ( buf ) , " %X " , ( item_index - 50 ) ) ;
return strdup ( buf ) ;
}
else if ( item_index = = 100 )
return strdup ( " Tree Item " ) ;
return NULL ;
}
static void
2014-07-23 20:41:33 -07:00
_gl20_search_item ( gl20_Event_Data * event_data , Elm_Object_Item * it )
2014-05-26 23:53:11 -07:00
{
const char * str = elm_entry_entry_get ( event_data - > en_obj ) ;
if ( ! str | | ! strlen ( str ) ) return ;
2014-07-23 20:41:33 -07:00
Elm_Glob_Match_Flags flag = 0 ;
if ( ! elm_check_state_get ( event_data - > tg_obj ) ) flag = ELM_GLOB_MATCH_NOCASE ;
2014-05-26 23:53:11 -07:00
printf ( " Looking for \" %s \" . " , str ) ;
2014-07-23 20:41:33 -07:00
event_data - > last_item_found = elm_genlist_search_by_text_item_get
( event_data - > gl_obj , it , NULL , str , flag ) ;
2014-05-26 23:53:11 -07:00
if ( event_data - > last_item_found )
{
printf ( " Found. \n " ) ;
elm_genlist_item_selected_set ( event_data - > last_item_found , EINA_TRUE ) ;
elm_genlist_item_bring_in ( event_data - > last_item_found ,
ELM_GENLIST_ITEM_SCROLLTO_MIDDLE ) ;
elm_object_focus_set ( event_data - > en_obj , EINA_TRUE ) ;
}
else
printf ( " Not Found. \n " ) ;
}
static void
_gl20_search_settings_changed_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * einfo EINA_UNUSED )
{
2014-07-23 20:41:33 -07:00
_gl20_search_item ( data , NULL ) ;
2014-05-26 23:53:11 -07:00
}
static Elm_Genlist_Item_Class *
_gl20_item_class_create ( const char * item_style )
{
Elm_Genlist_Item_Class * itc = elm_genlist_item_class_new ( ) ;
itc - > item_style = item_style ;
itc - > func . text_get = _gl20_text_get ;
2014-07-09 08:30:48 -07:00
itc - > func . content_get = gl_content_get ;
2014-05-26 23:53:11 -07:00
itc - > func . state_get = gl_state_get ;
2014-07-09 08:30:48 -07:00
itc - > func . del = NULL ;
2014-05-26 23:53:11 -07:00
return itc ;
}
static void
_gl20_expand_cb ( void * data EINA_UNUSED , Evas_Object * o EINA_UNUSED ,
void * event_info )
{
Elm_Object_Item * glit = event_info ;
Evas_Object * gl = elm_object_item_widget_get ( glit ) ;
Elm_Genlist_Item_Class * itc = NULL ;
int i = 0 ;
itc = _gl20_item_class_create ( " default " ) ;
for ( i = 50 ; i < 100 ; i + + )
{
elm_genlist_item_append ( gl , itc ,
( void * ) ( uintptr_t ) i /* item data */ ,
glit /* parent */ ,
ELM_GENLIST_ITEM_NONE , NULL /* func */ ,
NULL /* func data */ ) ;
}
elm_genlist_item_class_free ( itc ) ;
}
static void _gl20_on_keydown ( void * data , Evas * evas EINA_UNUSED ,
Evas_Object * o EINA_UNUSED , void * einfo )
{
Evas_Event_Key_Down * ev = einfo ;
gl20_Event_Data * event_data = ( gl20_Event_Data * ) data ;
if ( ! strcmp ( ev - > key , " Return " ) )
{
printf ( " Looking for next item \n " ) ;
2014-07-23 20:41:33 -07:00
_gl20_search_item ( data , event_data - > last_item_found ) ;
2014-05-26 23:53:11 -07:00
}
}
void
test_genlist20 ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Evas_Object * win , * bx , * gl ;
Evas_Object * fr , * lb_frame ; // info frame
Evas_Object * bx_entry , * lb_entry , * en ; // search line
Evas_Object * tg ; // "case sensitive" toggle
Elm_Genlist_Item_Class * itc = NULL ;
gl20_Event_Data * event_data = NULL ;
int i = 0 ;
win = elm_win_util_standard_add ( " genlist-item-search-by-text " ,
" Genlist Item Search By Text " ) ;
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 ) ;
fr = elm_frame_add ( bx ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_object_text_set ( fr , " Information " ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
lb_frame = elm_label_add ( fr ) ;
elm_object_text_set ( lb_frame ,
" <align=left>This is an example of "
" elm_genlist_search_by_text_item_get() usage.<br> "
" Enter search string to the entry and press Enter to "
" show next search result.<br> " ) ;
elm_object_content_set ( fr , lb_frame ) ;
evas_object_show ( lb_frame ) ;
tg = elm_check_add ( win ) ;
elm_object_style_set ( tg , " toggle " ) ;
elm_object_text_set ( tg , " Case Sensitive Search " ) ;
elm_check_state_set ( tg , EINA_TRUE ) ;
elm_box_pack_end ( bx , tg ) ;
evas_object_show ( tg ) ;
bx_entry = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx_entry , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx_entry , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx_entry , EVAS_HINT_FILL , 0.0 ) ;
elm_box_pack_end ( bx , bx_entry ) ;
evas_object_show ( bx_entry ) ;
lb_entry = elm_label_add ( win ) ;
elm_object_text_set ( lb_entry , " Search: " ) ;
evas_object_size_hint_weight_set ( lb_entry , 0.0 , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( lb_entry , 0.0 , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx_entry , lb_entry ) ;
evas_object_show ( lb_entry ) ;
en = elm_entry_add ( win ) ;
elm_entry_single_line_set ( en , EINA_TRUE ) ;
elm_entry_scrollable_set ( en , EINA_TRUE ) ;
elm_object_part_text_set ( en , " guide " , " Type item's name here to search. " ) ;
evas_object_size_hint_weight_set ( en , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( en , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx_entry , en ) ;
evas_object_show ( en ) ;
elm_object_focus_set ( en , EINA_TRUE ) ;
gl = elm_genlist_add ( bx ) ;
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 ) ;
event_data = calloc ( 1 , sizeof ( gl20_Event_Data ) ) ;
event_data - > tg_obj = tg ;
event_data - > en_obj = en ;
event_data - > gl_obj = gl ;
event_data - > last_item_found = NULL ;
evas_object_event_callback_add ( en , EVAS_CALLBACK_KEY_DOWN ,
_gl20_on_keydown , ( void * ) event_data ) ;
evas_object_event_callback_add ( gl , EVAS_CALLBACK_FREE ,
2016-02-01 03:48:21 -08:00
_gl20_del_cb , ( void * ) event_data ) ;
2014-05-26 23:53:11 -07:00
evas_object_smart_callback_add ( en , " changed,user " ,
_gl20_search_settings_changed_cb , ( void * ) event_data ) ;
evas_object_smart_callback_add ( tg , " changed " ,
_gl20_search_settings_changed_cb , ( void * ) event_data ) ;
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 , " contracted " , gl4_con , gl ) ;
evas_object_smart_callback_add ( gl , " expanded " , _gl20_expand_cb , gl ) ;
itc = _gl20_item_class_create ( " tree_effect " ) ;
elm_genlist_item_append ( gl , itc ,
( void * ) 100 /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_TREE ,
NULL /* func */ ,
NULL /* func data */ ) ;
itc - > item_style = " default " ;
for ( i = 0 ; i < 50 ; i + + )
{
elm_genlist_item_append ( gl , itc ,
( void * ) ( uintptr_t ) i /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
NULL /* func */ ,
NULL /* func data */ ) ;
}
elm_genlist_item_class_free ( itc ) ;
evas_object_resize ( win , 320 , 500 ) ;
evas_object_show ( win ) ;
}
2013-11-13 00:03:49 -08:00
2015-09-01 10:34:43 -07:00
/*** Genlist Del ***********************************************************/
2013-11-13 00:03:49 -08:00
static void _gl_del_sel ( void * data , Evas_Object * obj , void * event_info ) ;
static void
_gl_del_win_del_cb ( void * data , Evas * e EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
if ( ! data ) return ;
elm_genlist_item_class_free ( data ) ;
}
2013-11-17 16:54:21 -08:00
static void
_gl_del_unrealized_cb ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info )
{
int num = ( int ) ( uintptr_t ) elm_object_item_data_get ( event_info ) ;
printf ( " unrealized item # %d \n " , num ) ;
}
2014-08-09 08:53:46 -07:00
static void
_gl_del_doubleclick_cb ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info )
{
int num = ( int ) ( uintptr_t ) elm_object_item_data_get ( event_info ) ;
int num_category = num % 4 ;
if ( num_category = = 3 )
elm_genlist_clear ( obj ) ;
}
2013-11-13 00:03:49 -08:00
static Evas_Object *
_gl_del_genlist_add ( Evas_Object * bx )
{
Evas_Object * gl = NULL ;
gl = elm_genlist_add ( bx ) ;
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 ) ;
2013-11-17 16:54:21 -08:00
evas_object_smart_callback_add ( gl , " unrealized " ,
_gl_del_unrealized_cb , NULL ) ;
2014-08-09 08:53:46 -07:00
evas_object_smart_callback_add ( gl , " clicked,double " ,
_gl_del_doubleclick_cb , NULL ) ;
2013-11-13 00:03:49 -08:00
return gl ;
}
static void
_gl_del_item_append ( Evas_Object * gl , Elm_Genlist_Item_Class * itc )
{
int i = 0 ;
for ( i = 0 ; i < 1000 ; i + + )
{
elm_genlist_item_append ( gl , itc ,
( void * ) ( uintptr_t ) i /* item data */ ,
NULL /* parent */ ,
ELM_GENLIST_ITEM_NONE ,
_gl_del_sel /* func */ ,
( void * ) ( uintptr_t ) ( i ) /* func data */ ) ;
}
}
2015-09-01 10:34:43 -07:00
char *
_gl_del_text_get ( void * data , Evas_Object * obj EINA_UNUSED ,
const char * part EINA_UNUSED )
2013-11-13 00:03:49 -08:00
{
char buf [ 256 ] = { 0 } ;
int num = ( int ) ( uintptr_t ) data ;
2015-12-24 10:31:14 -08:00
int num_category = num % 10 ;
2013-11-13 00:03:49 -08:00
2015-12-24 10:31:14 -08:00
if ( num_category = = 3 )
2014-08-09 08:53:46 -07:00
snprintf ( buf , sizeof ( buf ) ,
" Item #%.02i - 1. Item Del " , num ) ;
2015-12-24 10:31:14 -08:00
else if ( num_category = = 5 )
2014-08-09 08:53:46 -07:00
snprintf ( buf , sizeof ( buf ) ,
" Item #%.02i - 2. Genlist Clear and Item Append " , num ) ;
2015-12-24 10:31:14 -08:00
else if ( num_category = = 7 )
2014-08-09 08:53:46 -07:00
snprintf ( buf , sizeof ( buf ) ,
" Item #%.02i - 3. Genlist Del " , num ) ;
2015-12-24 10:31:14 -08:00
else if ( num_category = = 9 )
2014-08-09 08:53:46 -07:00
snprintf ( buf , sizeof ( buf ) ,
" Item #%.02i - 4. Genlist Clear on double-click " , num ) ;
2015-12-24 10:31:14 -08:00
else
snprintf ( buf , sizeof ( buf ) ,
" Item #%.02i - Normal item " , num ) ;
2013-11-13 00:03:49 -08:00
return strdup ( buf ) ;
}
static void
_gl_del_sel ( void * data , Evas_Object * obj , void * event_info )
{
int num = ( int ) ( uintptr_t ) data ;
2015-12-24 10:31:14 -08:00
int num_category = num % 10 ;
2013-11-13 00:03:49 -08:00
Elm_Object_Item * it = event_info ;
Elm_Genlist_Item_Class * itc =
( Elm_Genlist_Item_Class * ) elm_genlist_item_item_class_get ( it ) ;
2015-12-24 10:31:14 -08:00
if ( num_category = = 3 )
2013-11-13 00:03:49 -08:00
elm_object_item_del ( it ) ;
2015-12-24 10:31:14 -08:00
else if ( num_category = = 5 )
2013-11-13 00:03:49 -08:00
{
elm_genlist_clear ( obj ) ;
2015-01-15 05:36:57 -08:00
_gl_del_item_append ( obj , itc ) ;
2013-11-13 00:03:49 -08:00
}
2015-12-24 10:31:14 -08:00
else if ( num_category = = 7 )
2013-11-13 00:03:49 -08:00
{
evas_object_del ( obj ) ;
}
}
2013-11-17 16:54:21 -08:00
static void
_gl_del_del_cb ( void * data , Evas_Object * obj EINA_UNUSED )
{
printf ( " deleted item # %d \n " , ( int ) ( uintptr_t ) data ) ;
}
2013-11-13 00:03:49 -08:00
void
test_genlist_del ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Evas_Object * win , * bx , * fr , * lb , * gl ;
Elm_Genlist_Item_Class * itc = NULL ;
win = elm_win_util_standard_add ( " genlist-del " , " Genlist Del " ) ;
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 ) ;
elm_box_align_set ( bx , 0.5 , 0.0 ) ;
evas_object_show ( bx ) ;
fr = elm_frame_add ( bx ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_object_text_set ( fr , " Information " ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
lb = elm_label_add ( fr ) ;
elm_object_text_set ( lb , " <align=left>This example tests the following cases "
" on item selection.<br/> "
" 1. genlist item deletion<br/> "
" 2. genlist clear and item append<br/> "
2014-08-09 08:53:46 -07:00
" 3. genlist del<br/> "
" 4. genlist clear on double-click</align> " ) ;
2013-11-13 00:03:49 -08:00
elm_object_content_set ( fr , lb ) ;
evas_object_show ( lb ) ;
itc = elm_genlist_item_class_new ( ) ;
2013-11-17 16:57:16 -08:00
itc - > item_style = " default " ;
2013-11-13 00:03:49 -08:00
itc - > func . text_get = _gl_del_text_get ;
2014-07-09 08:30:48 -07:00
itc - > func . content_get = gl_content_get ;
2013-11-13 00:03:49 -08:00
itc - > func . state_get = NULL ;
2013-11-17 16:57:16 -08:00
itc - > func . del = _gl_del_del_cb ;
2013-11-13 00:03:49 -08:00
evas_object_event_callback_add ( win , EVAS_CALLBACK_DEL ,
_gl_del_win_del_cb , itc ) ;
gl = _gl_del_genlist_add ( bx ) ;
_gl_del_item_append ( gl , itc ) ;
2013-12-14 12:45:57 -08:00
evas_object_resize ( win , 320 , 500 ) ;
evas_object_show ( win ) ;
2013-11-13 00:03:49 -08:00
}
2014-02-04 03:29:29 -08:00
2015-09-01 10:34:43 -07:00
/*** Genlist Focus *********************************************************/
2014-04-23 22:12:52 -07:00
static unsigned _gl_focus_objects = 3 ;
2014-03-22 08:13:58 -07:00
static const char * _gl_focus_object_names [ ] = { " None " , " Square " , " Button " , " Check " , " Box " } ;
2014-12-13 11:06:44 -08:00
// for the top genlist items
2014-09-07 03:43:24 -07:00
static char *
2014-12-13 11:06:44 -08:00
gl_focus_top_items_text_get ( void * data , Evas_Object * obj EINA_UNUSED ,
const char * part EINA_UNUSED )
2014-09-07 03:43:24 -07:00
{
if ( ! data ) return NULL ;
2014-12-13 11:06:44 -08:00
if ( ! strcmp ( data , " do_nothing " ) )
return strdup ( " Genlist Item " ) ;
else if ( ! strcmp ( data , " popup_sel " ) )
2016-01-24 06:44:48 -08:00
return strdup ( " Create a popup on Select (popup parent is gl) " ) ;
2014-09-07 03:43:24 -07:00
else if ( ! strcmp ( data , " popup_mouse_down " ) )
2016-01-24 06:44:48 -08:00
return strdup ( " Create a popup on Mouse Down (popup parent is gl) " ) ;
else if ( ! strcmp ( data , " popup_activate " ) )
return strdup ( " Create a popup on Activate (popup parent is win) " ) ;
2014-12-13 11:06:44 -08:00
else if ( ! strcmp ( data , " clear_on_focus " ) )
return strdup ( " Genlist Clear on Focus " ) ;
2014-09-07 03:43:24 -07:00
else
return NULL ;
}
2014-03-22 08:13:58 -07:00
static char *
gl_focus_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
{
char buf [ 256 ] ;
unsigned char op = ( uintptr_t ) data % 100 ;
unsigned char v1 , v2 ;
v1 = op / 10 ;
if ( v1 > 4 ) v1 = 4 ;
v2 = op % 10 ;
if ( v2 > 4 ) v2 = 4 ;
snprintf ( buf , sizeof ( buf ) , " %s / %s " ,
_gl_focus_object_names [ v1 ] , _gl_focus_object_names [ v2 ] ) ;
return strdup ( buf ) ;
}
static Evas_Object *
gl_focus_content_get ( void * data , Evas_Object * obj , const char * part )
{
Evas_Object * cnt = NULL ;
char op = ( uintptr_t ) data % 100 ;
char type = ( ! strcmp ( part , " elm.swallow.icon " ) ) ? op / 10 : op % 10 ;
switch ( type )
{
case 1 :
cnt = elm_bg_add ( obj ) ;
evas_object_color_set ( cnt , 128 , 18 , 128 , 255 ) ;
break ;
case 2 :
cnt = elm_button_add ( obj ) ;
break ;
case 3 :
cnt = elm_check_add ( obj ) ;
break ;
case 4 :
cnt = elm_box_add ( obj ) ;
evas_object_size_hint_align_set ( cnt , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_horizontal_set ( cnt , EINA_TRUE ) ;
elm_box_pack_end ( cnt , gl_focus_content_get ( ( void * ) 2 , obj , " " ) ) ;
elm_box_pack_end ( cnt , gl_focus_content_get ( ( void * ) 3 , obj , " " ) ) ;
elm_box_pack_end ( cnt , gl_focus_content_get ( ( void * ) 2 , obj , " " ) ) ;
break ;
default :
break ;
}
if ( cnt )
{
evas_object_size_hint_weight_set ( cnt , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( cnt ) ;
}
return cnt ;
}
2014-09-07 03:43:24 -07:00
static void
_gl_focus_sel_popup_close_btn_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
evas_object_del ( data ) ;
}
static void
_gl_focus_sel_popup_create ( Evas_Object * parent )
{
Evas_Object * popup = NULL , * btn = NULL ;
popup = elm_popup_add ( parent ) ;
elm_object_text_set ( popup , " Popup for the genlist focus test with popup creation. " ) ;
// popup buttons
btn = elm_button_add ( popup ) ;
elm_object_text_set ( btn , " Close " ) ;
elm_object_part_content_set ( popup , " button1 " , btn ) ;
evas_object_smart_callback_add ( btn , " clicked " , _gl_focus_sel_popup_close_btn_cb , popup ) ;
// popup show should be called after adding all the contents and the buttons
// of popup to set the focus into popup's contents correctly.
evas_object_show ( popup ) ;
2015-10-16 12:20:17 -07:00
elm_object_focus_set ( btn , EINA_TRUE ) ;
2014-09-07 03:43:24 -07:00
}
static void
_gl_focus_0_item_sel_cb ( void * data EINA_UNUSED , Evas_Object * obj ,
void * event_info EINA_UNUSED )
{
_gl_focus_sel_popup_create ( obj ) ;
}
2014-04-23 22:12:52 -07:00
static void
2014-04-26 21:04:26 -07:00
_gl_focus_item_loop_enable_changed_cb ( void * data , Evas_Object * obj ,
2014-07-09 08:30:48 -07:00
void * event_info EINA_UNUSED )
2014-04-23 22:12:52 -07:00
{
Evas_Object * gl = data ;
elm_object_scroll_item_loop_enabled_set ( gl , elm_check_state_get ( obj ) ) ;
}
2014-03-22 08:13:58 -07:00
static void
2014-04-26 21:04:26 -07:00
_gl_focus_focus_on_selection_set ( Evas_Object * gl ,
Evas_Object * chk , Eina_Bool focus )
2014-03-22 08:13:58 -07:00
{
2014-03-22 08:38:01 -07:00
elm_genlist_focus_on_selection_set ( gl , focus ) ;
elm_check_state_set ( chk , focus ) ;
printf ( " genlist_focus_on_selection = %s \n " , ( focus ) ? " true " : " false " ) ;
2014-03-22 08:13:58 -07:00
}
static void
2014-04-26 21:04:26 -07:00
_gl_focus_focus_on_selection_changed_cb ( void * data , Evas_Object * obj ,
2014-07-09 08:30:48 -07:00
void * event_info EINA_UNUSED )
2014-03-22 08:13:58 -07:00
{
Eina_Bool nextstate = ! elm_genlist_focus_on_selection_get ( data ) ;
2014-04-26 21:04:26 -07:00
_gl_focus_focus_on_selection_set ( data , obj , nextstate ) ;
2014-03-22 08:13:58 -07:00
}
2015-08-04 23:57:11 -07:00
static void
_gl_focus_win_auto_focus_enable_changed ( void * data EINA_UNUSED ,
Evas_Object * obj ,
void * event_info EINA_UNUSED )
{
elm_config_window_auto_focus_enable_set ( elm_check_state_get ( obj ) ) ;
}
static void
_gl_focus_win_auto_focus_animate_changed ( void * data EINA_UNUSED ,
Evas_Object * obj ,
void * event_info EINA_UNUSED )
{
elm_config_window_auto_focus_animate_set ( elm_check_state_get ( obj ) ) ;
}
2014-03-22 08:13:58 -07:00
static void
2014-04-26 21:04:26 -07:00
_gl_focus_focus_highlight_changed_cb ( void * data , Evas_Object * obj ,
void * event_info EINA_UNUSED )
2014-03-22 08:38:01 -07:00
{
2014-03-23 07:32:43 -07:00
elm_win_focus_highlight_enabled_set ( data ,
2014-03-22 08:38:01 -07:00
elm_check_state_get ( obj ) ) ;
}
static void
2014-04-26 21:04:26 -07:00
_gl_focus_focus_animate_changed_cb ( void * data , Evas_Object * obj ,
void * event_info EINA_UNUSED )
2014-03-22 08:13:58 -07:00
{
2014-03-23 07:32:43 -07:00
elm_win_focus_highlight_animate_set ( data ,
2014-03-22 08:13:58 -07:00
elm_check_state_get ( obj ) ) ;
}
2014-03-23 07:32:43 -07:00
static void
2014-04-26 21:04:26 -07:00
_gl_focus_move_policy_changed_cb ( void * data EINA_UNUSED ,
Evas_Object * obj ,
void * event_info EINA_UNUSED )
2014-03-23 07:32:43 -07:00
{
int val = elm_radio_value_get ( obj ) ;
if ( val = = 0 )
elm_config_focus_move_policy_set ( ELM_FOCUS_MOVE_POLICY_CLICK ) ;
else if ( val = = 1 )
elm_config_focus_move_policy_set ( ELM_FOCUS_MOVE_POLICY_IN ) ;
}
2014-09-17 16:37:55 -07:00
static void
_gl_focus_item_focus_cb ( void * data , Evas_Object * obj , void * event_info )
{
2014-12-13 11:06:44 -08:00
printf ( " item,focused: %p \n " , event_info ) ;
if ( event_info = = data )
elm_genlist_clear ( obj ) ;
}
static void
_gl_focus_item_unfocus_cb ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED ,
void * event_info )
{
printf ( " item,unfocused %p \n " , event_info ) ;
2014-09-17 16:37:55 -07:00
}
2014-03-23 00:53:08 -07:00
static void
2016-01-24 06:44:48 -08:00
_gl_focus_item_cb ( void * data , Evas_Object * obj , void * event_info )
2014-03-23 00:53:08 -07:00
{
2016-01-24 06:44:48 -08:00
Elm_Object_Item * it = event_info ;
printf ( " %s: %p \n " , ( char * ) data , it ) ;
if ( ! strcmp ( ( char * ) data , " activated " ) & &
! strcmp ( ( char * ) elm_object_item_data_get ( it ) , " popup_activate " ) )
{
_gl_focus_sel_popup_create ( elm_object_top_widget_get ( obj ) ) ;
}
2014-03-23 00:53:08 -07:00
}
static void
_gl_focus_key_down_cb ( void * data EINA_UNUSED , Evas * e EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED , void * event_info )
{
Evas_Event_Key_Down * ev = event_info ;
printf ( " \n === Key Down : %s === \n " , ev - > keyname ) ;
}
2014-09-07 03:43:24 -07:00
static void
_gl_focus_mouse_down_cb ( void * data EINA_UNUSED , Evas * e EINA_UNUSED ,
Evas_Object * obj , void * event_info )
{
Evas_Event_Mouse_Down * ev = event_info ;
Elm_Object_Item * it = NULL ;
int postret = 0 ;
it = elm_genlist_at_xy_item_get ( obj , ev - > canvas . x , ev - > canvas . y , & postret ) ;
if ( ! it ) return ;
2014-12-13 11:06:44 -08:00
if ( elm_genlist_item_index_get ( it ) = = 4 )
2014-09-07 03:43:24 -07:00
_gl_focus_sel_popup_create ( obj ) ;
}
2014-03-22 08:38:01 -07:00
static Ecore_Timer * timer = NULL ;
static void
2014-04-26 21:04:26 -07:00
_gl_focus_win_del_cb ( void * data EINA_UNUSED , Evas * e EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2014-03-22 08:38:01 -07:00
{
ecore_timer_del ( timer ) ;
timer = NULL ;
}
2014-04-26 20:38:27 -07:00
static void
2014-04-26 21:04:26 -07:00
_gl_focus_item_select_on_focus_disable_changed_cb ( void * data EINA_UNUSED , Evas_Object * obj ,
2014-07-09 08:30:48 -07:00
void * event_info EINA_UNUSED )
2014-04-26 20:38:27 -07:00
{
elm_config_item_select_on_focus_disabled_set ( elm_check_state_get ( obj ) ) ;
}
2014-07-21 02:55:55 -07:00
static void
_gl_first_item_focus_on_first_focus_in_cb ( void * data EINA_UNUSED , Evas_Object * obj ,
void * event_info EINA_UNUSED )
{
elm_config_first_item_focus_on_first_focusin_set ( elm_check_state_get ( obj ) ) ;
}
2015-06-24 21:24:21 -07:00
static void
_gl_wheel_disabled_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
{
elm_scroller_wheel_disabled_set ( data , elm_check_state_get ( obj ) ) ;
}
2014-03-22 08:38:01 -07:00
static Eina_Bool
_focus_timer_cb ( void * data )
{
elm_object_item_focus_set ( data , EINA_TRUE ) ;
timer = NULL ;
return ECORE_CALLBACK_CANCEL ;
}
static Eina_Bool
_select_timer_cb ( void * data )
{
elm_genlist_item_selected_set ( data , EINA_TRUE ) ;
timer = NULL ;
return ECORE_CALLBACK_CANCEL ;
}
static void
_focus_btn_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
ecore_timer_del ( timer ) ;
timer = ecore_timer_add ( 1.5 , _focus_timer_cb , data ) ;
}
static void
_sel_btn_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
ecore_timer_del ( timer ) ;
timer = ecore_timer_add ( 1.5 , _select_timer_cb , data ) ;
}
2014-03-23 10:07:41 -07:00
static void
_dis_btn_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
elm_object_item_disabled_set ( data , EINA_TRUE ) ;
}
2014-09-07 02:46:15 -07:00
static void
_add_more_items_btn_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Elm_Genlist_Item_Class * itc = NULL ;
int i = 0 ;
itc = elm_genlist_item_class_new ( ) ;
itc - > item_style = " default " ;
itc - > func . text_get = gl_text_get ;
itc - > func . content_get = NULL ;
itc - > func . state_get = NULL ;
itc - > func . del = NULL ;
for ( i = 0 ; i < 1000 ; i + + )
{
elm_genlist_item_append ( data , itc , ( void * ) ( uintptr_t ) i ,
NULL , ELM_GENLIST_ITEM_NONE , NULL , NULL ) ;
}
elm_genlist_item_class_free ( itc ) ;
}
2014-03-22 08:38:01 -07:00
static void
_focus_button_clicked_cb ( void * data , Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
printf ( " Button clicked: %s \n " , ( char * ) data ) ;
}
2014-03-22 08:13:58 -07:00
2014-05-11 06:42:45 -07:00
void
_focus_autoscroll_changed_cb ( void * data EINA_UNUSED ,
Evas_Object * obj ,
void * event_info EINA_UNUSED )
2014-04-26 12:15:26 -07:00
{
2014-05-11 06:42:45 -07:00
elm_config_focus_autoscroll_mode_set ( elm_radio_value_get ( obj ) ) ;
}
/* this function is used in another tests such as list, gengrid, and toolbar. */
Evas_Object *
_focus_autoscroll_mode_frame_create ( Evas_Object * parent )
{
Evas_Object * fr , * bx , * rdg , * rd ;
fr = elm_frame_add ( parent ) ;
elm_object_text_set ( fr , " Focus Autoscroll Mode " ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , 0.5 ) ;
evas_object_show ( fr ) ;
bx = elm_box_add ( fr ) ;
elm_object_content_set ( fr , bx ) ;
evas_object_show ( bx ) ;
rdg = rd = elm_radio_add ( bx ) ;
elm_radio_state_value_set ( rd , ELM_FOCUS_AUTOSCROLL_MODE_SHOW ) ;
elm_object_text_set ( rd , " ELM_FOCUS_AUTOSCROLL_MODE_SHOW " ) ;
elm_object_tooltip_text_set ( rd , " Directly show the focused region<br/> "
" or item automatically inside a scroller. " ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( rd , 0.0 , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , rd ) ;
evas_object_show ( rd ) ;
evas_object_smart_callback_add ( rd , " changed " ,
_focus_autoscroll_changed_cb ,
NULL ) ;
rd = elm_radio_add ( bx ) ;
elm_radio_state_value_set ( rd , ELM_FOCUS_AUTOSCROLL_MODE_NONE ) ;
elm_object_text_set ( rd , " ELM_FOCUS_AUTOSCROLL_MODE_NONE " ) ;
elm_object_tooltip_text_set ( rd , " Do not show the focused region or<br/> "
" item automatically inside a scroller. " ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( rd , 0.0 , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , rd ) ;
elm_radio_group_add ( rd , rdg ) ;
evas_object_show ( rd ) ;
evas_object_smart_callback_add ( rd , " changed " ,
_focus_autoscroll_changed_cb ,
NULL ) ;
rd = elm_radio_add ( bx ) ;
elm_radio_state_value_set ( rd , ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN ) ;
elm_object_text_set ( rd , " ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN " ) ;
elm_object_tooltip_text_set ( rd , " Bring in the focused region or item<br/> "
" automatically which might invole the scrolling. " ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( rd , 0.0 , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , rd ) ;
elm_radio_group_add ( rd , rdg ) ;
evas_object_show ( rd ) ;
evas_object_smart_callback_add ( rd , " changed " ,
_focus_autoscroll_changed_cb ,
NULL ) ;
elm_radio_value_set ( rdg , elm_config_focus_autoscroll_mode_get ( ) ) ;
return fr ;
2014-04-26 12:15:26 -07:00
}
2014-09-07 01:49:04 -07:00
static void
_test_genlist_focus_option_panel_create ( Evas_Object * win , Evas_Object * bx ,
Evas_Object * gl , Elm_Object_Item * it_0 ,
Elm_Object_Item * it_2 )
2014-02-04 03:29:29 -08:00
{
2014-09-07 01:49:04 -07:00
Evas_Object * fr = NULL , * bx_opt = NULL , * chk = NULL ;
Evas_Object * bx_mv = NULL , * rd = NULL , * rdg = NULL ;
2014-09-07 01:49:59 -07:00
Evas_Object * btn_box = NULL , * btn = NULL ;
2014-03-22 08:13:58 -07:00
2014-03-22 08:38:01 -07:00
fr = elm_frame_add ( bx ) ;
elm_object_text_set ( fr , " Options " ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
bx_opt = elm_box_add ( fr ) ;
2016-01-31 20:25:01 -08:00
elm_box_layout_set ( bx_opt , evas_object_box_layout_flow_horizontal , NULL , NULL ) ;
evas_object_size_hint_weight_set ( bx_opt , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( bx_opt , EVAS_HINT_FILL , 0.0 ) ;
elm_box_align_set ( bx_opt , 0.0 , 0.5 ) ;
2014-03-22 08:38:01 -07:00
elm_object_content_set ( fr , bx_opt ) ;
evas_object_show ( bx_opt ) ;
chk = elm_check_add ( bx_opt ) ;
2015-08-04 23:57:11 -07:00
elm_object_text_set ( chk , " Window Auto Focus Enable " ) ;
elm_check_state_set ( chk , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " ,
_gl_focus_win_auto_focus_enable_changed ,
NULL ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " Window Auto Focus Animate " ) ;
2014-03-22 08:38:01 -07:00
elm_check_state_set ( chk , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
2015-08-04 23:57:11 -07:00
evas_object_smart_callback_add ( chk , " changed " ,
_gl_focus_win_auto_focus_animate_changed ,
NULL ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " Focus Highlight " ) ;
elm_check_state_set ( chk , EINA_FALSE ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
2014-03-22 08:38:01 -07:00
evas_object_smart_callback_add ( chk , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_focus_highlight_changed_cb ,
2014-03-22 08:38:01 -07:00
win ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " Focus Animation " ) ;
2015-08-04 23:57:11 -07:00
elm_check_state_set ( chk , EINA_FALSE ) ;
2014-03-22 08:38:01 -07:00
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_focus_animate_changed_cb ,
2014-03-22 08:38:01 -07:00
win ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " Focus on selection " ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_focus_on_selection_changed_cb , gl ) ;
2014-03-22 08:38:01 -07:00
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
2014-04-23 22:12:52 -07:00
chk = elm_check_add ( bx_opt ) ;
2014-09-07 06:06:47 -07:00
elm_object_text_set ( chk , " Item Looping Enable " ) ;
2014-04-23 22:12:52 -07:00
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_item_loop_enable_changed_cb , gl ) ;
2014-04-23 22:12:52 -07:00
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
2014-04-26 20:38:27 -07:00
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " Item Select on Focus disable " ) ;
elm_check_state_set ( chk , elm_config_item_select_on_focus_disabled_get ( ) ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_item_select_on_focus_disable_changed_cb ,
2014-04-26 20:38:27 -07:00
NULL ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
2014-07-21 02:55:55 -07:00
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " First item focus on first focus in " ) ;
elm_check_state_set ( chk , elm_config_first_item_focus_on_first_focusin_get ( ) ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " ,
_gl_first_item_focus_on_first_focus_in_cb ,
NULL ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
2015-06-24 21:24:21 -07:00
chk = elm_check_add ( bx_opt ) ;
elm_object_text_set ( chk , " Wheel Disabled " ) ;
elm_check_state_set ( chk , elm_scroller_wheel_disabled_get ( gl ) ) ;
evas_object_size_hint_weight_set ( chk , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( chk , " changed " , _gl_wheel_disabled_cb , gl ) ;
elm_box_pack_end ( bx_opt , chk ) ;
evas_object_show ( chk ) ;
2014-05-11 06:42:45 -07:00
// Focus Autoscroll Mode
fr = _focus_autoscroll_mode_frame_create ( bx ) ;
elm_box_pack_end ( bx , fr ) ;
2014-03-23 07:32:43 -07:00
// Focus Movement Policy
fr = elm_frame_add ( bx ) ;
elm_object_text_set ( fr , " Focus Movement Policy " ) ;
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
bx_mv = elm_box_add ( fr ) ;
elm_box_horizontal_set ( bx_mv , EINA_TRUE ) ;
elm_object_content_set ( fr , bx_mv ) ;
evas_object_show ( bx_mv ) ;
rdg = rd = elm_radio_add ( bx_mv ) ;
elm_object_text_set ( rd , " Focus Move by Click " ) ;
elm_radio_state_value_set ( rd , 0 ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( rd , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_move_policy_changed_cb ,
2014-03-23 07:32:43 -07:00
NULL ) ;
elm_box_pack_end ( bx_mv , rd ) ;
evas_object_show ( rd ) ;
rd = elm_radio_add ( bx_mv ) ;
elm_object_text_set ( rd , " Focus Move by Mouse-In " ) ;
elm_radio_group_add ( rd , rdg ) ;
elm_radio_state_value_set ( rd , 1 ) ;
evas_object_size_hint_weight_set ( rd , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_smart_callback_add ( rd , " changed " ,
2014-04-26 21:04:26 -07:00
_gl_focus_move_policy_changed_cb ,
2014-03-23 07:32:43 -07:00
NULL ) ;
elm_box_pack_end ( bx_mv , rd ) ;
evas_object_show ( rd ) ;
2014-09-23 10:10:55 -07:00
// Options
2014-03-22 08:38:01 -07:00
fr = elm_frame_add ( bx ) ;
2014-09-23 10:10:55 -07:00
elm_object_text_set ( fr , " Options " ) ;
2014-03-22 08:38:01 -07:00
evas_object_size_hint_weight_set ( fr , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( fr , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , fr ) ;
evas_object_show ( fr ) ;
2014-09-07 01:49:59 -07:00
btn_box = elm_box_add ( fr ) ;
elm_object_content_set ( fr , btn_box ) ;
evas_object_show ( btn_box ) ;
btn = elm_button_add ( btn_box ) ;
elm_object_text_set ( btn , " Focus 2nd Item after 1.5 seconds. " ) ;
evas_object_size_hint_weight_set ( btn , 0.0 , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( btn , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( btn_box , btn ) ;
evas_object_show ( btn ) ;
evas_object_smart_callback_add ( btn , " clicked " , _focus_btn_cb , it_2 ) ;
btn = elm_button_add ( btn_box ) ;
elm_object_text_set ( btn , " Select 2nd Item after 1.5 seconds. " ) ;
evas_object_size_hint_weight_set ( btn , 0.0 , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( btn , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( btn_box , btn ) ;
evas_object_show ( btn ) ;
evas_object_smart_callback_add ( btn , " clicked " , _sel_btn_cb , it_2 ) ;
btn = elm_button_add ( btn_box ) ;
elm_object_text_set ( btn , " Disable 1st Item. " ) ;
evas_object_size_hint_weight_set ( btn , 0.0 , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( btn , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( btn_box , btn ) ;
evas_object_show ( btn ) ;
evas_object_smart_callback_add ( btn , " clicked " , _dis_btn_cb , it_0 ) ;
2014-09-07 02:46:15 -07:00
btn = elm_button_add ( btn_box ) ;
elm_object_text_set ( btn , " Add more Genlist items " ) ;
evas_object_size_hint_weight_set ( btn , 0.0 , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( btn , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( btn_box , btn ) ;
evas_object_show ( btn ) ;
evas_object_smart_callback_add ( btn , " clicked " , _add_more_items_btn_cb , gl ) ;
2014-09-07 01:49:04 -07:00
}
void
test_genlist_focus ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Evas_Object * win , * bx , * bx2 , * gl , * btn ;
unsigned lhand , rhand ;
2014-12-13 11:06:44 -08:00
Elm_Object_Item * it = NULL , * it_1 = NULL , * it_2 = NULL ;
Elm_Genlist_Item_Class * itc = NULL , * itc1 = NULL , * itc2 = NULL ;
2014-09-07 01:49:04 -07:00
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
win = elm_win_util_standard_add ( " genlist-focus " , " Genlist Focus " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_DEL ,
_gl_focus_win_del_cb , NULL ) ;
2015-08-04 23:57:11 -07:00
elm_config_window_auto_focus_enable_set ( EINA_TRUE ) ;
elm_config_window_auto_focus_animate_set ( EINA_TRUE ) ;
elm_win_focus_highlight_enabled_set ( win , EINA_FALSE ) ;
elm_win_focus_highlight_animate_set ( win , EINA_FALSE ) ;
2014-09-07 01:49:04 -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 ) ;
btn = elm_button_add ( bx ) ;
elm_object_text_set ( btn , " Up " ) ;
elm_box_pack_end ( bx , btn ) ;
evas_object_smart_callback_add ( btn , " clicked " ,
_focus_button_clicked_cb , " Up " ) ;
evas_object_show ( btn ) ;
bx2 = elm_box_add ( bx ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
btn = elm_button_add ( bx2 ) ;
elm_object_text_set ( btn , " Left " ) ;
elm_box_pack_end ( bx2 , btn ) ;
evas_object_smart_callback_add ( btn , " clicked " ,
_focus_button_clicked_cb , " Left " ) ;
evas_object_show ( btn ) ;
gl = elm_genlist_add ( bx ) ;
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_genlist_select_mode_set ( gl , ELM_OBJECT_SELECT_MODE_ALWAYS ) ;
elm_box_pack_end ( bx2 , gl ) ;
api - > gl = gl ;
evas_object_show ( gl ) ;
evas_object_smart_callback_add ( gl , " selected " , _gl_focus_item_cb , " selected " ) ;
evas_object_smart_callback_add ( gl , " unselected " , _gl_focus_item_cb , " unselected " ) ;
evas_object_smart_callback_add ( gl , " activated " , _gl_focus_item_cb , " activated " ) ;
evas_object_smart_callback_add ( gl , " highlighted " , _gl_focus_item_cb , " highlighted " ) ;
evas_object_smart_callback_add ( gl , " unhighlighted " , _gl_focus_item_cb , " unhighlighted " ) ;
evas_object_event_callback_add ( gl , EVAS_CALLBACK_KEY_DOWN , _gl_focus_key_down_cb , NULL ) ;
2014-09-07 03:43:24 -07:00
evas_object_event_callback_add ( gl , EVAS_CALLBACK_MOUSE_DOWN , _gl_focus_mouse_down_cb , NULL ) ;
2014-09-07 01:49:04 -07:00
btn = elm_button_add ( bx2 ) ;
elm_object_text_set ( btn , " Right " ) ;
elm_box_pack_end ( bx2 , btn ) ;
evas_object_smart_callback_add ( btn , " clicked " ,
_focus_button_clicked_cb , " Right " ) ;
evas_object_show ( btn ) ;
btn = elm_button_add ( bx ) ;
elm_object_text_set ( btn , " Down " ) ;
elm_box_pack_end ( bx , btn ) ;
evas_object_smart_callback_add ( btn , " clicked " ,
_focus_button_clicked_cb , " Down " ) ;
evas_object_show ( btn ) ;
2014-09-07 03:43:24 -07:00
itc = elm_genlist_item_class_new ( ) ;
itc - > item_style = " default " ;
2014-12-13 11:06:44 -08:00
itc - > func . text_get = gl_focus_top_items_text_get ;
2014-09-07 03:43:24 -07:00
itc - > func . content_get = NULL ;
itc - > func . state_get = NULL ;
itc - > func . del = NULL ;
2014-12-13 11:06:44 -08:00
itc1 = elm_genlist_item_class_new ( ) ;
itc1 - > item_style = " default " ;
itc1 - > func . text_get = gl_focus_text_get ;
itc1 - > func . content_get = gl_focus_content_get ;
itc1 - > func . state_get = NULL ;
itc1 - > func . del = NULL ;
itc2 = elm_genlist_item_class_new ( ) ;
itc2 - > item_style = " tree_effect " ;
itc2 - > func . text_get = gl_focus_text_get ;
itc2 - > func . content_get = gl_focus_content_get ;
itc2 - > func . state_get = NULL ;
itc2 - > func . del = NULL ;
it_1 = elm_genlist_item_append ( gl , itc , " do_nothing " , NULL , ELM_GENLIST_ITEM_NONE ,
NULL , NULL ) ;
it_2 = elm_genlist_item_append ( gl , itc , " do_nothing " , NULL , ELM_GENLIST_ITEM_NONE ,
NULL , NULL ) ;
2014-09-07 03:43:24 -07:00
elm_genlist_item_append ( gl , itc , " popup_sel " , NULL , ELM_GENLIST_ITEM_NONE ,
_gl_focus_0_item_sel_cb , NULL ) ;
elm_genlist_item_append ( gl , itc , " popup_mouse_down " , NULL , ELM_GENLIST_ITEM_NONE ,
NULL , NULL ) ;
2016-01-24 06:44:48 -08:00
elm_genlist_item_append ( gl , itc , " popup_activate " , NULL , ELM_GENLIST_ITEM_NONE ,
NULL , NULL ) ;
2014-09-07 03:43:24 -07:00
2014-12-13 11:06:44 -08:00
it = elm_genlist_item_append ( gl , itc , " clear_on_focus " , NULL , ELM_GENLIST_ITEM_NONE ,
NULL , NULL ) ;
evas_object_smart_callback_add ( gl , " item,focused " , _gl_focus_item_focus_cb , it ) ;
evas_object_smart_callback_add ( gl , " item,unfocused " , _gl_focus_item_unfocus_cb , NULL ) ;
2014-09-07 01:49:04 -07:00
for ( lhand = 0 ; lhand < _gl_focus_objects ; lhand + + )
{
for ( rhand = 0 ; rhand < _gl_focus_objects ; rhand + + )
{
unsigned digit1 = lhand * 10 + rhand ;
2014-12-13 19:07:06 -08:00
elm_genlist_item_append ( gl , itc1 , ( void * ) ( uintptr_t ) digit1 ,
NULL , ELM_GENLIST_ITEM_NONE , NULL , NULL ) ;
2014-09-07 01:49:04 -07:00
unsigned digit2 = ( _gl_focus_objects - lhand - 1 ) * 10 +
( _gl_focus_objects - rhand - 1 ) ;
2014-12-13 11:06:44 -08:00
it = elm_genlist_item_append ( gl , itc1 , ( void * ) ( uintptr_t ) digit2 ,
2014-09-07 01:49:04 -07:00
NULL , ELM_GENLIST_ITEM_NONE , NULL , NULL ) ;
if ( rhand = = 4 )
elm_object_item_disabled_set ( it , EINA_TRUE ) ;
if ( rhand = = ( _gl_focus_objects - 1 ) )
2014-12-13 11:06:44 -08:00
elm_genlist_item_append ( gl , itc2 , ( void * ) ( uintptr_t ) digit1 ,
2014-09-07 01:49:04 -07:00
NULL , ELM_GENLIST_ITEM_TREE , NULL , NULL ) ;
}
}
2014-12-13 11:06:44 -08:00
elm_genlist_item_class_free ( itc ) ;
elm_genlist_item_class_free ( itc1 ) ;
elm_genlist_item_class_free ( itc2 ) ;
2014-09-07 01:49:04 -07:00
// Options
2014-12-13 11:06:44 -08:00
_test_genlist_focus_option_panel_create ( win , bx , gl , it_1 , it_2 ) ;
2014-03-22 08:38:01 -07:00
evas_object_resize ( win , 420 , 600 ) ;
2014-02-04 03:29:29 -08:00
evas_object_show ( win ) ;
}
2015-09-23 04:50:05 -07:00
char * genlist_demo_names [ ] = {
" Aaliyah " , " Aamir " , " Aaralyn " , " Aaron " , " Abagail " ,
" Babitha " , " Bahuratna " , " Bandana " , " Bulbul " , " Cade " , " Caldwell " ,
" Chandan " , " Caster " , " Dagan " , " Daulat " , " Dag " , " Earl " , " Ebenzer " ,
" Ellison " , " Elizabeth " , " Filbert " , " Fitzpatrick " , " Florian " , " Fulton " ,
" Frazer " , " Gabriel " , " Gage " , " Galen " , " Garland " , " Gauhar " , " Hadden " ,
" Hafiz " , " Hakon " , " Haleem " , " Hank " , " Hanuman " , " Jabali " , " Jaimini " ,
" Jayadev " , " Jake " , " Jayatsena " , " Jonathan " , " Kamaal " , " Jeirk " ,
" Jasper " , " Jack " , " Mac " , " Macy " , " Marlon " , " Milson " ,
NULL
} ;
static char *
glf_text_get ( void * data , Evas_Object * obj EINA_UNUSED , const char * part EINA_UNUSED )
{
char buf [ 256 ] ;
snprintf ( buf , sizeof ( buf ) , " %s " , genlist_demo_names [ ( ( int ) ( uintptr_t ) data ) % 50 ] ) ;
return strdup ( buf ) ;
}
Eina_Bool
gl_filter_get ( void * data , Evas_Object * obj EINA_UNUSED , void * key )
{
if ( ! strlen ( ( char * ) key ) ) return EINA_TRUE ;
if ( strcasestr ( genlist_demo_names [ ( ( int ) ( uintptr_t ) data ) % 50 ] , ( char * ) key ) )
return EINA_TRUE ;
// Default case should return false (item fails filter hence will be hidden)
return EINA_FALSE ;
}
static void
2015-09-23 09:51:39 -07:00
_gl_filter_finished_cb ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
2015-09-23 04:50:05 -07:00
{
printf ( " Filter finished \n " ) ;
}
void
_entry_change_cb ( void * data , Evas_Object * obj , void * event EINA_UNUSED )
{
api_data * api = ( api_data * ) data ;
char buf [ 100 ] ;
unsigned int count = 0 ;
Elm_Object_Item * item ;
if ( api - > filter_data ) free ( api - > filter_data ) ;
sprintf ( buf , " %s " , elm_object_text_get ( obj ) ) ;
api - > filter_data = strdup ( buf ) ;
elm_genlist_filter_set ( api - > gl , ( void * ) ( api - > filter_data ) ) ;
2015-10-01 11:56:16 -07:00
if ( ! strlen ( buf ) )
2015-09-23 04:50:05 -07:00
{
printf ( " Input data string empty; returning \n " ) ;
return ;
}
2015-11-09 16:03:05 -08:00
item = elm_genlist_first_item_get ( api - > gl ) ;
if ( ! item )
{
printf ( " No matches for the key %s \n " , buf ) ;
return ;
}
while ( item )
{
+ + count ;
item = elm_genlist_item_next_get ( item ) ;
}
2015-09-23 04:50:05 -07:00
printf ( " Number of matches for %s is %d \n " , buf , count ) ;
}
void
test_genlist_filter ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Evas_Object * win , * bx , * bx2 , * entry , * gl ;
Elm_Genlist_Item_Class * itc = NULL ;
int i ;
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
win = elm_win_util_standard_add ( " genlist-filter " , " Genlist filter " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_FREE , _cleanup_cb , api ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_DEL ,
_gl_focus_win_del_cb , NULL ) ;
elm_win_focus_highlight_enabled_set ( win , EINA_TRUE ) ;
elm_win_focus_highlight_animate_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 ) ;
entry = elm_entry_add ( bx ) ;
elm_entry_single_line_set ( entry , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( entry , EVAS_HINT_EXPAND , 0.0 ) ;
evas_object_size_hint_align_set ( entry , EVAS_HINT_FILL , 0.0 ) ;
elm_object_part_text_set ( entry , " guide " , " Search. " ) ;
elm_box_pack_end ( bx , entry ) ;
evas_object_show ( entry ) ;
bx2 = elm_box_add ( bx ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
gl = elm_genlist_add ( bx ) ;
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_genlist_select_mode_set ( gl , ELM_OBJECT_SELECT_MODE_ALWAYS ) ;
elm_genlist_mode_set ( gl , ELM_LIST_COMPRESS ) ;
elm_genlist_homogeneous_set ( gl , EINA_TRUE ) ;
elm_box_pack_end ( bx2 , gl ) ;
api - > gl = gl ;
evas_object_show ( gl ) ;
evas_object_smart_callback_add ( gl , " selected " , _gl_focus_item_cb , " selected " ) ;
evas_object_smart_callback_add ( gl , " unselected " , _gl_focus_item_cb , " unselected " ) ;
evas_object_smart_callback_add ( gl , " activated " , _gl_focus_item_cb , " activated " ) ;
evas_object_smart_callback_add ( gl , " highlighted " , _gl_focus_item_cb , " highlighted " ) ;
evas_object_smart_callback_add ( gl , " unhighlighted " , _gl_focus_item_cb , " unhighlighted " ) ;
evas_object_smart_callback_add ( gl , " filter,done " , _gl_filter_finished_cb , NULL ) ;
evas_object_event_callback_add ( gl , EVAS_CALLBACK_KEY_DOWN , _gl_focus_key_down_cb , NULL ) ;
itc = elm_genlist_item_class_new ( ) ;
itc - > item_style = " default " ;
itc - > func . text_get = glf_text_get ;
itc - > func . content_get = NULL ;
itc - > func . filter_get = gl_filter_get ;
itc - > func . state_get = NULL ;
itc - > func . del = NULL ;
for ( i = 0 ; i < 500 ; i + + )
elm_genlist_item_append ( gl , itc ,
( void * ) ( long ) i , NULL ,
ELM_GENLIST_ITEM_NONE ,
NULL , NULL ) ;
evas_object_resize ( win , 420 , 600 ) ;
evas_object_show ( win ) ;
elm_object_focus_set ( entry , EINA_TRUE ) ;
evas_object_smart_callback_add ( entry , " changed,user " , _entry_change_cb , api ) ;
}
2016-01-04 14:05:29 -08:00
static void
_rd_changed_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
{
api_data * ad = data ;
ad - > scrollto = elm_radio_state_value_get ( obj ) ;
}
static Evas_Object *
_scrollto_mode_frame_new ( Evas_Object * win , void * data )
{
Evas_Object * fr , * bx , * rd , * rdg ;
api_data * sd = data ;
fr = elm_frame_add ( win ) ;
elm_object_text_set ( fr , " Scrollto Mode " ) ;
evas_object_show ( fr ) ;
bx = elm_box_add ( win ) ;
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 , " SCROLLTO_NONE " ) ;
evas_object_smart_callback_add ( rd , " changed " , _rd_changed_cb , sd ) ;
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_object_text_set ( rd , " SCROLLTO_IN " ) ;
elm_radio_group_add ( rd , rdg ) ;
evas_object_smart_callback_add ( rd , " changed " , _rd_changed_cb , sd ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
rd = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd , 2 ) ;
elm_object_text_set ( rd , " SCROLLTO_TOP " ) ;
elm_radio_group_add ( rd , rdg ) ;
evas_object_smart_callback_add ( rd , " changed " , _rd_changed_cb , sd ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
rd = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd , 4 ) ;
elm_object_text_set ( rd , " SCROLLTO_MIDDLE " ) ;
elm_radio_group_add ( rd , rdg ) ;
evas_object_smart_callback_add ( rd , " changed " , _rd_changed_cb , sd ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
rd = elm_radio_add ( win ) ;
elm_radio_state_value_set ( rd , 8 ) ;
elm_object_text_set ( rd , " SCROLLTO_BOTTOM " ) ;
elm_radio_group_add ( rd , rdg ) ;
evas_object_smart_callback_add ( rd , " changed " , _rd_changed_cb , sd ) ;
evas_object_show ( rd ) ;
elm_box_pack_end ( bx , rd ) ;
return fr ;
}
void
_scrollto_item_show ( void * data ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
api_data * api = data ;
Elm_Object_Item * it = elm_genlist_selected_item_get ( api - > gl ) ;
elm_genlist_item_show ( it , api - > scrollto ) ;
}
void
_scrollto_item_bring ( void * data ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
api_data * api = data ;
Elm_Object_Item * it = elm_genlist_selected_item_get ( api - > gl ) ;
elm_genlist_item_bring_in ( it , api - > scrollto ) ;
}
void
test_genlist_show_bring ( void * data EINA_UNUSED ,
Evas_Object * obj EINA_UNUSED ,
void * event_info EINA_UNUSED )
{
Evas_Object * win , * gl , * bt_show , * bt_bring , * bx , * bxx , * fr ;
Elm_Object_Item * gli ;
int i , max ;
api_data * api = calloc ( 1 , sizeof ( api_data ) ) ;
win = elm_win_util_standard_add ( " genlist " , " Genlist Item Show/Bring " ) ;
elm_win_autodel_set ( win , EINA_TRUE ) ;
evas_object_event_callback_add ( win , EVAS_CALLBACK_DEL , _cleanup_cb , api ) ;
bxx = elm_box_add ( win ) ;
evas_object_size_hint_weight_set ( bxx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
elm_win_resize_object_add ( win , bxx ) ;
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 ) ;
evas_object_show ( bx ) ;
elm_box_pack_end ( bxx , bx ) ;
gl = elm_genlist_add ( win ) ;
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 ) ;
api - > gl = gl ;
api - > itc1 = elm_genlist_item_class_new ( ) ;
api - > itc1 - > item_style = " default " ;
api - > itc1 - > func . text_get = gl_text_get1 ;
api - > itc1 - > func . content_get = gl_content_get ;
api - > itc1 - > func . state_get = NULL ;
api - > itc1 - > func . del = NULL ;
bt_show = elm_button_add ( win ) ;
elm_object_text_set ( bt_show , " Show " ) ;
evas_object_smart_callback_add ( bt_show , " clicked " , _scrollto_item_show , api ) ;
evas_object_show ( bt_show ) ;
elm_box_pack_end ( bx , bt_show ) ;
bt_bring = elm_button_add ( win ) ;
elm_object_text_set ( bt_bring , " Bring " ) ;
evas_object_smart_callback_add ( bt_bring , " clicked " , _scrollto_item_bring , api ) ;
evas_object_show ( bt_bring ) ;
elm_box_pack_end ( bx , bt_bring ) ;
fr = _scrollto_mode_frame_new ( win , api ) ;
elm_box_pack_end ( bx , fr ) ;
max = 2000 ;
for ( i = 0 ; i < max ; i + + )
elm_genlist_item_append ( gl , api - > itc1 , ( void * ) ( uintptr_t ) i , NULL , ELM_GENLIST_ITEM_NONE , NULL , NULL ) ;
elm_genlist_item_class_free ( api - > itc1 ) ;
gli = elm_genlist_nth_item_get ( gl , 1340 ) ;
elm_genlist_item_selected_set ( gli , EINA_TRUE ) ;
elm_genlist_item_show ( gli , ELM_GENLIST_ITEM_SCROLLTO_MIDDLE ) ;
evas_object_resize ( win , 480 , 400 ) ;
explode_win_enable ( win ) ;
evas_object_show ( win ) ;
}