Favorites mock 18/61818/2
authorRadek Kintop <r.kintop@samsung.com>
Thu, 10 Mar 2016 17:02:35 +0000 (18:02 +0100)
committerRadek Kintop <r.kintop@samsung.com>
Fri, 11 Mar 2016 12:51:35 +0000 (04:51 -0800)
Change-Id: I003b2a1481c1cbc9dc3dbbde580119c0d4449b9d
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
15 files changed:
include/common/favoritemgr.h
include/common/viewmgr.h
include/view/view_action_menu.h
src/common/favoritemgr.c
src/common/menumgr.c
src/layout/layout_channel.c
src/layout/layout_network.c
src/layout/layout_picture.c
src/layout/layout_sound.c
src/layout/layout_support.c
src/layout/layout_system.c
src/layout/layout_voice.c
src/main.c
src/view/view_action_menu.c
src/view/view_base.c

index 8346e0e..6a335a2 100644 (file)
@@ -17,6 +17,6 @@
 #ifndef __AIR_SETTINGS_FAVORITEMGR_H__
 #define __AIR_SETTINGS_FAVORITEMGR_H__
 
-void _set_favorite(Evas_Object *obj, Eina_Bool status);
+void set_favorite(Evas_Object *obj, Eina_Bool status);
 
 #endif /* __AIR_SETTINGS_FAVORITEMGR_H__ */
index f52b83a..d322ce7 100644 (file)
@@ -48,6 +48,8 @@ enum update_type {
        UPDATE_ENABLE,
        UPDATE_DISABLE,
        UPDATE_REORDER_MODE_ON,
+       UPDATE_ADDED_TO_FAV,
+       UPDATE_REMOVED_FROM_FAV,
        UPDATE_TOAST
 };
 
index cf4bd04..327c292 100644 (file)
 #ifndef VIEW_ACTION_MENU_H_
 #define VIEW_ACTION_MENU_H_
 
-#include "common/viewmgr.h"
+typedef struct {
+
+       const char *layout_id;
+       const char *layout_subitem_id;
+       int layout_subitem_menu_id;
+}action_menu_parameter;
 
 enum {
        ACT_MENU_SRC_VIEW_UPDATE
index 380ee29..b324b37 100644 (file)
@@ -22,7 +22,7 @@
 #include "common/favoritemgr.h"
 #include "define.h"
 
-void _set_favorite(Evas_Object *obj, Eina_Bool status)
+void set_favorite(Evas_Object *obj, Eina_Bool status)
 {
        SETTING_TRACE_BEGIN;
        if(EINA_TRUE == status) {
index c858a99..cf3cbf4 100644 (file)
@@ -145,7 +145,7 @@ void menumgr_update(struct menumgr *m)
                }
 
                if (m->info[i])
-                       _set_favorite(m->btn[i], m->info[i]->favorite);
+                       set_favorite(m->btn[i], m->info[i]->favorite);
 
                if (m->info[i]->progress_evas) {
                        elm_progressbar_value_set(m->info[i]->progress_evas, m->info[i]->progress_value());
@@ -205,9 +205,8 @@ struct menumgr *menumgr_create(Evas_Object *table, Evas_Object *tab_menu_btn,
                elm_object_disabled_set(btn, info[i].disabled);
                evas_object_size_hint_align_set(btn, 0, 0);
 
-               if (info[i].favorite) {
-                       _set_favorite(btn, info[i].favorite);
-               }
+               if (info[i].favorite)
+                       set_favorite(btn, info[i].favorite);
 
                if (info[i].progress_value) {
                        info[i].progress_evas = utils_add_progressbar(btn, PART_MENU_PROGRESS, NULL);
index 2f61daf..24f2bea 100644 (file)
@@ -18,6 +18,7 @@
 #include <tv_service_proxy.h>
 
 #include "app_debug.h"
+#include "common/favoritemgr.h"
 #include "common/inputmgr.h"
 #include "common/layoutmgr.h"
 #include "common/utils.h"
@@ -515,6 +516,12 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_ENABLE:
                        elm_object_disabled_set(priv->ly, EINA_FALSE);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       set_favorite(priv->ly, EINA_TRUE);
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       set_favorite(priv->ly, EINA_FALSE);
+                       break;
                default:
                        break;
        }
index 2e9efd4..56a3964 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "app_debug.h"
 #include "common/datamgr.h"
+#include "common/favoritemgr.h"
 #include "common/inputmgr.h"
 #include "common/layoutmgr.h"
 #include "common/listmgr.h"
@@ -1061,6 +1062,12 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_ENABLE:
                        elm_object_disabled_set(priv->ly, EINA_FALSE);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       set_favorite(priv->ly, EINA_TRUE);
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       set_favorite(priv->ly, EINA_FALSE);
+                       break;
                default:
                        break;
        }
index c36f5f7..1f02d51 100644 (file)
@@ -280,32 +280,37 @@ static void _focused(void *data, int id)
 
 static void _selected_menu(void *data, int id)
 {
+       action_menu_parameter am_param = {0,};
+       am_param.layout_id = LAYOUT_ID_PICTURE;
+       am_param.layout_subitem_menu_id = id;
+
        switch (id)
        {
                case MENU_PICTURE_MODE:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_MODE);
+                       am_param.layout_subitem_id = VIEW_PICTURE_MODE;
                        break;
                case MENU_CONTRAST:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_CONTRAST);
+                       am_param.layout_subitem_id = VIEW_PICTURE_CONTRAST;
                        break;
                case MENU_BRIGHTNESS:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_BRIGHTNESS);
+                       am_param.layout_subitem_id = VIEW_PICTURE_BRIGHTNESS;
                        break;
                case MENU_SHARPNESS:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_SHARPNESS);
+                       am_param.layout_subitem_id = VIEW_PICTURE_SHARPNESS;
                        break;
                case MENU_COLOR:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_COLOR);
