#define STATE_PAUSE 1
group {
+ name: "elm/button/base/menu_btn";
+ data.item: "focus_highlight" "on";
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 200 81;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ color: COLOR_BTN_FOCUS;
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part {
+ name: "elm.text";
+ type: TEXT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ text {
+ font: FONT_LIGHT;
+ size: 31;
+ align: 0.5 0.5;
+ }
+ min: 82 0;
+ align: 0.0 0.5;
+ color: COLOR_TEXT_MENU;
+ align: 0.0 0.0;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ text.font: "TizenSans";
+ color: COLOR_TEXT_FOCUS;
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text.font: "TizenSans";
+ color: COLOR_TEXT_SELECTED;
+ }
+ }
+ part {
+ name: "bottom_line";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "bg";
+ relative: 0.5 1.0;
+ }
+ rel2 {
+ to: "bg";
+ relative: 0.5 1.0;
+ }
+ min: 142 3;
+ align: 0.5 1.0;
+ color: 0 0 0 0;
+ fixed: 1 1;
+ }
+ description {
+ state: "focused" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: COLOR_BTN_SELECTED;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "focused";
+ signal: "elm,action,focus";
+ source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "bg";
+ target: "elm.text";
+ target: "bottom_line";
+ transition: LINEAR 0.17;
+ }
+ program {
+ name: "unfocused";
+ signal: "elm,action,unfocus";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "elm.text";
+ target: "bottom_line";
+ transition: LINEAR 0.17;
+ }
+ }
+}
+
+group {
name: "elm/button/base/viewer_btn_prev";
data.item, "focus_highlight" "on";
images {
#include <Elementary.h>
#include <app_debug.h>
+#include <inputmgr.h>
#include <viewmgr.h>
#include <layoutmgr.h>
#include "define.h"
#include "layout.h"
+#define TITLE_TEXT "Media Hub"
+
+#define MENU_BTN_SIZE 3
+
struct _priv {
Evas_Object *win;
Evas_Object *base;
+ Evas_Object *btn[MENU_BTN_SIZE];
layoutmgr *lmgr;
+
+ int current_layout;
+};
+
+struct _menu_item {
+ const char *name;
+ const char *layout_id;
};
+static struct _menu_item g_menu_item[MENU_BTN_SIZE] = {
+ {
+ "Movie",
+ LAYOUT_MOVIE
+ },
+ {
+ "Gallery",
+ LAYOUT_GALLERY
+ },
+ {
+ "Music",
+ LAYOUT_MUSIC
+ }
+};
+
+static void _mouse_move_cb(int id, void *data, Evas *e,
+ Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+{
+ if (!elm_object_focus_get(obj))
+ elm_object_focus_set(obj, EINA_TRUE);
+}
+
+static void _focused_cb(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *it)
+{
+ struct _priv *priv;
+ int i;
+
+ if (!data) {
+ _ERR("failed to get data");
+ return;
+ }
+
+ priv = data;
+
+ for (i = 0; i < MENU_BTN_SIZE; i++) {
+ if (priv->btn[i] == obj)
+ break;
+ }
+
+ if (i == priv->current_layout || i == MENU_BTN_SIZE)
+ return;
+
+ layoutmgr_hide_layout(priv->lmgr,
+ g_menu_item[priv->current_layout].layout_id);
+ layoutmgr_show_layout(priv->lmgr, g_menu_item[i].layout_id);
+
+ priv->current_layout = i;
+}
+
+static input_handler handler = {
+ .mouse_move = _mouse_move_cb,
+ .focused = _focused_cb
+};
+
+static bool _draw_title(struct _priv *priv)
+{
+ if (!priv)
+ return false;
+
+ elm_object_part_text_set(priv->base, PART_TITLE, TITLE_TEXT);
+
+ return true;
+}
+
+static bool _draw_menu_btn(struct _priv *priv)
+{
+ Evas_Object *box, *btn;
+ int i;
+
+ if (!priv)
+ return false;
+
+ box = elm_box_add(priv->base);
+ if (!box) {
+ _ERR("failed to create box object");
+ return false;
+ }
+
+ elm_box_horizontal_set(box, EINA_TRUE);
+
+ evas_object_size_hint_weight_set(box,
+ EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ for (i = 0; i < MENU_BTN_SIZE; i++) {
+ btn = elm_button_add(box);
+ if (!btn) {
+ _ERR("failed to create button object");
+ return false;
+ }
+
+ elm_object_style_set(btn, STYLE_MENU_BTN);
+ elm_object_text_set(btn, g_menu_item[i].name);
+
+ elm_box_pack_end(box, btn);
+
+ evas_object_show(btn);
+
+ inputmgr_add_callback(btn, 0, &handler, priv);
+
+ priv->btn[i] = btn;
+ }
+
+ evas_object_show(box);
+
+ elm_object_part_content_set(priv->base, PART_MENU_AREA, box);
+
+ elm_object_focus_set(priv->btn[0], EINA_TRUE);
+
+ elm_object_focus_next_object_set(priv->btn[MENU_BTN_SIZE - 1],
+ priv->btn[0], ELM_FOCUS_RIGHT);
+ elm_object_focus_next_object_set(priv->btn[0],
+ priv->btn[MENU_BTN_SIZE - 1], ELM_FOCUS_LEFT);
+
+ return true;
+}
+
+static bool _draw_items(struct _priv *priv)
+{
+ if (!priv)
+ return false;
+
+ if (!_draw_title(priv))
+ return false;
+
+ if (!_draw_menu_btn(priv))
+ return false;
+
+ return true;
+}
+
static Evas_Object *_create(Evas_Object *win, void *data)
{
struct _priv *priv;
priv->base = base;
priv->lmgr = lmgr;
+ if (!_draw_items(priv)) {
+ _ERR("failed to draw items");
+ free(priv);
+ return NULL;
+ }
+
viewmgr_set_view_data(VIEW_BASE, priv);
return base;
static void _destroy(void *view_data)
{
struct _priv *priv;
+ int i;
if (!view_data) {
_ERR("failed to get view data");
priv = view_data;
+ for (i = 0; i < MENU_BTN_SIZE; i++)
+ inputmgr_remove_callback(priv->btn[i], &handler);
+
+ layoutmgr_remove_layout(priv->lmgr, LAYOUT_MOVIE);
+ layoutmgr_remove_layout(priv->lmgr, LAYOUT_GALLERY);
+ layoutmgr_remove_layout(priv->lmgr, LAYOUT_MUSIC);
+
layoutmgr_destroy(priv->lmgr);
+
evas_object_del(priv->base);
free(priv);