--- /dev/null
+/*
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+group {
+ name, "elm/button/base/action_menu_reset";
+ data.item, "focus_highlight" "on";
+ images {
+ image, "btn_menu_reset_nor.png" COMP;
+ image, "btn_menu_reset_foc.png" COMP;
+ image, "btn_menu_reset_dis.png" COMP;
+ }
+ parts {
+ part {
+ name, "bg";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 124 124;
+ }
+ description {
+ state, "focus" 0.0;
+ inherit, "default" 0.0;
+ color, 0 119 246 255;
+ }
+ description {
+ state, "disable" 0.0;
+ inherit, "default" 0.0;
+ }
+ }
+ part {
+ name, "pad.icon";
+ type, SPACER;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 14;
+ rel1.relative, 0.5 0.0;
+ rel2.relative, 0.5 0.0;
+ fixed, 1 1;
+ align, 0.5 0.0;
+ }
+ }
+ part {
+ name, "icon";
+ type, IMAGE;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 60 60;
+ rel1 {
+ to, "pad.icon";
+ relative, 0.5 1.0;
+ }
+ rel2 {
+ to, "pad.icon";
+ relative, 0.5 1.0;
+ }
+ fixed, 1 1;
+ align, 0.5 0.0;
+ image.normal, "btn_menu_reset_nor.png";
+ }
+ description {
+ state, "focus" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "btn_menu_reset_foc.png";
+ }
+ description {
+ state, "disable" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "btn_menu_reset_dis.png";
+ }
+ }
+ part {
+ name, "pad.text";
+ type, SPACER;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ min, 0 6;
+ rel1 {
+ to, "icon";
+ relative, 0.5 1.0;
+ }
+ rel2 {
+ to, "icon";
+ relative, 0.5 1.0;
+ }
+ fixed, 1 1;
+ align, 0.5 0.0;
+ }
+ }
+ part {
+ name, "elm.text";
+ type, TEXT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ rel1 {
+ to, "pad.text";
+ relative, 0.5 1.0;
+ }
+ rel2 {
+ to, "pad.text";
+ relative, 0.5 1.0;
+ }
+ min, 108 20;
+ fixed, 1 1;
+ align, 0.5 0.0;
+ color, 104 104 104 255;
+ text {
+ font, "TizenSans";
+ size, 20;
+ }
+ }
+ description {
+ state, "focus" 0.0;
+ inherit, "default" 0.0;
+ color, 255 255 255 255;
+ }
+ description {
+ state, "disable" 0.0;
+ inherit, "default" 0.0;
+ color, 104 104 104 125;
+ }
+
+ }
+ }
+ programs {
+ program {
+ name, "focused";
+ signal, "elm,action,focus";
+ source, "elm";
+ action, STATE_SET "focus" 0.0;
+ transition, DECEL 0.2;
+ target, "bg";
+ target, "elm.text";
+ target, "icon";
+ }
+ program {
+ name, "unfocused";
+ signal, "elm,action,unfocus";
+ source, "elm";
+ action, STATE_SET "default" 0.0;
+ transition, DECEL 0.2;
+ target, "bg";
+ target, "elm.text";
+ target, "icon";
+ }
+ program {
+ name, "diabled";
+ signal, "elm,state,disabled";
+ source, "elm";
+ action, STATE_SET "disable" 0.0;
+ target, "bg";
+ target, "elm.text";
+ target, "icon";
+ }
+ }
+}
+group {
+ name, "elm/button/base/action_menu_delete";
+ inherit, "elm/button/base/action_menu_reset";
+ images {
+ image, "btn_menu_del_nor.png" COMP;
+ image, "btn_menu_del_foc.png" COMP;
+ image, "btn_menu_del_dis.png" COMP;
+ }
+ parts {
+ part {
+ name, "icon";
+ description {
+ state, "default" 0.0;
+ image.normal, "btn_menu_del_nor.png";
+ }
+ description {
+ state, "focus" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "btn_menu_del_foc.png";
+ }
+ description {
+ state, "disable" 0.0;
+ inherit, "default" 0.0;
+ image.normal, "btn_menu_del_dis.png";
+ }
+ }
+ }
+}
+group {
+ name, "elm/button/base/action_menu_empty";
+ inherit, "elm/button/base/action_menu_reset";
+ parts {
+ part {
+ name, "icon";
+ type, RECT;
+ scale, 1;
+ description {
+ state, "default" 0.0;
+ }
+ }
+ }
+}
#include "view.h"
#include "utils.h"
-#define ACTION_MENU_TITLE_RESET "Reset"
+#define TITLE_ACTION_MENU_RESET "Reset"
+#define TITLE_ACTION_MENU_DELETE "Delete"
#define COUNT_MENU_ITEM 4
enum input_handler_type {
INPUT_HANDLER_TYPE_BTN,
- INPUT_HANDLER_TYPE_ITEM_RESET,
- INPUT_HANDLER_TYPE_RESET,
- INPUT_HANDLER_TYPE_DISCARD,
- INPUT_HANDLER_TYPE_CANCEL
+ INPUT_HANDLER_TYPE_MENU_RESET,
+ INPUT_HANDLER_TYPE_MENU_DELETE,
+ INPUT_HANDLER_TYPE_MENU_EMPTY,
+ INPUT_HANDLER_TYPE_POPUP_RESET,
+ INPUT_HANDLER_TYPE_POPUP_DISCARD,
+ INPUT_HANDLER_TYPE_POPUP_CANCEL
};
struct _priv {
bool edited;
};
-struct _btn_info {
- char *icon;
- char *focus_icon;
- char *dis_icon;
- char *title;
- int handler_id;
+struct _menu_info {
+ const char *style;
+ const char *title;
+ int id;
+ Eina_Bool disable;
+};
+
+static struct _menu_info menu_info[] = {
+ {
+ .style = STYLE_BTN_ACTION_MENU_RESET,
+ .title = TITLE_ACTION_MENU_RESET,
+ .id = INPUT_HANDLER_TYPE_MENU_RESET,
+ .disable = EINA_FALSE
+ },
+ {
+ .style = STYLE_BTN_ACTION_MENU_EMPTY,
+ .title = NULL,
+ .id = INPUT_HANDLER_TYPE_MENU_EMPTY,
+ .disable = EINA_TRUE
+
+ },
+ {
+ .style = STYLE_BTN_ACTION_MENU_EMPTY,
+ .title = NULL,
+ .id = INPUT_HANDLER_TYPE_MENU_EMPTY,
+ .disable = EINA_TRUE
+ },
+ {
+ .style = STYLE_BTN_ACTION_MENU_EMPTY,
+ .title = NULL,
+ .id = INPUT_HANDLER_TYPE_MENU_EMPTY,
+ .disable = EINA_TRUE
+ }
};
static void _focused(int id, void *data, Evas_Object *obj,
_add_popup(priv, MESSAGE_DISCARD,
MESSAGE_DISCARD_CONTENTS,
MESSAGE_DISCARD,
- INPUT_HANDLER_TYPE_DISCARD,
+ INPUT_HANDLER_TYPE_POPUP_DISCARD,
MESSAGE_CANCEL,
- INPUT_HANDLER_TYPE_CANCEL);
+ INPUT_HANDLER_TYPE_POPUP_CANCEL);
return;
}
viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL);
utils_launch_app(APP_ID_LIVETV, NULL, NULL);
break;
- case INPUT_HANDLER_TYPE_ITEM_RESET:
+ case INPUT_HANDLER_TYPE_MENU_RESET:
_add_popup(priv, MESSAGE_RESET, MESSAGE_RESET_CONTENTS,
- MESSAGE_RESET, INPUT_HANDLER_TYPE_RESET,
- MESSAGE_CANCEL, INPUT_HANDLER_TYPE_CANCEL);
+ MESSAGE_RESET, INPUT_HANDLER_TYPE_POPUP_RESET,
+ MESSAGE_CANCEL,
+ INPUT_HANDLER_TYPE_POPUP_CANCEL);
break;
- case INPUT_HANDLER_TYPE_DISCARD:
+ case INPUT_HANDLER_TYPE_POPUP_DISCARD:
viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL);
viewmgr_hide_view(VIEW_ACTION_MENU);
viewmgr_hide_view(VIEW_USER_EDIT);
utils_launch_app(APP_ID_LIVETV, NULL, NULL);
break;
- case INPUT_HANDLER_TYPE_RESET:
+ case INPUT_HANDLER_TYPE_POPUP_RESET:
viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL);
viewmgr_hide_view(VIEW_ACTION_MENU);
_delete_popup(priv, obj);
break;
- case INPUT_HANDLER_TYPE_CANCEL:
+ case INPUT_HANDLER_TYPE_POPUP_CANCEL:
_delete_popup(priv, obj);
break;
default:
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
switch (id) {
case INPUT_HANDLER_TYPE_BTN:
- case INPUT_HANDLER_TYPE_ITEM_RESET:
+ case INPUT_HANDLER_TYPE_MENU_RESET:
+ case INPUT_HANDLER_TYPE_MENU_DELETE:
viewmgr_hide_view(VIEW_ACTION_MENU);
break;
- case INPUT_HANDLER_TYPE_RESET:
- case INPUT_HANDLER_TYPE_DISCARD:
- case INPUT_HANDLER_TYPE_CANCEL:
+ case INPUT_HANDLER_TYPE_POPUP_RESET:
+ case INPUT_HANDLER_TYPE_POPUP_DISCARD:
+ case INPUT_HANDLER_TYPE_POPUP_CANCEL:
if (priv->popup)
_delete_popup(priv, obj);
break;
_ERR("failed to add btn");
return false;
}
+ elm_object_focus_next_object_set(btn, btn, ELM_FOCUS_LEFT);
inputmgr_add_callback(btn, INPUT_HANDLER_TYPE_BTN, &handler, priv);
priv->btn = btn;
return base;
}
-static void _add_empty_item(struct _priv *priv, int index)
+static void _update_focus_sequence(struct _priv *priv)
{
- int i;
- Evas_Object *item;
+ Eina_List *l;
+ Evas_Object *item, *eo;
- for (i = index; i < COUNT_MENU_ITEM; i++) {
- item = utils_add_layout(priv->tbl, GRP_ACTION_MENU_TABLE_ITEM,
- false, NULL);
- if (!item) {
- _ERR("failed to add item");
- return;
+ eo = NULL;
+ EINA_LIST_FOREACH(priv->list, l, item) {
+ if (!elm_object_disabled_get(item)) {
+ eo = item;
+ break;
}
-
- evas_object_show(item);
- elm_table_pack(priv->tbl, item, i, 0, 1, 1);
- priv->list = eina_list_append(priv->list, item);
}
+
+ if (eo) {
+ elm_object_focus_next_object_set(priv->btn, eo, ELM_FOCUS_DOWN);
+ elm_object_focus_next_object_set(eo, eo, ELM_FOCUS_LEFT);
+ } else
+ elm_object_focus_next_object_set(priv->btn, priv->btn,
+ ELM_FOCUS_DOWN);
}
-static bool _add_item(struct _priv *priv)
+static bool _add_menu_item(struct _priv *priv)
{
- Evas_Object *item, *ic, *focus_ic, *lbl, *focus_lbl, *bg;
- struct _btn_info btn_info[] = {
- {
- IMAGE_ACTION_MENU_ICON_RESET,
- IMAGE_ACTION_MENU_ICON_RESET_FOCUS,
- IMAGE_ACTION_MENU_ICON_RESET_DIS,
- ACTION_MENU_TITLE_RESET,
- INPUT_HANDLER_TYPE_ITEM_RESET
- }
- };
+ Evas_Object *item;
int i;
- for (i = 0; i < sizeof(btn_info) / sizeof(*btn_info); i++) {
- item = utils_add_layout(priv->tbl, GRP_ACTION_MENU_TABLE_ITEM,
- priv->edited, NULL);
+ for (i = 0; i < COUNT_MENU_ITEM; i++) {
+ item = elm_button_add(priv->tbl);
if (!item) {
_ERR("failed to add item");
return false;
}
+ elm_object_style_set(item, menu_info[i].style);
+ elm_object_text_set(item, menu_info[i].title);
+ inputmgr_add_callback(item, menu_info[i].id, &handler,
+ priv);
+ evas_object_show(item);
+ elm_table_pack(priv->tbl, item, i, 0, 1, 1);
- ic = utils_add_icon(item, priv->edited ?
- btn_info[i].icon : btn_info[i].dis_icon,
- PART_ACTION_MENU_TABLE_ITEM_ICON);
- if (!ic)
- goto err;
+ if ((i == 0 && !priv->edited) || menu_info[i].disable)
+ elm_object_disabled_set(item, EINA_TRUE);
- lbl = utils_add_label(item, btn_info[i].title,
- priv->edited ? STYLE_LABEL_ACTION_MENU_TITLE :
- STYLE_LABEL_ACTION_MENU_TITLE_DIS,
- PART_ACTION_MENU_TABLE_ITEM_TEXT);
- if (!lbl)
- goto err;
+ elm_object_focus_next_object_set(item, item, ELM_FOCUS_DOWN);
- if (priv->edited) {
- focus_ic = utils_add_icon(item, btn_info[i].focus_icon,
- PART_ACTION_MENU_TABLE_ITEM_ICON_FOCUS);
- if (!focus_ic)
- goto err;
-
- focus_lbl = utils_add_label(item, btn_info[i].title,
- STYLE_LABEL_ACTION_MENU_TITLE_FOCUS,
- PART_ACTION_MENU_TABLE_ITEM_TEXT_FOCUS);
- if (!focus_lbl)
- goto err;
-
- bg = utils_add_bg(item, COLOR_DEFAULT_R,
- COLOR_DEFAULT_G, COLOR_DEFAULT_B,
- COLOR_DEFAULT_A,
- PART_ACTION_MENU_TABLE_ITEM_BG);
- if (!bg)
- goto err;
-
- inputmgr_add_callback(item, btn_info[i].handler_id,
- &handler, priv);
- }
- evas_object_show(item);
- elm_table_pack(priv->tbl, item, i, 0, 1, 1);
priv->list = eina_list_append(priv->list, item);
}
- _add_empty_item(priv, i);
+ _update_focus_sequence(priv);
return true;
-err:
- evas_object_del(item);
- return false;
}
static void _show(void *data)
priv = data;
- if (!_add_item(priv)) {
+ if (!_add_menu_item(priv)) {
_ERR("failed to add item");
return;
}