+                       am_param.layout_subitem_id = VIEW_PICTURE_COLOR;
                        break;
                case MENU_TINT:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_TINT);
+                       am_param.layout_subitem_id = VIEW_PICTURE_TINT;
                        break;
                case MENU_SCREEN_ADJ:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_PICTURE_SCREEN_ADJ);
+                       am_param.layout_subitem_id = VIEW_PICTURE_SCREEN_ADJ;
                        break;
                default:
                        return;
        }
+       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, (void *)&am_param);
        viewmgr_show_view(VIEW_ACTION_MENU);
 }
 
@@ -438,6 +443,7 @@ static void _destroy(void *layout_data)
 static void _update(void *layout_data, int update_type, void *data)
 {
        struct _priv *priv = (struct _priv *)layout_data;
+       int menu_item_id = (int)data;
 
        if (!priv) {
                _ERR("Invalid argument.");
@@ -454,6 +460,18 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_CONTENT:
                        menumgr_update(priv->menu);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       if (menu_item_id >=0 && menu_item_id < ARRAY_SIZE(menu_info)) {
+                               menu_info[menu_item_id].favorite = EINA_TRUE;
+                               menumgr_update(priv->menu);
+                       }
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       if (menu_item_id >=0 && menu_item_id < ARRAY_SIZE(menu_info)) {
+                               menu_info[menu_item_id].favorite = EINA_FALSE;
+                               menumgr_update(priv->menu);
+                       }
+                       break;
                default:
                        break;
        }
index 63bafa7..de0d64a 100644 (file)
@@ -143,10 +143,6 @@ static bool _create(layoutmgr *lmgr, void *data)
        elm_object_part_text_set(priv->ly, PART_SPEAKER_SETTINGS_DESC1, STR_SPEAKER_SETTINGS_DESC1);
        elm_object_part_text_set(priv->ly, PART_SPEAKER_SETTINGS_DESC2, STR_SPEAKER_SETTINGS_DESC2);
 
-       //TODO Find how favorite will be saved and get the favorite status and set it
-       // when layout is created
-       _set_favorite(priv->ly, EINA_TRUE);
-
        priv->speakers_count = ARRAY_SIZE(speakers);
 
        priv->list_mgr = listmgr_create(priv->ly);
@@ -269,6 +265,12 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_ENABLE:
                        elm_object_disabled_set(priv->ly, EINA_FALSE);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       set_favorite(priv->ly, EINA_TRUE);
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       set_favorite(priv->ly, EINA_FALSE);
+                       break;
                default:
                        break;
        }
