Reset read_timer on lang change 33/325233/1
authorYoungsun Suh <youngsun.suh@samsung.com>
Thu, 5 Jun 2025 03:28:54 +0000 (12:28 +0900)
committerYoungsun Suh <youngsun.suh@samsung.com>
Thu, 5 Jun 2025 03:28:54 +0000 (12:28 +0900)
Change-Id: I32c79c8df3b1669a8c7af8230007a3445a18cd8d

include/app_tracker.h
include/navigator.h
include/screen_reader.h
include/screen_reader_vconf.h
src/app_tracker.c
src/main.c
src/navigator.c
src/screen_reader.c
src/screen_reader_vconf.c

index 1fde6f80bc9efd0ae98cc3cf1eb9e5dbef21abb0..b95443d6f264c4d33ab23ede313fd20ab78e7baa 100644 (file)
@@ -102,4 +102,9 @@ bool app_tracker_null_context_is(App_Tracker_Data *atd);
  */
 void app_tracker_null_context_switch(App_Tracker_Data *atd);
 
+/**
+ * @brief Resets internal read timer
+ */
+void app_tracker_reset_read_timer(App_Tracker_Data *atd);
+
 #endif /* end of include guard: APP_TRACKER_H_ */
index 35983f0ce9ca27cd0d68d1d3fbd56fb90a081abb..1bbabd35405c02e419c69bd1f31217c4def5b0bc 100644 (file)
@@ -63,4 +63,6 @@ void navigator_set_ignore_keyboard_feedback(NavigatorData *nd, Eina_Bool feedbac
 
 Eina_Bool navigator_get_is_text_selection_mode(NavigatorData *nd);
 
+void navigator_reset_read_timer(NavigatorData *nd);
+
 #endif //NAVIGATOR_H_
index 2ac430b21e68c12af2e151371577e2b01706e7dd..7bff5471bbc042b3bd36e59a7a0dd2830af7ae81 100644 (file)
@@ -60,4 +60,6 @@ int screen_reader_create_service(Service_Data *data);
 
 int screen_reader_terminate_service(Service_Data *data);
 
+void screen_reader_set_lang_change_callback(Service_Data *service_data);
+
 #endif
index 6638b9e3f34b3fa88dd2177010624f96e0d2fc21..27ee11c32e09c9e6581c27e3512f0fd3849a2c8a 100644 (file)
@@ -27,4 +27,7 @@ bool vc_get_sound_feedback(void);
 int vc_get_lcd_backlight_timeout(void);
 int vc_get_tts_speed(void);
 
+typedef void(*lang_change_callback_t)(void*);
+void vc_set_lang_change_callback(lang_change_callback_t cb, void *user_data);
+
 #endif /* SCREEN_READER_VCONF_H_ */
index bca57eaf2c2b847b626bfd2951e83b85b1799b57..26734e062f9e8684ab2f7b506e1abc1ea4b5bfcd 100644 (file)
@@ -51,6 +51,17 @@ struct _App_Tracker_Data {
        AtspiAccessible *desktop;
 };
 
+void app_tracker_reset_read_timer(App_Tracker_Data *atd)
+{
+#ifndef SCREEN_READER_TV
+       if (atd->read_timer) {
+               DEBUG("Resetting read timer");
+               ecore_timer_del(atd->read_timer);
+               atd->read_timer = NULL;
+       }
+#endif
+}
+
 #ifndef SCREEN_READER_TV
 static void app_tracker_window_append(void *data, AtspiAccessible *root);
 #endif
index 980805fd112ef9352bcd7cae9625eb71388c9d93..4285a6c27006b92d1f01424b2896fd2252e7f98f 100644 (file)
@@ -65,6 +65,8 @@ static int app_create(void *data)
                return -1;
        }
 
+       screen_reader_set_lang_change_callback(sd);
+
        sd->system_data = system_notifications_init();
        navigator_set_read_quickpanel_cb(sd->navigator_data, system_status_get, sd->system_data, NULL);
 
index 02de86ae7d74751f6724da4a174e8af6aa400aac..1f519709643e66e3597eff0c6404699d478610d3 100644 (file)
@@ -2623,3 +2623,7 @@ Eina_Bool navigator_get_is_text_selection_mode(NavigatorData *nd) {
        if (!nd) { ERROR("NavigatorData is NULL!"); }
        return nd ? nd->is_text_selection_mode : EINA_FALSE;
 }
+
+void navigator_reset_read_timer(NavigatorData *nd) {
+       app_tracker_reset_read_timer(nd->app_tracker_data);
+}
index f7165d618114971092b623de1edb9158e37b7606..2653a69d183bec1afbee1ab2f44b9ff087dce566 100644 (file)
@@ -77,3 +77,19 @@ int screen_reader_terminate_service(Service_Data *service_data)
        tw_shutdown();
        return 0;
 }
+
+static void _lang_change_callback(void *user_data)
+{
+       NavigatorData *nd = (NavigatorData*)user_data;
+       if (nd)
+               navigator_reset_read_timer(nd);
+       tw_purge(EINA_TRUE);
+}
+
+void screen_reader_set_lang_change_callback(Service_Data *service_data)
+{
+       DEBUG("Setting language change callback");
+       NavigatorData *nd = service_data->navigator_data;
+       vc_set_lang_change_callback(_lang_change_callback, nd);
+
+}
index fa63362e96b4ae8534695f8dd7e707eadba2bd72..4566f6b98bbbbe52e47132d5aeae26917270b2c0 100644 (file)
@@ -42,6 +42,8 @@ typedef struct {
        bool sound_feedback;
        int lcd_backlight_timeout;
        int tts_speed;
+       lang_change_callback_t lang_change_cb;
+       void *lang_chang_cb_data;
 } VConfData;
 
 static VConfData *vc_get_instance(void);
@@ -53,7 +55,10 @@ static int display_language_changed_cb(void *event_info, void *data)
        //to make gettext work
        char *pLocale = vconf_get_str(VCONFKEY_LANGSET);
        if (pLocale) {
-               tw_purge(EINA_TRUE);
+               VConfData *vconf_data = vc_get_instance();
+               if (vconf_data->lang_change_cb)
+                       vconf_data->lang_change_cb(vconf_data->lang_chang_cb_data);
+
                setlocale(LC_ALL, pLocale);
                DEBUG("Changed Language: %s", pLocale);
                free(pLocale);
@@ -222,3 +227,10 @@ int vc_get_tts_speed(void)
 {
        return vc_get_instance()->tts_speed;
 }
+
+void vc_set_lang_change_callback(lang_change_callback_t cb, void *user_data)
+{
+       VConfData *vconf_data = vc_get_instance();
+       vconf_data->lang_change_cb = cb;
+       vconf_data->lang_chang_cb_data = user_data;
+}