base: add source button 51/53451/1
authorJehun Lim <jehun.lim@samsung.com>
Fri, 4 Dec 2015 05:27:35 +0000 (14:27 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Mon, 7 Dec 2015 04:20:12 +0000 (13:20 +0900)
Change-Id: I68b4d7a97ae94bfded5189a2d0effcd895e16baf
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/view/base.h
res/edc/view/base.edc
src/view/base.c

index 22d7073..06b5959 100644 (file)
@@ -29,6 +29,7 @@
 #define PART_BASE_MENU_AREA "part.base_menu_area"
 #define PART_BASE_THUMBNAIL_AREA "part.base_thumbnail_area"
 #define PART_BASE_VIEW_MODE "part.base_view_mode"
+#define PART_BASE_SOURCE "part.base_source"
 #define PART_BASE_CONTENT_INFO "part.base_content_info"
 
 #define PART_ITEM_TITLE "part.item_title"
index 9b4f346..e0290e3 100644 (file)
@@ -221,6 +221,38 @@ group {
                                color: COLOR_TEXT_INDEX;
                        }
                }
+               part {
+                       name: "padding_source";
+                       type: SPACER;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "bottom_area";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2.to: "bottom_area";
+                               min: 62 0;
+                               align: 1.0 0.5;
+                               fixed: 1 0;
+                       }
+               }
+               part {
+                       name: PART_BASE_SOURCE;
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to: "padding_source";
+                               rel2 {
+                                       to: "padding_source";
+                                       relative: 0.0 1.0;
+                               }
+                               min: 218 0;
+                               align: 1.0 0.5;
+                               fixed: 1 0;
+                       }
+               }
 
                /* CURTAIN */
                part {
index 4aa3680..111b3ef 100644 (file)
@@ -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;
 }