index 13ad2cd..65a77a6 100644 (file)
@@ -18,6 +18,7 @@
 #include <system_info.h>
 
 #include "app_debug.h"
+#include "common/favoritemgr.h"
 #include "common/inputmgr.h"
 #include "common/layoutmgr.h"
 #include "common/menumgr.h"
@@ -268,6 +269,12 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_ENABLE:
                        elm_object_disabled_set(priv->ly, EINA_FALSE);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       set_favorite(priv->ly, EINA_TRUE);
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       set_favorite(priv->ly, EINA_FALSE);
+                       break;
                default:
                        break;
        }
index ef25764..e4a2368 100644 (file)
@@ -75,7 +75,7 @@ static struct menumgr_info menu_info[] = {
                .title = STR_CLOCK,
                .style = STYLE_STATUS_BTN,
                .disabled = EINA_FALSE,
-               .favorite = EINA_TRUE,
+               .favorite = EINA_FALSE,
                .status = _get_clock_mode,
                .selected = _selected,
                .focused = _focused,
@@ -259,32 +259,36 @@ static void _focused(void *data, int id)
 
 static void _selected_menu(void *data, int id)
 {
+       action_menu_parameter am_param = {0,};
+       am_param.layout_id = LAYOUT_ID_SYSTEM;
+       am_param.layout_subitem_menu_id = id;
        switch (id)
        {
                case MENU_CLOCK:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_CLOCK);
+                       am_param.layout_subitem_id = VIEW_CLOCK;
                        break;
                case MENU_SLEEP_TIMER:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_SLEEP_TIMER);
+                       am_param.layout_subitem_id = VIEW_SLEEP_TIMER;
                        break;
                case MENU_WAKEUP_TIMER:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_WAKEUP_TIMER);
+                       am_param.layout_subitem_id = VIEW_WAKEUP_TIMER;
                        break;
                case MENU_CHANGE_PINCODE:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_CHANGE_PINCODE);
+                       am_param.layout_subitem_id = VIEW_CHANGE_PINCODE;
                        break;
                case MENU_LANGUAGE:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_LANGUAGE);
+                       am_param.layout_subitem_id = VIEW_LANGUAGE;
                        break;
                case MENU_SUBTITLE:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_SUBTITLE);
+                       am_param.layout_subitem_id = VIEW_SUBTITLE;
                        break;
                case MENU_RESET:
-                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, VIEW_RESET);
+                       am_param.layout_subitem_id = VIEW_RESET;
                        break;
                default:
                        return;
        }
+       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, (void *)&am_param);
        viewmgr_show_view(VIEW_ACTION_MENU);
 }
 
@@ -422,6 +426,7 @@ static void _hide(void *layout_data)
 static void _update(void *layout_data, int update_type, void *data)
 {
        struct _priv *priv = (struct _priv *)layout_data;
+       int menu_item_id = (int)data;
 
        if (!priv) {
                _ERR("Invalid argument.");
@@ -438,6 +443,18 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_CONTENT:
                        menumgr_update(priv->menu);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       if (menu_item_id >=0 && menu_item_id < ARRAY_SIZE(menu_info)) {
+                               menu_info[menu_item_id].favorite = EINA_TRUE;
+                               menumgr_update(priv->menu);
+                       }
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       if (menu_item_id >=0 && menu_item_id < ARRAY_SIZE(menu_info)) {
+                               menu_info[menu_item_id].favorite = EINA_FALSE;
+                               menumgr_update(priv->menu);
+                       }
+                       break;
                default:
                        break;
        }
index 7c01b66..142df83 100644 (file)
@@ -17,6 +17,7 @@
 #include <Elementary.h>
 
 #include "app_debug.h"
+#include "common/favoritemgr.h"
 #include "common/inputmgr.h"
 #include "common/layoutmgr.h"
 #include "common/menumgr.h"
@@ -236,6 +237,12 @@ static void _update(void *layout_data, int update_type, void *data)
                case UPDATE_CONTENT:
                        menumgr_update(priv->menu);
                        break;
+               case UPDATE_ADDED_TO_FAV:
+                       set_favorite(priv->ly, EINA_TRUE);
+                       break;
+               case UPDATE_REMOVED_FROM_FAV:
+                       set_favorite(priv->ly, EINA_FALSE);
+                       break;
                default:
                        break;
        }
