#include <Elementary.h>
#include <viewmgr.h>
#include <inputmgr.h>
+#include <app_control.h>
#include <app_debug.h>
+#include <app_define.h>
#include "define.h"
#include "util.h"
#define SCROLLER_STEP_SIZE 334
#define TAG_FAVORITE "TAG_FAVORITE"
+#define KEY_BUTTON "KEY_BUTTON"
#define STYLE_LIVETV_BTN "style.livetv.button"
#define STYLE_ACTION_MENU_BTN "style.action.menu.button"
}
}
-static void _button_clicked(Evas_Object *obj, int id, void *data)
+static void _launch_favorite(void)
{
- struct _button *button;
+ app_control_h app_ctrl;
+ int r;
- if (!data) {
- _ERR("failed to get data");
+ r = app_control_create(&app_ctrl);
+ if (r != APP_CONTROL_ERROR_NONE) {
+ _ERR("failed to create app control handle");
return;
}
- button = data;
+ r = app_control_set_operation(app_ctrl, APP_CONTROL_OPERATION_DEFAULT);
+ if (r != APP_CONTROL_ERROR_NONE) {
+ _ERR("failed to set app control operation");
+ app_control_destroy(app_ctrl);
+ return;
+ }
+
+ r = app_control_set_app_id(app_ctrl, APP_ID_FAVORITE);
+ if (r != APP_CONTROL_ERROR_NONE) {
+ _ERR("failed to set app control app id");
+ app_control_destroy(app_ctrl);
+ return;
+ }
- if (button->clicked)
- button->clicked();
+ r = app_control_send_launch_request(app_ctrl, NULL, NULL);
+ if (r != APP_CONTROL_ERROR_NONE) {
+ _ERR("failed to send app control launch request");
+ app_control_destroy(app_ctrl);
+ return;
+ }
- _update_button_state(obj, button);
+ app_control_destroy(app_ctrl);
+}
+
+static void _button_clicked(Evas_Object *obj, int id, void *data)
+{
+ struct _button *button;
+
+ switch (id) {
+ case BUTTON_MORE:
+ _launch_favorite();
+
+ viewmgr_hide_view(VIEW_ACTION_MENU);
+ break;
+ case BUTTON_FAV:
+ case BUTTON_LOCK:
+ case BUTTON_CHANNEL:
+ button = evas_object_data_get(obj, KEY_BUTTON);
+ if (!button) {
+ _ERR("failed to get button");
+ return;
+ }
+
+ if (button->clicked)
+ button->clicked();
+
+ _update_button_state(obj, button);
+
+ break;
+ }
}
static void _button_key_up_cb(int id, void *data, Evas *e, Evas_Object *obj,
util_add_icon(btn, IMAGE_FAVORITE_DEFAULT, PART_CONTENT);
inputmgr_add_callback(btn, channel_info->service_id,
&favorite_handler, NULL);
- inputmgr_set_tags(btn, TAG_FAVORITE);
+ inputmgr_set_tags(btn, TAG_FAVORITE, VIEW_ACTION_MENU);
elm_box_pack_end(priv->favorite, btn);
PART_ICON_1_SELECTED);
util_add_icon(btn, buttons[i].data[TOGGLE].disabled,
PART_ICON_1_DISABLED);
+ evas_object_data_set(btn, KEY_BUTTON, &buttons[i]);
inputmgr_add_callback(btn, buttons[i].id,
- &button_handler, &buttons[i]);
+ &button_handler, priv);
+ inputmgr_set_tags(btn, VIEW_ACTION_MENU);
col = i % ITEMS_IN_ROW;
row = i / ITEMS_IN_ROW;
_ERR("failed to create more button");
return false;
}
+ inputmgr_add_callback(btn, BUTTON_MORE,
+ &button_handler, priv);
+ inputmgr_set_tags(btn, VIEW_ACTION_MENU);
return true;
}
viewmgr_set_view_data(VIEW_ACTION_MENU, priv);
inputmgr_add_callback(priv->base, 0, &key_handler, priv);
+ inputmgr_set_tags(priv->base, VIEW_ACTION_MENU);
elm_layout_signal_callback_add(priv->base, SIGNAL_HIDE_FINISHED,
SOURCE_ELM, _hide_finished_cb, priv);
static void _destroy(void *data)
{
struct _priv *priv;
- int i;
if (!data) {
_ERR("failed to get data");
}
priv = data;
- inputmgr_remove_callback(priv->base, &key_handler);
-
- i = 0;
- while (i < BUTTON_MAX && priv->menu_btn[i]) {
- inputmgr_remove_callback(priv->menu_btn[i], &button_handler);
- i++;
- }
-
- inputmgr_remove_all_by_tag(TAG_FAVORITE);
+ inputmgr_remove_all_by_tag(VIEW_ACTION_MENU);
evas_object_del(priv->base);