efl/config: merge all gesture manager config code into efl.config

this is all just duplicated code, so we can deduplicate it with minimal
effort to clean up the api
This commit is contained in:
Mike Blumenkrantz 2020-01-30 11:46:59 -05:00 committed by Marcel Hollerbach
parent af67c97999
commit 7f157be59a
8 changed files with 37 additions and 19 deletions

View File

@ -27,6 +27,9 @@ interface @beta Efl.Config
}
}
}
events {
config,changed: string; [[Called when a config value has been changed for the manager object. Passed string is the name of the value or NULL if all values were changed.]]
}
}
/* NOTES:

View File

@ -5148,43 +5148,43 @@ static void
_gesture_manager_config_load(Eo *obj)
{
Eina_Value val;
Efl_Canvas_Gesture_Manager *gm = efl_provider_find(obj, EFL_CANVAS_GESTURE_MANAGER_CLASS);
Eo *gm = efl_provider_find(obj, EFL_CONFIG_INTERFACE);
eina_value_setup(&val, EINA_VALUE_TYPE_DOUBLE);
eina_value_set(&val, _elm_config->glayer_long_tap_start_timeout);
efl_gesture_manager_config_set(gm, "glayer_long_tap_start_timeout", &val);
efl_config_set(gm, "glayer_long_tap_start_timeout", &val);
eina_value_set(&val, _elm_config->glayer_double_tap_timeout);
efl_gesture_manager_config_set(gm, "glayer_double_tap_timeout", &val);
efl_config_set(gm, "glayer_double_tap_timeout", &val);
elm_config_scroll_thumbscroll_friction_set(_elm_config->thumbscroll_friction);
elm_config_scroll_thumbscroll_momentum_threshold_set(_elm_config->thumbscroll_momentum_threshold);
eina_value_set(&val, _elm_config->glayer_line_min_length);
efl_gesture_manager_config_set(gm, "glayer_line_min_length", &val);
efl_config_set(gm, "glayer_line_min_length", &val);
eina_value_set(&val, _elm_config->glayer_line_distance_tolerance);
efl_gesture_manager_config_set(gm, "glayer_line_distance_tolerance", &val);
efl_config_set(gm, "glayer_line_distance_tolerance", &val);
eina_value_set(&val, _elm_config->glayer_line_angular_tolerance);
efl_gesture_manager_config_set(gm, "glayer_line_angular_tolerance", &val);
efl_config_set(gm, "glayer_line_angular_tolerance", &val);
eina_value_set(&val, _elm_config->glayer_zoom_finger_factor);
efl_gesture_manager_config_set(gm, "glayer_zoom_finger_factor", &val);
efl_config_set(gm, "glayer_zoom_finger_factor", &val);
eina_value_set(&val, _elm_config->glayer_zoom_distance_tolerance);
efl_gesture_manager_config_set(gm, "glayer_zoom_distance_tolerance", &val);
efl_config_set(gm, "glayer_zoom_distance_tolerance", &val);
eina_value_setup(&val, EINA_VALUE_TYPE_UINT);
eina_value_set(&val, _elm_config->glayer_flick_time_limit_ms);
efl_gesture_manager_config_set(gm, "glayer_flick_time_limit_ms", &val);
efl_config_set(gm, "glayer_flick_time_limit_ms", &val);
eina_value_setup(&val, EINA_VALUE_TYPE_UCHAR);
eina_value_set(&val, _elm_config->glayer_continues_enable);
efl_gesture_manager_config_set(gm, "glayer_continues_enable", &val);
efl_config_set(gm, "glayer_continues_enable", &val);
eina_value_set(&val, _elm_config->glayer_zoom_finger_enable);
efl_gesture_manager_config_set(gm, "glayer_zoom_finger_enable", &val);
efl_config_set(gm, "glayer_zoom_finger_enable", &val);
}
static Eo *

View File

@ -2053,6 +2053,7 @@ _config_flush_get(void)
_elm_config_key_binding_hash();
_elm_win_access(_elm_config->access_mode);
ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, NULL);
}
static const char *
@ -4509,6 +4510,7 @@ _elm_config_reload(void)
_elm_old_clouseau_reload();
_elm_config_key_binding_hash();
ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, NULL);
if (ptheme) eina_stringshare_del(ptheme);
if (pmodules) eina_stringshare_del(pmodules);
if (picon_theme) eina_stringshare_del(picon_theme);
@ -4936,6 +4938,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU
return EINA_FALSE; \
} \
elm_config_ ## opt ## _set(v); \
efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, (void*)name); \
return EINA_TRUE; \
} \
} while (0)
@ -4973,6 +4976,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU
return EINA_FALSE; \
} \
elm_config_ ## opt ## _set(v); \
efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, (void*)name); \
return EINA_TRUE; \
} \
} while (0)
@ -5119,6 +5123,7 @@ _efl_config_global_efl_config_config_set(Eo *obj EINA_UNUSED, void *_pd EINA_UNU
}
elm_config_audio_mute_set(chan, !!v);
#ifdef ENABLE_MULTISENSE
efl_event_callback_call(_efl_config_obj, EFL_CONFIG_EVENT_CONFIG_CHANGED, (void*)name);
return EINA_TRUE;
#else
return EINA_FALSE;

View File

@ -97,6 +97,15 @@ _update_finger_sizes(Efl_Canvas_Gesture_Manager_Data *pd, int finger_size)
zd->finger_size = finger_size;
}
static void
_gesture_manager_config_changed(void *data, const Efl_Event *ev)
{
Efl_Canvas_Gesture_Manager_Data *pd = data;
if ((!ev->info) || eina_streq(ev->info, "glayer_tap_finger_size"))
_update_finger_sizes(pd, efl_config_int_get(ev->object, "glayer_tap_finger_size"));
}
EOLIAN static Efl_Object *
_efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd)
{
@ -112,6 +121,7 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M
/* this needs to always be present */
config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
efl_config_int_set(config, "glayer_tap_finger_size", EFL_GESTURE_RECOGNIZER_TYPE_TAP_FINGER_SIZE);
efl_event_callback_add(config, EFL_CONFIG_EVENT_CONFIG_CHANGED, _gesture_manager_config_changed, pd);
//Register all types of recognizers at very first time.
efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_TAP_CLASS, obj));
@ -127,10 +137,13 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M
}
EOLIAN static void
_efl_canvas_gesture_manager_efl_object_destructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd EINA_UNUSED)
_efl_canvas_gesture_manager_efl_object_destructor(Eo *obj, Efl_Canvas_Gesture_Manager_Data *pd)
{
Efl_Canvas_Gesture_Recognizer *recognizer;
void *ptr;
Eo *config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
if (config)
efl_event_callback_del(config, EFL_CONFIG_EVENT_CONFIG_CHANGED, _gesture_manager_config_changed, pd);
eina_hash_free(pd->m_recognizers);
EINA_LIST_FREE(pd->custom_recognizers, recognizer)

View File

@ -30,9 +30,6 @@ class @beta Efl.Canvas.Gesture_Manager extends Efl.Object
}
}
}
events {
config,changed: string; [[Called when a config value has been changed for the manager object. Passed string is the name of the value.]]
}
implements {
Efl.Object.constructor;
Efl.Object.destructor;

View File

@ -7,7 +7,7 @@
Eina_Value *
_recognizer_config_get(const Eo *obj, const char *name)
{
Eo *config = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
Eo *config = efl_provider_find(obj, EFL_CONFIG_INTERFACE);
EINA_SAFETY_ON_NULL_RETURN_VAL(config, NULL);
return efl_config_get(config, name);
}

View File

@ -7,8 +7,8 @@ abstract @beta Efl.Canvas.Gesture_Recognizer extends Efl.Object
Gesture recognizers listen to events that occur on a target object
to see if a particular gesture has occurred.
Recognizer-specific configuration values can be modified through @Efl.Canvas.Gesture_Manager.config,
and the recognizer's manager can be found using @Efl.Object.provider_find.
Recognizer-specific configuration values can be modified through @Efl.Config.config,
and the global config object can be found using @Efl.Object.provider_find.
Default configuration values are taken from the system's configuration.
]]
c_prefix: efl_gesture_recognizer;

View File

@ -202,7 +202,7 @@ EFL_START_TEST(test_efl_ui_gesture_long_tap)
Eina_Value *val;
Eo *e = efl_provider_find(rect, EVAS_CANVAS_CLASS);
val = efl_gesture_manager_config_get(efl_provider_find(rect, EFL_CANVAS_GESTURE_MANAGER_CLASS), "glayer_long_tap_start_timeout");
val = efl_config_get(efl_provider_find(rect, EFL_CONFIG_INTERFACE), "glayer_long_tap_start_timeout");
eina_value_get(val, &timeout);
/* press */