index b3384fe..d865335 100644 (file)
@@ -90,12 +90,6 @@ static bool _create(void *data)
                return false;
        }
 
-       if (!viewmgr_add_view(view_action_menu_get_vclass(), NULL)) {
-               _ERR("Add action menu view failed.");
-               evas_object_del(win);
-               return false;
-       }
-
        if (!_create_picture_ui()) {
                evas_object_del(win);
                return false;
@@ -127,9 +121,6 @@ static void _terminate(void *data)
        _destroy_picture_ui();
        _destroy_system_ui();
 
-       if (!viewmgr_remove_view(VIEW_ACTION_MENU))
-               _ERR("Remove view failed.");
-
        if (!viewmgr_destroy())
                _ERR("Destroy viewmgr failed.");
 
index 305358d..5e85366 100644 (file)
  * limitations under the License.
  */
 
-#include "view/view_action_menu.h"
-
-#include "define.h"
-#include "common/utils.h"
 #include "app_debug.h"
 #include "common/inputmgr.h"
+#include "common/layoutmgr.h"
+#include "common/utils.h"
+#include "common/viewmgr.h"
+#include "define.h"
+#include "view/view_action_menu.h"
 
 enum {
        LIVE_TV_BUTTON_ID,
        MORE_FAV_BUTTON_ID,
        REORDER_BUTTON_ID,
-       FAV_BUTTON_ID,
+       ADD_TO_FAV_BUTTON_ID,
+       REM_FROM_FAV_BUTTON_ID,
        TUT_BUTTON_ID
 };
 
@@ -44,7 +46,10 @@ struct _priv {
        Evas_Object *reorder_btn;
        Evas_Object *fav_btn;
        Evas_Object *tut_btn;
-
+       const char *caller_layout_id;
+       const char *caller_layout_subitem_id;
+       int caller_layout_subitem_menu_id;
+       layoutmgr *lmgr;
 };
 
 /* Class functions: */
@@ -97,6 +102,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
                return NULL;
        }
 
+       priv->lmgr = (layoutmgr *)data;
        priv->action_menu_layout = utils_add_layout(win, GRP_VIEW_ACTION_MENU, EINA_TRUE);
 
        if (!priv->action_menu_layout) {
@@ -123,7 +129,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
        inputmgr_add_callback(priv->live_tv_btn, LIVE_TV_BUTTON_ID, &_btn_handler, priv);
        inputmgr_add_callback(priv->more_fav_btn, MORE_FAV_BUTTON_ID, &_btn_handler, priv);
        inputmgr_add_callback(priv->reorder_btn, REORDER_BUTTON_ID, &_btn_handler, priv);
-       inputmgr_add_callback(priv->fav_btn, FAV_BUTTON_ID, &_btn_handler, priv);
+       inputmgr_add_callback(priv->fav_btn, ADD_TO_FAV_BUTTON_ID, &_btn_handler, priv);
        inputmgr_add_callback(priv->tut_btn, TUT_BUTTON_ID, &_btn_handler, priv);
 
        if (!viewmgr_set_view_data(VIEW_ACTION_MENU, priv)) {
@@ -156,6 +162,8 @@ static void _hide(void *data)
                _ERR("Invalid parameter.");
                return;
        }
+       priv->caller_layout_id = NULL;
+       priv->caller_layout_subitem_id = NULL;
        evas_object_hide(priv->action_menu_layout);
        viewmgr_update_view(VIEW_BASE, UPDATE_ENABLE, NULL);
 }
@@ -168,16 +176,17 @@ static void _destroy(void *data)
                _ERR("Invalid parameter.");
                return;
        }
