From 96b018d01d5007d7ea3a871a2fc31d712c985c1d Mon Sep 17 00:00:00 2001 From: Radek Kintop Date: Thu, 6 Apr 2017 17:21:56 +0200 Subject: [PATCH] System menu button gets to be updated when voice control setting changes Change-Id: Idbabae1a08e6f8a32bd51e45580fcfdc18958909 Signed-off-by: Radek Kintop --- include/data/system/settings_voice_control.h | 1 + src/data/system/settings_voice_control.c | 10 ++++++++++ src/layout/layout_system.c | 19 ++++++++++++++++++- src/view/view_base.c | 3 +-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/include/data/system/settings_voice_control.h b/include/data/system/settings_voice_control.h index 8781e9f..34342c3 100644 --- a/include/data/system/settings_voice_control.h +++ b/include/data/system/settings_voice_control.h @@ -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_ */ diff --git a/src/data/system/settings_voice_control.c b/src/data/system/settings_voice_control.c index c1a7ad5..45e0fd3 100755 --- a/src/data/system/settings_voice_control.c +++ b/src/data/system/settings_voice_control.c @@ -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), diff --git a/src/layout/layout_system.c b/src/layout/layout_system.c index 9ac5bee..01c7a09 100755 --- a/src/layout/layout_system.c +++ b/src/layout/layout_system.c @@ -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; diff --git a/src/view/view_base.c b/src/view/view_base.c index 424fee4..6ad62e6 100755 --- a/src/view/view_base.c +++ b/src/view/view_base.c @@ -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); -- 2.7.4