X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Flib%2Felm_config.c;h=f8665ff7e1364e1cc1bea06c8aa4759fe4171dbb;hb=9af0508cd5da5cf1d344dd76b461fd73415305a3;hp=3e273cc990720386d300c27c24edfafe8b4099fb;hpb=f725ec67aebf756a5bf4fb0dac161db4b236bb72;p=framework%2Fuifw%2Felementary.git diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c index 3e273cc..f8665ff 100644 --- a/src/lib/elm_config.c +++ b/src/lib/elm_config.c @@ -15,6 +15,9 @@ Elm_Config *_elm_config = NULL; char *_elm_profile = NULL; static Eet_Data_Descriptor *_config_edd = NULL; static Eet_Data_Descriptor *_config_font_overlay_edd = NULL; +static Eet_Data_Descriptor *_config_color_edd = NULL; +static Eet_Data_Descriptor *_config_color_palette_edd = NULL; +const char *_elm_preferred_engine = NULL; static Ecore_Poller *_elm_cache_flush_poller = NULL; @@ -258,6 +261,33 @@ _desc_init(void) eet_data_descriptor_free(_config_edd); return; } + + memset(&eddc, 0, sizeof(eddc)); /* just in case... */ + EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_Color_RGBA); + eddc.func.str_direct_alloc = NULL; + eddc.func.str_direct_free = NULL; + + _config_color_edd = eet_data_descriptor_stream_new(&eddc); + if (!_config_color_edd) + { + printf("EEEK! eet_data_descriptor_stream_new() failed\n"); + eet_data_descriptor_free(_config_edd); + return; + } + + memset(&eddc, 0, sizeof(eddc)); /* just in case... */ + EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_Custom_Palette); + eddc.func.str_direct_alloc = NULL; + eddc.func.str_direct_free = NULL; + + _config_color_palette_edd = eet_data_descriptor_stream_new(&eddc); + if (!_config_color_palette_edd) + { + printf("EEEK! eet_data_descriptor_stream_new() failed\n"); + eet_data_descriptor_free(_config_edd); + return; + } + #define T_INT EET_T_INT #define T_DOUBLE EET_T_DOUBLE #define T_STRING EET_T_STRING @@ -271,6 +301,22 @@ _desc_init(void) #undef T #undef D +#define T Elm_Color_RGBA +#define D _config_color_edd + ELM_CONFIG_VAL(D, T, r, EET_T_UINT); + ELM_CONFIG_VAL(D, T, g, EET_T_UINT); + ELM_CONFIG_VAL(D, T, b, EET_T_UINT); + ELM_CONFIG_VAL(D, T, a, EET_T_UINT); +#undef T +#undef D + +#define T Elm_Custom_Palette +#define D _config_color_palette_edd + ELM_CONFIG_VAL(D, T, palette_name, EET_T_STRING); + ELM_CONFIG_LIST(D, T, color_list, _config_color_edd); +#undef T +#undef D + #define T Elm_Config #define D _config_edd ELM_CONFIG_VAL(D, T, config_version, T_INT); @@ -333,6 +379,12 @@ _desc_init(void) ELM_CONFIG_VAL(D, T, glayer_long_tap_start_timeout, T_DOUBLE); ELM_CONFIG_VAL(D, T, access_mode, T_INT); ELM_CONFIG_VAL(D, T, glayer_continues_enable, T_UCHAR); + ELM_CONFIG_VAL(D, T, week_start, T_INT); + ELM_CONFIG_VAL(D, T, weekend_start, T_INT); + ELM_CONFIG_VAL(D, T, weekend_len, T_INT); + ELM_CONFIG_VAL(D, T, year_min, T_INT); + ELM_CONFIG_VAL(D, T, year_max, T_INT); + ELM_CONFIG_LIST(D, T, color_palette, _config_color_palette_edd); #undef T #undef D #undef T_INT @@ -355,6 +407,18 @@ _desc_shutdown(void) eet_data_descriptor_free(_config_font_overlay_edd); _config_font_overlay_edd = NULL; } + + if (_config_color_edd) + { + eet_data_descriptor_free(_config_color_edd); + _config_color_edd = NULL; + } + + if (_config_color_palette_edd) + { + eet_data_descriptor_free(_config_color_palette_edd); + _config_color_palette_edd = NULL; + } } static int @@ -537,6 +601,7 @@ _elm_config_text_classes_get(void) { Elm_Text_Class *tc; tc = malloc(sizeof(*tc)); + if (!tc) continue; *tc = _elm_text_classes[i]; @@ -556,9 +621,66 @@ _elm_config_text_classes_free(Eina_List *l) } Eina_List * +_elm_config_color_list_get(const char *palette_name) +{ + Eina_List *plist; + Elm_Custom_Palette *cpalette; + EINA_LIST_FOREACH(_elm_config->color_palette, plist, cpalette) + { + if (strcmp(cpalette->palette_name, palette_name)) + continue; + return cpalette->color_list; + } + return NULL; +} + +void +_elm_config_color_set(const char *palette_name, + int r, + int g, + int b, + int a) +{ + Eina_List *plist; + Elm_Custom_Palette *cpalette; + Elm_Color_RGBA *color; + EINA_LIST_FOREACH(_elm_config->color_palette, plist, cpalette) + { + if (strcmp(cpalette->palette_name, palette_name)) + continue; + + color = calloc(1, sizeof(Elm_Color_RGBA)); + color->r = r; + color->g = g; + color->b = b; + color->a = a; + cpalette->color_list = eina_list_prepend(cpalette->color_list, + color); + } +} + +void +_elm_config_colors_free(const char *palette_name) +{ + Eina_List *plist; + Elm_Custom_Palette *cpalette; + Elm_Color_RGBA *color; + EINA_LIST_FOREACH(_elm_config->color_palette, plist, cpalette) + { + if (strcmp(cpalette->palette_name, palette_name)) + continue; + + EINA_LIST_FREE(cpalette->color_list, color) + { + free(color); + } + } +} + +Eina_List * _elm_config_profiles_list(void) { - const Eina_File_Direct_Info *info; + Eina_File_Direct_Info *info; Eina_List *flist = NULL; Eina_Iterator *file_it; char buf[PATH_MAX]; @@ -567,7 +689,7 @@ _elm_config_profiles_list(void) len = _elm_user_dir_snprintf(buf, sizeof(buf), "config"); - file_it = eina_file_direct_ls(buf); + file_it = eina_file_stat_ls(buf); if (!file_it) goto sys; @@ -703,6 +825,8 @@ _config_free(void) { Elm_Font_Overlay *fo; const char *fontdir; + Elm_Custom_Palette *palette; + Elm_Color_RGBA *color; if (!_elm_config) return; EINA_LIST_FREE(_elm_config->font_dirs, fontdir) @@ -716,6 +840,12 @@ _config_free(void) if (fo->font) eina_stringshare_del(fo->font); free(fo); } + EINA_LIST_FREE(_elm_config->color_palette, palette) + { + if (palette->palette_name) eina_stringshare_del(palette->palette_name); + EINA_LIST_FREE(palette->color_list, color) free(color); + free(palette); + } if (_elm_config->theme) eina_stringshare_del(_elm_config->theme); if (_elm_config->modules) eina_stringshare_del(_elm_config->modules); free(_elm_config); @@ -742,7 +872,7 @@ _config_sub_apply(void) static Eina_Bool _elm_cache_flush_cb(void *data __UNUSED__) { - elm_all_flush(); + elm_cache_all_flush(); return ECORE_CALLBACK_RENEW; } @@ -755,7 +885,7 @@ _elm_recache(void) Eina_List *l; Evas_Object *win; - elm_all_flush(); + elm_cache_all_flush(); EINA_LIST_FOREACH(_elm_win_list, l, win) { @@ -841,8 +971,8 @@ _config_load(void) * profile. Fallback to default before moving on */ // config load fail - defaults - /* XXX: do these make sense? Only if it's valid to install the lib - * without the config, but do we want that? */ + // why are these here? well if they are, it means you can make a gui + // config recovery app i guess... _elm_config = ELM_NEW(Elm_Config); _elm_config->config_version = ELM_CONFIG_VERSION; _elm_config->engine = eina_stringshare_add("software_x11"); @@ -903,6 +1033,12 @@ _config_load(void) _elm_config->glayer_flick_time_limit_ms = 120; /* ms to finish flick */ _elm_config->glayer_long_tap_start_timeout = 1.2; /* 1.2 second to start long-tap */ _elm_config->glayer_continues_enable = EINA_TRUE; /* Continue gestures default */ + _elm_config->week_start = 1; /* monday */ + _elm_config->weekend_start = 6; /* saturday */ + _elm_config->weekend_len = 2; + _elm_config->year_min = 2; + _elm_config->year_max = 137; + _elm_config->color_palette = NULL; } static const char * @@ -1033,7 +1169,7 @@ _elm_config_save(void) ok = ecore_file_mkpath(buf); if (!ok) { - ERR("Problem acessing Elementary's user configuration directory: %s", + ERR("Problem accessing Elementary's user configuration directory: %s", buf); return EINA_FALSE; } @@ -1102,8 +1238,8 @@ _config_update(void) #define IFCFG(v) if ((_elm_config->config_version & 0xffff) < (v)) { #define IFCFGELSE } else { #define IFCFGEND } -#define COPYVAL(x) do {_elm_config->x = tcfg->x; } while(0) -#define COPYPTR(x) do {_elm_config->x = tcfg->x; tcfg->x = NULL; } while(0) +#define COPYVAL(x) do {_elm_config->x = tcfg->x; } while (0) +#define COPYPTR(x) do {_elm_config->x = tcfg->x; tcfg->x = NULL; } while (0) #define COPYSTR(x) COPYPTR(x) /* we also need to update for property changes in the root window @@ -1205,6 +1341,8 @@ _env_get(void) eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_SHM); else if ((!strcasecmp(s, "wayland_egl"))) eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_EGL); + else + ERR("Unknown engine '%s'.", s); } s = getenv("ELM_VSYNC"); @@ -1216,23 +1354,23 @@ _env_get(void) if (s) _elm_config->thumbscroll_threshold = atoi(s); // FIXME: floatformat locale issues here 1.0 vs 1,0 - should just be 1.0 s = getenv("ELM_THUMBSCROLL_MOMENTUM_THRESHOLD"); - if (s) _elm_config->thumbscroll_momentum_threshold = atof(s); + if (s) _elm_config->thumbscroll_momentum_threshold = _elm_atof(s); s = getenv("ELM_THUMBSCROLL_FRICTION"); - if (s) _elm_config->thumbscroll_friction = atof(s); + if (s) _elm_config->thumbscroll_friction = _elm_atof(s); s = getenv("ELM_THUMBSCROLL_BOUNCE_ENABLE"); if (s) _elm_config->thumbscroll_bounce_enable = !!atoi(s); s = getenv("ELM_THUMBSCROLL_BOUNCE_FRICTION"); - if (s) _elm_config->thumbscroll_bounce_friction = atof(s); + if (s) _elm_config->thumbscroll_bounce_friction = _elm_atof(s); s = getenv("ELM_PAGE_SCROLL_FRICTION"); - if (s) _elm_config->page_scroll_friction = atof(s); + if (s) _elm_config->page_scroll_friction = _elm_atof(s); s = getenv("ELM_BRING_IN_SCROLL_FRICTION"); - if (s) _elm_config->bring_in_scroll_friction = atof(s); + if (s) _elm_config->bring_in_scroll_friction = _elm_atof(s); s = getenv("ELM_ZOOM_FRICTION"); - if (s) _elm_config->zoom_friction = atof(s); + if (s) _elm_config->zoom_friction = _elm_atof(s); s = getenv("ELM_THUMBSCROLL_BORDER_FRICTION"); if (s) { - friction = atof(s); + friction = _elm_atof(s); if (friction < 0.0) friction = 0.0; @@ -1244,7 +1382,7 @@ _env_get(void) s = getenv("ELM_THUMBSCROLL_SENSITIVITY_FRICTION"); if (s) { - friction = atof(s); + friction = _elm_atof(s); if (friction < 0.1) friction = 0.1; @@ -1254,13 +1392,13 @@ _env_get(void) _elm_config->thumbscroll_sensitivity_friction = friction; } s = getenv("ELM_SCROLL_SMOOTH_AMOUNT"); - if (s) _elm_config->scroll_smooth_amount = atof(s); + if (s) _elm_config->scroll_smooth_amount = _elm_atof(s); s = getenv("ELM_SCROLL_SMOOTH_HISTORY_WEIGHT"); - if (s) _elm_config->scroll_smooth_history_weight = atof(s); + if (s) _elm_config->scroll_smooth_history_weight = _elm_atof(s); s = getenv("ELM_SCROLL_SMOOTH_FUTURE_TIME"); - if (s) _elm_config->scroll_smooth_future_time = atof(s); + if (s) _elm_config->scroll_smooth_future_time = _elm_atof(s); s = getenv("ELM_SCROLL_SMOOTH_TIME_WINDOW"); - if (s) _elm_config->scroll_smooth_time_window = atof(s); + if (s) _elm_config->scroll_smooth_time_window = _elm_atof(s); s = getenv("ELM_THEME"); if (s) eina_stringshare_replace(&_elm_config->theme, s); @@ -1319,7 +1457,7 @@ _env_get(void) if (s) _elm_config->font_cache = atoi(s); s = getenv("ELM_SCALE"); - if (s) _elm_config->scale = atof(s); + if (s) _elm_config->scale = _elm_atof(s); s = getenv("ELM_FINGER_SIZE"); if (s) _elm_config->finger_size = atoi(s); @@ -1330,13 +1468,13 @@ _env_get(void) s = getenv("ELM_PASSWORD_SHOW_LAST_TIMEOUT"); if (s) { - double pw_show_last_timeout = atof(s); + double pw_show_last_timeout = _elm_atof(s); if (pw_show_last_timeout >= 0.0) _elm_config->password_show_last_timeout = pw_show_last_timeout; } s = getenv("ELM_FPS"); - if (s) _elm_config->fps = atof(s); + if (s) _elm_config->fps = _elm_atof(s); if (_elm_config->fps < 1.0) _elm_config->fps = 1.0; s = getenv("ELM_MODULES"); @@ -1350,7 +1488,7 @@ _env_get(void) s = getenv("ELM_TOOLTIP_DELAY"); if (s) { - double delay = atof(s); + double delay = _elm_atof(s); if (delay >= 0.0) _elm_config->tooltip_delay = delay; } @@ -1377,7 +1515,7 @@ _env_get(void) if (s) _elm_config->icon_size = atoi(s); s = getenv("ELM_LONGPRESS_TIMEOUT"); - if (s) _elm_config->longpress_timeout = atof(s); + if (s) _elm_config->longpress_timeout = _elm_atof(s); if (_elm_config->longpress_timeout < 0.0) _elm_config->longpress_timeout = 0.0; @@ -1391,18 +1529,479 @@ _env_get(void) } EAPI Eina_Bool -elm_mirrored_get(void) +elm_config_mirrored_get(void) { return _elm_config->is_mirrored; } EAPI void -elm_mirrored_set(Eina_Bool mirrored) +elm_config_mirrored_set(Eina_Bool mirrored) { _elm_config->is_mirrored = mirrored; _elm_rescale(); } +EAPI Eina_Bool +elm_config_cursor_engine_only_get(void) +{ + return _elm_config->cursor_engine_only; +} + +EAPI void +elm_config_cursor_engine_only_set(Eina_Bool engine_only) +{ + engine_only = !!engine_only; + _elm_config->cursor_engine_only = engine_only; +} + +EAPI double +elm_config_tooltip_delay_get(void) +{ + return _elm_config->tooltip_delay; +} + +EAPI void +elm_config_tooltip_delay_set(double delay) +{ + if (delay < 0.0) return; + _elm_config->tooltip_delay = delay; +} + +EAPI double +elm_config_scale_get(void) +{ + return _elm_config->scale; +} + +EAPI void +elm_config_scale_set(double scale) +{ + if (_elm_config->scale == scale) return; + _elm_config->scale = scale; + _elm_rescale(); +} + +EAPI Eina_Bool +elm_config_password_show_last_get(void) +{ + return _elm_config->password_show_last; +} + +EAPI void +elm_config_password_show_last_set(Eina_Bool password_show_last) +{ + if (_elm_config->password_show_last == password_show_last) return; + _elm_config->password_show_last = password_show_last; + edje_password_show_last_set(_elm_config->password_show_last); +} + +EAPI double +elm_config_password_show_last_timeout_get(void) +{ + return _elm_config->password_show_last_timeout; +} + +EAPI void +elm_config_password_show_last_timeout_set(double password_show_last_timeout) +{ + if (_elm_config->password_show_last_timeout == password_show_last_timeout) return; + _elm_config->password_show_last_timeout = password_show_last_timeout; + edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout); +} + +EAPI Eina_Bool +elm_config_save(void) +{ + return _elm_config_save(); +} + +EAPI void +elm_config_reload(void) +{ + _elm_config_reload(); +} + +EAPI const char * +elm_config_profile_get(void) +{ + return _elm_config_current_profile_get(); +} + +EAPI const char * +elm_config_profile_dir_get(const char *profile, + Eina_Bool is_user) +{ + return _elm_config_profile_dir_get(profile, is_user); +} + +EAPI void +elm_config_profile_dir_free(const char *p_dir) +{ + free((void *)p_dir); +} + +EAPI Eina_List * +elm_config_profile_list_get(void) +{ + return _elm_config_profiles_list(); +} + +EAPI void +elm_config_profile_list_free(Eina_List *l) +{ + const char *dir; + + EINA_LIST_FREE(l, dir) + eina_stringshare_del(dir); +} + +EAPI void +elm_config_profile_set(const char *profile) +{ + EINA_SAFETY_ON_NULL_RETURN(profile); + _elm_config_profile_set(profile); +} + +EAPI const char * +elm_config_engine_get(void) +{ + return _elm_config->engine; +} + +EAPI void +elm_config_engine_set(const char *engine) +{ + EINA_SAFETY_ON_NULL_RETURN(engine); + + _elm_config_engine_set(engine); +} + +EAPI Eina_List * +elm_config_text_classes_list_get(void) +{ + return _elm_config_text_classes_get(); +} + +EAPI void +elm_config_text_classes_list_free(Eina_List *list) +{ + _elm_config_text_classes_free(list); +} + +EAPI const Eina_List * +elm_config_font_overlay_list_get(void) +{ + return _elm_config_font_overlays_list(); +} + +EAPI void +elm_config_font_overlay_set(const char *text_class, + const char *font, + Evas_Font_Size size) +{ + EINA_SAFETY_ON_NULL_RETURN(text_class); + _elm_config_font_overlay_set(text_class, font, size); +} + +EAPI void +elm_config_font_overlay_unset(const char *text_class) +{ + EINA_SAFETY_ON_NULL_RETURN(text_class); + _elm_config_font_overlay_remove(text_class); +} + +EAPI void +elm_config_font_overlay_apply(void) +{ + _elm_config_font_overlay_apply(); +} + +EAPI Evas_Coord +elm_config_finger_size_get(void) +{ + return _elm_config->finger_size; +} + +EAPI void +elm_config_finger_size_set(Evas_Coord size) +{ + if (_elm_config->finger_size == size) return; + _elm_config->finger_size = size; + _elm_rescale(); +} + +EAPI int +elm_config_cache_flush_interval_get(void) +{ + return _elm_config->cache_flush_poll_interval; +} + +EAPI void +elm_config_cache_flush_interval_set(int size) +{ + if (_elm_config->cache_flush_poll_interval == size) return; + _elm_config->cache_flush_poll_interval = size; + + _elm_recache(); +} + +EAPI Eina_Bool +elm_config_cache_flush_enabled_get(void) +{ + return _elm_config->cache_flush_enable; +} + +EAPI void +elm_config_cache_flush_enabled_set(Eina_Bool enabled) +{ + enabled = !!enabled; + if (_elm_config->cache_flush_enable == enabled) return; + _elm_config->cache_flush_enable = enabled; + + _elm_recache(); +} + +EAPI int +elm_config_cache_font_cache_size_get(void) +{ + return _elm_config->font_cache; +} + +EAPI void +elm_config_cache_font_cache_size_set(int size) +{ + if (_elm_config->font_cache == size) return; + _elm_config->font_cache = size; + + _elm_recache(); +} + +EAPI int +elm_config_cache_image_cache_size_get(void) +{ + return _elm_config->image_cache; +} + +EAPI void +elm_config_cache_image_cache_size_set(int size) +{ + if (_elm_config->image_cache == size) return; + _elm_config->image_cache = size; + + _elm_recache(); +} + +EAPI int +elm_config_cache_edje_file_cache_size_get() +{ + return _elm_config->edje_cache; +} + +EAPI void +elm_config_cache_edje_file_cache_size_set(int size) +{ + if (_elm_config->edje_cache == size) return; + _elm_config->edje_cache = size; + + _elm_recache(); +} + +EAPI int +elm_config_cache_edje_collection_cache_size_get(void) +{ + return _elm_config->edje_collection_cache; +} + +EAPI void +elm_config_cache_edje_collection_cache_size_set(int size) +{ + if (_elm_config->edje_collection_cache == size) return; + _elm_config->edje_collection_cache = size; + + _elm_recache(); +} + +EAPI Eina_Bool +elm_config_focus_highlight_enabled_get(void) +{ + return _elm_config->focus_highlight_enable; +} + +EAPI void +elm_config_focus_highlight_enabled_set(Eina_Bool enable) +{ + _elm_config->focus_highlight_enable = !!enable; +} + +EAPI Eina_Bool +elm_config_focus_highlight_animate_get(void) +{ + return _elm_config->focus_highlight_animate; +} + +EAPI void +elm_config_focus_highlight_animate_set(Eina_Bool animate) +{ + _elm_config->focus_highlight_animate = !!animate; +} + +EAPI Eina_Bool +elm_config_scroll_bounce_enabled_get(void) +{ + return _elm_config->thumbscroll_bounce_enable; +} + +EAPI void +elm_config_scroll_bounce_enabled_set(Eina_Bool enabled) +{ + _elm_config->thumbscroll_bounce_enable = enabled; +} + +EAPI double +elm_config_scroll_bounce_friction_get(void) +{ + return _elm_config->thumbscroll_bounce_friction; +} + +EAPI void +elm_config_scroll_bounce_friction_set(double friction) +{ + _elm_config->thumbscroll_bounce_friction = friction; +} + +EAPI double +elm_config_scroll_page_scroll_friction_get(void) +{ + return _elm_config->page_scroll_friction; +} + +EAPI void +elm_config_scroll_page_scroll_friction_set(double friction) +{ + _elm_config->page_scroll_friction = friction; +} + +EAPI double +elm_config_scroll_bring_in_scroll_friction_get(void) +{ + return _elm_config->bring_in_scroll_friction; +} + +EAPI void +elm_config_scroll_bring_in_scroll_friction_set(double friction) +{ + _elm_config->bring_in_scroll_friction = friction; +} + +EAPI double +elm_config_scroll_zoom_friction_get(void) +{ + return _elm_config->zoom_friction; +} + +EAPI void +elm_config_scroll_zoom_friction_set(double friction) +{ + _elm_config->zoom_friction = friction; +} + +EAPI Eina_Bool +elm_config_scroll_thumbscroll_enabled_get(void) +{ + return _elm_config->thumbscroll_enable; +} + +EAPI void +elm_config_scroll_thumbscroll_enabled_set(Eina_Bool enabled) +{ + _elm_config->thumbscroll_enable = enabled; +} + +EAPI unsigned int +elm_config_scroll_thumbscroll_threshold_get(void) +{ + return _elm_config->thumbscroll_threshold; +} + +EAPI void +elm_config_scroll_thumbscroll_threshold_set(unsigned int threshold) +{ + _elm_config->thumbscroll_threshold = threshold; +} + +EAPI double +elm_config_scroll_thumbscroll_momentum_threshold_get(void) +{ + return _elm_config->thumbscroll_momentum_threshold; +} + +EAPI void +elm_config_scroll_thumbscroll_momentum_threshold_set(double threshold) +{ + _elm_config->thumbscroll_momentum_threshold = threshold; +} + +EAPI double +elm_config_scroll_thumbscroll_friction_get(void) +{ + return _elm_config->thumbscroll_friction; +} + +EAPI void +elm_config_scroll_thumbscroll_friction_set(double friction) +{ + _elm_config->thumbscroll_friction = friction; +} + +EAPI double +elm_config_scroll_thumbscroll_border_friction_get(void) +{ + return _elm_config->thumbscroll_border_friction; +} + +EAPI void +elm_config_scroll_thumbscroll_border_friction_set(double friction) +{ + if (friction < 0.0) friction = 0.0; + if (friction > 1.0) friction = 1.0; + _elm_config->thumbscroll_border_friction = friction; +} + +EAPI double +elm_config_scroll_thumbscroll_sensitivity_friction_get(void) +{ + return _elm_config->thumbscroll_sensitivity_friction; +} + +EAPI void +elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction) +{ + if (friction < 0.1) friction = 0.1; + if (friction > 1.0) friction = 1.0; + _elm_config->thumbscroll_sensitivity_friction = friction; +} + +EAPI void +elm_config_longpress_timeout_set(double longpress_timeout) +{ + _elm_config->longpress_timeout = longpress_timeout; +} + +EAPI double +elm_config_longpress_timeout_get(void) +{ + return _elm_config->longpress_timeout; +} + +EAPI void +elm_config_all_flush(void) +{ +#ifdef HAVE_ELEMENTARY_X + if (_prop_all_update_timer) ecore_timer_del(_prop_all_update_timer); + _prop_all_update_timer = ecore_timer_add(0.1, _prop_all_update_cb, NULL); +#endif +} + static void _translation_init() { @@ -1431,8 +2030,13 @@ _elm_config_init(void) _desc_init(); _profile_fetch_from_conf(); _config_load(); - _translation_init(); _env_get(); + if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine); + if (_elm_config->engine) + _elm_preferred_engine = eina_stringshare_add(_elm_config->engine); + else + _elm_preferred_engine = NULL; + _translation_init(); _config_apply(); _elm_config_font_overlay_apply(); _elm_recache(); @@ -1526,16 +2130,22 @@ _elm_config_engine_set(const char *engine) _elm_config->engine = eina_stringshare_add(engine); } -void -_elm_config_all_update(void) +EAPI const char * +elm_config_preferred_engine_get(void) { -#ifdef HAVE_ELEMENTARY_X - if (_prop_all_update_timer) ecore_timer_del(_prop_all_update_timer); - _prop_all_update_timer = ecore_timer_add(0.1, _prop_all_update_cb, NULL); - _prop_config_set(); - ecore_x_window_prop_string_set(_root_1st, _atom[ATOM_E_PROFILE], - _elm_profile); -#endif + return _elm_preferred_engine; +} + +EAPI void +elm_config_preferred_engine_set(const char *engine) +{ + if (engine) + eina_stringshare_replace(&(_elm_preferred_engine), engine); + else + { + if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine); + _elm_preferred_engine = eina_stringshare_add(_elm_config->engine); + } } void @@ -1570,9 +2180,9 @@ _elm_config_shutdown(void) if (_prop_all_update_timer) { ecore_timer_del(_prop_all_update_timer); + _prop_all_update_timer = NULL; _prop_all_update_cb(NULL); } - _prop_all_update_timer = NULL; if (_prop_change_delay_timer) ecore_timer_del(_prop_change_delay_timer); _prop_change_delay_timer = NULL; #endif @@ -1590,6 +2200,11 @@ _elm_config_shutdown(void) #endif } _config_free(); + if (_elm_preferred_engine) + { + eina_stringshare_del(_elm_preferred_engine); + _elm_preferred_engine = NULL; + } if (_elm_profile) { free(_elm_profile);