summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJehun Lim <jehun.lim@samsung.com>2015-12-04 14:27:35 +0900
committerJehun Lim <jehun.lim@samsung.com>2015-12-07 13:20:12 +0900
commit1369e843cb53187d125ff530e5f6540028c96cbc (patch)
treeb50bfb747b59dbdf6095498f4e101b18db496904 /src
parent73f71371d7592c0aa5885b8929cb32d203a7dc4f (diff)
downloadair_mediahub-1369e843cb53187d125ff530e5f6540028c96cbc.tar.gz
air_mediahub-1369e843cb53187d125ff530e5f6540028c96cbc.tar.bz2
air_mediahub-1369e843cb53187d125ff530e5f6540028c96cbc.zip
base: add source button
Change-Id: I68b4d7a97ae94bfded5189a2d0effcd895e16baf Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/view/base.c71
1 files changed, 68 insertions, 3 deletions
diff --git a/src/view/base.c b/src/view/base.c
index 4aa3680..111b3ef 100644
--- a/src/view/base.c
+++ b/src/view/base.c
@@ -44,7 +44,8 @@
enum _object_type {
BASE_MENU_BTN = 0,
- BASE_VIEW_BTN
+ BASE_VIEW_BTN,
+ BASE_SOURCE_BTN
};
enum _layout_type {
@@ -59,6 +60,7 @@ struct _priv {
Evas_Object *base;
Evas_Object *menu_btn[E_LAYOUT_MAX];
Evas_Object *view_btn;
+ Evas_Object *source_btn;
Evas_Object *focused_btn;
@@ -73,6 +75,7 @@ struct _priv {
int current_layout;
int view_mode[E_LAYOUT_MAX];
+ int source_type;
};
const char *view_mode_movie[] = {
@@ -97,6 +100,11 @@ const char *view_mode_music[] = {
"Folder"
};
+const char *source[] = {
+ "TV",
+ "USB",
+};
+
struct _menu_item {
const char *name;
const char *layout_id;
@@ -142,6 +150,8 @@ static void _set_current_layout(struct _priv *priv, int layout)
elm_object_text_set(priv->view_btn,
g_menu_item[layout].text_view_mode[mode]);
+ elm_object_text_set(priv->source_btn, source[priv->source_type]);
+
if (priv->focused_btn)
elm_object_signal_emit(priv->focused_btn,
SIG_BTN_UNSELECTED, SIG_SOURCE_SRC);
@@ -197,6 +207,11 @@ static void _view_selected_cb(void *data, int mode)
priv->view_mode[cur] = mode;
}
+static void _source_selected_cb(void *data, int mode)
+{
+ /* It will be implemented later */
+}
+
static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
@@ -274,6 +289,30 @@ static void _view_btn_clicked(struct _priv *priv)
priv->cpopup = cpopup;
}
+static void _source_btn_clicked(struct _priv *priv)
+{
+ struct ctxpopup *cpopup;
+ int x, y, w, h;
+
+ elm_object_signal_emit(priv->source_btn, SIG_BTN_SELECTED,
+ SIG_SOURCE_SRC);
+
+ cpopup = ctxpopup_create(priv->base, STYLE_CTXPOPUP_VIEW_MODE,
+ STYLE_BTN_VIEW_OPTION, source, ARRAY_SIZE(source),
+ priv->source_type);
+ if (!cpopup) {
+ _ERR("failed to create ctxpopup");
+ return;
+ }
+
+ ctxpopup_set_callback(cpopup, _source_selected_cb, priv);
+
+ evas_object_geometry_get(priv->source_btn, &x, &y, &w, &h);
+ ctxpopup_show(cpopup, x + (w / 2), y);
+
+ priv->cpopup = cpopup;
+}
+
static void _clicked_cb(int id, void *data, Evas_Object *obj)
{
struct _priv *priv;
@@ -289,6 +328,9 @@ static void _clicked_cb(int id, void *data, Evas_Object *obj)
case BASE_VIEW_BTN:
_view_btn_clicked(priv);
break;
+ case BASE_SOURCE_BTN:
+ _source_btn_clicked(priv);
+ break;
default:
break;
}
@@ -634,13 +676,33 @@ static bool _draw_view_mode_btn(struct _priv *priv)
elm_object_part_content_set(priv->base, PART_BASE_VIEW_MODE, btn);
- elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_RIGHT);
-
priv->view_btn = btn;
return true;
}
+static bool _draw_source_btn(struct _priv *priv)
+{
+ Evas_Object *btn;
+
+ btn = util_add_button(priv->base, STYLE_BTN_VIEW_MODE, NULL);
+ if (!btn) {
+ _ERR("failed to add button object");
+ return false;
+ }
+
+ inputmgr_add_callback(btn, BASE_SOURCE_BTN, &handler, priv);
+
+ elm_object_part_content_set(priv->base, PART_BASE_SOURCE, btn);
+
+ priv->source_btn = btn;
+
+ elm_object_focus_next_object_set(btn, priv->view_btn, ELM_FOCUS_LEFT);
+ elm_object_focus_next_object_set(priv->view_btn, btn, ELM_FOCUS_RIGHT);
+
+ return true;
+}
+
static bool _draw_items(struct _priv *priv)
{
if (!priv)
@@ -655,6 +717,9 @@ static bool _draw_items(struct _priv *priv)
if (!_draw_view_mode_btn(priv))
return false;
+ if (!_draw_source_btn(priv))
+ return false;
+
return true;
}