+
        evas_object_del(priv->action_menu_layout);
        free(priv);
 }
 
 static void _update(void *view_data, int update_type, void *data)
 {
-       const char *view_id = (const char *)data;
+       action_menu_parameter *amp = NULL;
        struct _priv *vd = (struct _priv *)view_data;
 
-       if (!view_id || !vd)
+       if (!data || !vd)
                return;
 
        /* Unset them and hide: */
@@ -189,34 +198,63 @@ static void _update(void *view_data, int update_type, void *data)
        evas_object_hide(vd->fav_btn);
        evas_object_hide(vd->tut_btn);
 
+       amp = (action_menu_parameter *)data;
+
+       vd->caller_layout_id = amp->layout_id;
+       vd->caller_layout_subitem_id = amp->layout_subitem_id;
+       vd->caller_layout_subitem_menu_id = amp->layout_subitem_menu_id;
+
+       /*TODO: call fav app and check if this item is added to fav database, then
+        * (depending on the rsponse) display fav icon button as active or not */
        if (ACT_MENU_SRC_VIEW_UPDATE == update_type) {
 
-               if (!strcmp(view_id, VIEW_BASE)) {
-                       elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN0, vd->reorder_btn);
-               }
+               if(!amp->layout_subitem_id) {
 
-               if (!strcmp(view_id, VIEW_PICTURE_MODE) ||
-                       !strcmp(view_id, VIEW_PICTURE_CONTRAST) ||
-                       !strcmp(view_id, VIEW_PICTURE_BRIGHTNESS) ||
-                       !strcmp(view_id, VIEW_PICTURE_SHARPNESS) ||
-                       !strcmp(view_id, VIEW_PICTURE_COLOR) ||
-                       !strcmp(view_id, VIEW_PICTURE_TINT) ||
-                       !strcmp(view_id, VIEW_PICTURE_SCREEN_ADJ) ||
-                       !strcmp(view_id, VIEW_CLOCK) ||
-                       !strcmp(view_id, VIEW_SLEEP_TIMER) ||
-                       !strcmp(view_id, VIEW_WAKEUP_TIMER) ||
-                       !strcmp(view_id, VIEW_CHANGE_PINCODE) ||
-                       !strcmp(view_id, VIEW_LANGUAGE) ||
-                       !strcmp(view_id, VIEW_SUBTITLE) ||
-                       !strcmp(view_id, VIEW_LOCATION) ||
-                       !strcmp(view_id, VIEW_RESET) ||
-                       !strcmp(view_id, VIEW_NEW_NETWORK)
+                       if (!strcmp(vd->caller_layout_id, LAYOUT_ID_PICTURE) ||
+                               !strcmp(vd->caller_layout_id, LAYOUT_ID_SYSTEM) ||
+                               !strcmp(vd->caller_layout_id, LAYOUT_ID_SUPPORT) ||
+                               !strcmp(vd->caller_layout_id, LAYOUT_ID_INFO) ||
+                               !strcmp(vd->caller_layout_id, LAYOUT_ID_VOICE)
+                       ) {
+                               elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN0, vd->reorder_btn);
+                               elm_object_focus_next_object_set(vd->live_tv_btn, vd->reorder_btn, ELM_FOCUS_DOWN);
+                               elm_object_focus_next_object_set(vd->more_fav_btn, vd->reorder_btn, ELM_FOCUS_UP);
+                       }
+
+                       if (!strcmp(vd->caller_layout_id, LAYOUT_ID_SOUND) ||
+                               !strcmp(vd->caller_layout_id, LAYOUT_ID_CHANNEL) ||
+                               !strcmp(vd->caller_layout_id, LAYOUT_ID_NETWORK)
                        ) {
                                elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN0, vd->fav_btn);
-                               elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN1, vd->tut_btn);
+                               elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN1, vd->reorder_btn);
+                               elm_object_focus_next_object_set(vd->live_tv_btn, vd->fav_btn, ELM_FOCUS_DOWN);
+                               elm_object_focus_next_object_set(vd->more_fav_btn, vd->fav_btn, ELM_FOCUS_UP);
+                       }
+               } else {
+                       if (!strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_MODE) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_CONTRAST) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_BRIGHTNESS) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_SHARPNESS) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_COLOR) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_TINT) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_PICTURE_SCREEN_ADJ) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_CLOCK) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_SLEEP_TIMER) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_WAKEUP_TIMER) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_CHANGE_PINCODE) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_LANGUAGE) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_SUBTITLE) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_LOCATION) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_RESET) ||
+                               !strcmp(vd->caller_layout_subitem_id, VIEW_NEW_NETWORK)
+                               ) {
+                                       elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN0, vd->fav_btn);
+                                       elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN1, vd->tut_btn);
+                                       elm_object_focus_next_object_set(vd->live_tv_btn, vd->fav_btn, ELM_FOCUS_DOWN);
+                                       elm_object_focus_next_object_set(vd->more_fav_btn, vd->fav_btn, ELM_FOCUS_UP);
+                       }
                }
        }
