System menu button gets to be updated when voice control setting changes 07/123707/5
authorRadek Kintop <r.kintop@samsung.com>
Thu, 6 Apr 2017 15:21:56 +0000 (17:21 +0200)
committerRadek Kintop <r.kintop@samsung.com>
Wed, 12 Apr 2017 10:50:18 +0000 (03:50 -0700)
Change-Id: Idbabae1a08e6f8a32bd51e45580fcfdc18958909
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
include/data/system/settings_voice_control.h
src/data/system/settings_voice_control.c
src/layout/layout_system.c
src/view/view_base.c

index 8781e9f..34342c3 100644 (file)
@@ -21,5 +21,6 @@
 
 struct data_class *get_voice_control_data_class(void);
 char *settings_voice_control_status_str(void);
+void setting_voice_control_reg_data_change_cb(void *cb, void *data);
 
 #endif /* INCLUDE_DATA_SYSTEM_SETTINGS_VOICE_CONTROL_H_ */
index c1a7ad5..45e0fd3 100755 (executable)
@@ -36,6 +36,8 @@ static struct data_class vc_class = {
 };
 
 static bool vc_initialised = false;
+static void (*ext_voice_control_changed_cb)(void *ext_data);
+static void *ext_data = NULL;
 
 typedef struct {
        void (*event_cb)(enum event_type type, void *data);
@@ -48,6 +50,12 @@ struct data_class *get_voice_control_data_class(void)
        return &vc_class;
 }
 
+void setting_voice_control_reg_data_change_cb(void *cb, void *data)
+{
+       ext_voice_control_changed_cb = cb;
+       ext_data = data;
+}
+
 char *settings_voice_control_status_str(void)
 {
        int ret = VC_ERROR_NONE;
@@ -90,6 +98,8 @@ static void _voice_control_changed_cb(bool enabled, void *data)
 
        if (priv->event_cb)
                priv->event_cb(EVENT_DATA_CHANGED, priv->cb_data);
+       if (ext_voice_control_changed_cb && ext_data)
+               ext_voice_control_changed_cb(ext_data);
 }
 
 static void *_create(void (*event_cb)(enum event_type type, void *data),
index 9ac5bee..01c7a09 100755 (executable)
@@ -60,6 +60,8 @@ static void _selected(void *data, int id);
 static void _focused(void *data, int id);
 static void _selected_menu(void *data, int id);
 
+static void _reg_data_change_cb(void *data);
+
 static struct menumgr_info menu_info[] = {
        {
                .id = MENU_CLOCK,
@@ -98,7 +100,7 @@ static struct menumgr_info menu_info[] = {
                .selected_menu = _selected_menu,
                .progress_value = NULL,
                .progress_evas = NULL,
-               .update_cb = NULL,
+               .update_cb = _reg_data_change_cb
        },
        {
                .id = MENU_RESET,
@@ -171,6 +173,21 @@ static void _selected_menu(void *data, int id)
 {
 }
 
+static void _voice_control_changed_cb(void *data)
+{
+       menumgr_update((struct menumgr *)data);
+}
+
+static void _reg_data_change_cb(void *data)
+{
+       if (data) {
+               setting_voice_control_reg_data_change_cb(_voice_control_changed_cb,
+                                                                                               (struct menumgr *)data);
+       } else {
+               setting_voice_control_reg_data_change_cb(NULL, NULL);
+       }
+}
+
 static bool _add_layout_contents(struct _priv *priv, Evas_Object *tab_button)
 {
        Evas_Object *table = NULL;
index 424fee4..6ad62e6 100755 (executable)
@@ -66,8 +66,7 @@ static struct _menu_data _mdata[LAYOUT_MAX] = {
 };
 
 static struct _menu_data *_mdata_p[LAYOUT_MAX] = {
-       &_mdata[0], &_mdata[1], &_mdata[2],/* &_mdata[3],
-       &_mdata[4], &_mdata[5], &_mdata[6], &_mdata[7] */
+       &_mdata[0], &_mdata[1], &_mdata[2]
 };
 
 static bool _draw_menu_area(struct _priv *priv);