static void set_api_state(api_data *api) { Evas_Object *grid = api->grid; /* use elm_box_children_get() to get list of children */ switch(api->state) { /* Put all api-changes under switch */ case GRID_ALIGN_SET: /* 0 */ elm_gengrid_align_set(grid, 0.2, 0.8); break; case GRID_BRING_IN: /* 1 */ elm_gengrid_item_bring_in(elm_gengrid_first_item_get(grid), ELM_GENGRID_ITEM_SCROLLTO_IN); break; case GRID_NO_SELECT_MODE: /* 2 */ elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_NONE); break; case GRID_NO_BOUNCE: /* 3 */ elm_scroller_bounce_set(grid, EINA_TRUE, EINA_FALSE); break; case GRID_PAGE_RELATIVE: /* 4 */ elm_scroller_bounce_set(grid, EINA_TRUE, EINA_TRUE); elm_scroller_page_relative_set(grid, 0.5, 0.5); break; case GRID_PAGE_SIZE: /* 5 */ elm_scroller_page_size_set(grid, 50, 25); break; case GRID_TOOLTIP_SET_TEXT: /* 6 */ { Elm_Object_Item *item = elm_gengrid_first_item_get(grid); elm_gengrid_item_tooltip_text_set(item, "This is the first item"); } break; case GRID_TOOLTIP_UNSET: /* 7 */ { Elm_Object_Item *item = elm_gengrid_first_item_get(grid); elm_gengrid_item_tooltip_unset(item); } break; case API_STATE_LAST: break; default: return; } }
static void _v_align_change_cb(void *data, Evas_Object *obj, void *event_info) { double h_align; double val = elm_slider_value_get(obj); elm_gengrid_align_get(data, &h_align, NULL); fprintf(stdout, "Setting vertical alignment to %f\n", val); elm_gengrid_align_set(data, h_align, val); }
/* items grid horizontal alignment change */ static void _h_align_change_cb(void *data, Evas_Object *obj, void *event_info) { double v_align; double val = elm_slider_value_get(obj); elm_gengrid_align_get(data, NULL, &v_align); fprintf(stdout, "Setting horizontal alignment to %f\n", val); elm_gengrid_align_set(data, val, v_align); }
EAPI int elm_main(int argc, char **argv) { Evas_Object *window; Evas_Object *layout; Evas_Object *edje; Evas_Object *grid; Evas_Object *list; char path[PATH_MAX]; Eina_Bool quit_option = EINA_FALSE; int args; Ecore_Getopt_Value values[] = { ECORE_GETOPT_VALUE_BOOL(crazy_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_NONE }; _log_domain = eina_log_domain_register("Excessive", NULL); if (_log_domain < 0) { EINA_LOG_CRIT("could not create log domain 'Excessive'."); return -1; } args = ecore_getopt_parse(&options, values, argc, argv); if (args < 0) { ERR("could not parse command line options."); return -1; } if (quit_option) return 0; excessive_browse_init(); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); elm_theme_extension_add(NULL, PACKAGE_DATA_DIR "/themes/theme.edj"); elm_theme_overlay_add(NULL, PACKAGE_DATA_DIR "/themes/theme.edj"); elm_need_efreet(); elm_need_ethumb(); window = elm_win_add(NULL, PACKAGE_NAME, ELM_WIN_BASIC); if (!window) { ERR("could'nt create window."); return -1; } /* FIXME: later remember last size */ elm_win_alpha_set(window, 1); evas_object_resize(window, 800, 600); elm_win_title_set(window, PACKAGE_STRING); elm_win_autodel_set(window, 1); layout = elm_layout_add(window); if (!layout) { ERR("couldn't create layout object."); return -1; } evas_object_size_hint_align_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_win_resize_object_add(window, layout); if (!elm_layout_theme_set(layout, "layout", "application", "content")) { ERR("could not load style 'content' from theme"); return -1; } evas_object_show(layout); evas_object_show(window); edje = elm_layout_edje_get(layout); grid = edje_object_part_external_object_get(edje, "grid"); evas_object_data_set(grid, "excessive/layout", layout); evas_object_data_set(layout, "excessive/win", window); evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_gengrid_bounce_set(grid, EINA_FALSE, EINA_TRUE); elm_gengrid_align_set(grid, 0.5, 0.5); elm_gengrid_item_size_set(grid, 128, 128); excessive_browse_load(layout); list = edje_object_part_external_object_get(edje, "shortcut"); excessive_shortcut_init(list, grid); if (argc < args + 1) { getcwd(path, PATH_MAX); excessive_browse_directory(grid, path); } else { excessive_browse_directory(grid, argv[args]); } elm_run(); excessive_shortcut_shutdown(); excessive_browse_shutdown(); return 0; }