-
 }
 
 static void _mouse_cb(int id, void *data, Evas_Object *obj)
@@ -238,8 +276,15 @@ static void _mouse_cb(int id, void *data, Evas_Object *obj)
        case REORDER_BUTTON_ID:
                viewmgr_update_view(VIEW_BASE, UPDATE_REORDER_MODE_ON, NULL);
                break;
-       case FAV_BUTTON_ID:
-               /* TODO: contact base view and from there fav app maybe ? */
+       case ADD_TO_FAV_BUTTON_ID:
+               /* TODO: contact fav app maybe and tell to set this as a fav ? */
+               layoutmgr_update_layout(priv->lmgr, priv->caller_layout_id,
+                                                               UPDATE_ADDED_TO_FAV, (void *)priv->caller_layout_subitem_menu_id);
+               break;
+       case REM_FROM_FAV_BUTTON_ID:
+               /* TODO: contact fav app maybe and tell to remove this from fav DB ? */
+               layoutmgr_update_layout(priv->lmgr, priv->caller_layout_id,
+                                                               UPDATE_REMOVED_FROM_FAV, (void *)priv->caller_layout_subitem_menu_id);
                break;
        case TUT_BUTTON_ID:
                /* TODO: popup */
index 47e3d10..4ec7145 100644 (file)
@@ -333,6 +333,8 @@ static void _menu_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
 {
        struct _priv *priv = (struct _priv *)data;
 
+       action_menu_parameter am_param = {0,};
+
        if (!obj || !ev || !priv) {
                _ERR("Invalid argument.");
                return;
@@ -361,10 +363,13 @@ static void _menu_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
                ui_app_exit();
 
        if (!strcmp(ev->keyname, KEY_MENU) || !strcmp(ev->keyname, KEY_MENU_EMULATOR)) {
-               viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE, (void *)view_base_get_vclass()->view_id);
-               viewmgr_show_view(VIEW_ACTION_MENU);
-               if (id >= 0 && id < LAYOUT_MAX)
+               if (id >= 0 && id < LAYOUT_MAX) {
+                       am_param.layout_id = _mdata_p[id]->get_lclass()->layout_id;
+                       viewmgr_update_view(VIEW_ACTION_MENU, ACT_MENU_SRC_VIEW_UPDATE,
+                                                               (void *)&am_param);
+                       viewmgr_show_view(VIEW_ACTION_MENU);
                        elm_layout_signal_emit(priv->menu[id], SIG_SELECTED, "");
+               }
        }
 }
 
@@ -459,6 +464,12 @@ static Evas_Object *_create(Evas_Object *win, void *data)
                return NULL;
        }
 
+       /* action menu: */
+       if (!viewmgr_add_view(view_action_menu_get_vclass(), priv->lmgr)) {
+               evas_object_del(priv->base);
+               free(priv);
+       }
+
        return priv->base;
 }
 
@@ -549,6 +560,8 @@ static void _destroy(void *data)
        }
        priv = data;
 
+       viewmgr_remove_view(VIEW_ACTION_MENU);
+
        for (i = 0; i < LAYOUT_MAX; i++)
                layoutmgr_remove_layout(priv->lmgr, _mdata_p[i]->layout_id);