Implement lockscreen tts.
[apps/home/lockscreen.git] / src / util.c
index 670ca14..c3fbf29 100755 (executable)
@@ -391,6 +391,44 @@ static Evas_Object *_access_object_get(Evas_Object *obj, const char *part)
        return ao;
 }
 
+const char *_lock_info_access_activate_cb(void *data, Evas_Object *obj)
+{
+       struct appdata *ad = data;
+       if(ad == NULL || obj == NULL) {
+               return NULL;
+       }
+       if(ad->ly_main == NULL || ad->info == NULL) {
+               return NULL;
+       }
+
+       const char *text = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       str_buf = eina_strbuf_new();
+       if(str_buf == NULL) {
+               LOCK_SCREEN_TRACE_ERR("eina_strbuf_new() failed");
+               return NULL;
+       }
+
+       text = elm_object_part_text_get(ad->info, "txt.clock");
+       if(text) {
+               text = evas_textblock_text_markup_to_utf8(NULL, text);
+               if(text)
+                       eina_strbuf_append(str_buf, text);
+       }
+
+       text = elm_object_part_text_get(ad->info, "txt.date");
+       if(text) {
+               text = evas_textblock_text_markup_to_utf8(NULL, text);
+               if(text)
+                       eina_strbuf_append(str_buf, text);
+       }
+
+       text = strdup(eina_strbuf_string_get(str_buf));
+       eina_strbuf_free(str_buf);
+
+       return text?strdup(text):NULL;
+}
+
 static Eina_Bool _init_widget_cb(void *data)
 {
        struct appdata *ad = data;
@@ -443,10 +481,39 @@ static Eina_Bool _init_widget_cb(void *data)
 
        edje_object_signal_callback_add(_EDJ(ad->ly_main), "exit,app", "event", _app_exit, ad);
 
+       Eina_List *chain_list = NULL;
+
        ad->ao_bg = _access_object_get(ad->ly_main, "tts.bg");
        if(ad->ao_bg) {
                elm_access_action_cb_set(ad->ao_bg, ELM_ACCESS_ACTION_MOUSE, _mouse_cb, ad);
-       }
+               elm_object_focus_allow_set(ad->ao_bg, EINA_TRUE);
+               chain_list = eina_list_append(chain_list, ad->ao_bg);
+       }
+       Evas_Object *ao_title = _access_object_get(ad->ly_main, "tts.title");
+       if(ao_title) {
+               elm_access_info_set(ao_title, ELM_ACCESS_INFO, "Life Magazine");
+               elm_access_info_set(ao_title, ELM_ACCESS_TYPE, "");
+               elm_object_focus_allow_set(ao_title, EINA_TRUE);
+               chain_list = eina_list_append(chain_list, ao_title);
+       }
+       Evas_Object *ao_sim = _access_object_get(ad->ly_main, "tts.sim.state");
+       if(ao_sim) {
+               const char *text_sim = elm_object_part_text_get(ad->ly_main, "sim.state");
+               if(text_sim) {
+                       elm_access_info_set(ao_sim, ELM_ACCESS_INFO, text_sim);
+               }
+               elm_access_info_set(ao_sim, ELM_ACCESS_TYPE, "");
+               elm_object_focus_allow_set(ao_sim, EINA_TRUE);
+               chain_list = eina_list_append(chain_list, ao_sim);
+       }
+       Evas_Object *ao_info = _access_object_get(ad->ly_main, "tts.info");
+       if(ao_info) {
+               elm_access_info_cb_set(ao_info, ELM_ACCESS_INFO, _lock_info_access_activate_cb, ad);
+               elm_access_info_set(ao_info, ELM_ACCESS_TYPE, "");
+               elm_object_focus_allow_set(ao_info, EINA_TRUE);
+               chain_list = eina_list_append(chain_list, ao_info);
+       }
+       elm_object_focus_custom_chain_set(ad->ly_main, chain_list);
 
        vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK);