* limitations under the License.
*/
+#include "view/view_action_menu.h"
+#include <app_i18n.h>
+#include <eina_hash.h>
+
#include "app_debug.h"
#include "common/inputmgr.h"
#include "common/layoutmgr.h"
#include "common/utils.h"
-#include "common/viewmgr.h"
#include "define.h"
-#include "view/view_action_menu.h"
enum {
LIVE_TV_BUTTON_ID,
TUT_BUTTON_ID
};
+enum {
+ PICT_MODE_TUT_IX = 0,
+ PICT_CONTR_TUT_IX,
+ PICT_BRIGHT_TUT_IX,
+ PICT_SHARP_TUT_IX,
+ PICT_COLOR_TUT_IX,
+ PICT_TINT_TUT_IX,
+ PICT_SCR_ADJ_TUT_IX,
+ CLOCK_TUT_IX,
+ SLEEP_TIM_TUT_IX,
+ WAKE_UP_TUT_IX,
+ CHANGE_PIN_TUT_IX,
+ CHANGE_LANG_TUT_IX,
+ SUBTITLE_TUT_IX,
+ CHANGE_LOC_TUT_IX,
+ RESET_TUT_IX,
+ SOUND_TUT_IX,
+ CHAN_TUT_IX,
+ NET_TUT_IX
+};
+
#define ACT_MENU_ICO_BTN_STYLE "style.action.menu.icon.button"
#define LIVE_TV_BTN_TXT "Live TV"
#define MORE_FAVS_BTN_TXT "More Favorite"
Evas_Object *reorder_btn;
Evas_Object *fav_btn;
Evas_Object *tut_btn;
+ Evas_Object *tut_popup;
const char *caller_layout_id;
const char *caller_layout_subitem_id;
int caller_layout_subitem_menu_id;
layoutmgr *lmgr;
+ Eina_Hash *view_tut_assoc;
};
/* Class functions: */
static Evas_Object *_create(Evas_Object *win, void *data);
+static Eina_Bool _fill_view_tut_assoc(Eina_Hash *hash);
static void _show(void *data);
static void _hide(void *data);
static void _destroy(void *data);
static void _mouse_cb(int id, void *data, Evas_Object *obj);
static void _keypad_cb(int id, void *data, Evas *e,
Evas_Object *obj, Evas_Event_Key_Down *ev);
+static void _popup_clicked_cb(int id, void *data, Evas_Object *obj);
static view_class _vclass = {
.view_id = VIEW_ACTION_MENU,
.update = _update
};
+const char *tuts_txts[] = {
+ [PICT_MODE_TUT_IX] = PICT_MODE_TUT,
+ [PICT_CONTR_TUT_IX] = PICT_CONTR_TUT,
+ [PICT_BRIGHT_TUT_IX] = PICT_BRIGHT_TUT,
+ [PICT_SHARP_TUT_IX] = PICT_SHARP_TUT,
+ [PICT_COLOR_TUT_IX] = PICT_COLOR_TUT,
+ [PICT_TINT_TUT_IX] = PICT_TINT_TUT,
+ [PICT_SCR_ADJ_TUT_IX] = PICT_SCR_ADJ_TUT,
+ [CLOCK_TUT_IX] = CLOCK_TUT,
+ [SLEEP_TIM_TUT_IX] = SLEEP_TIM_TUT,
+ [WAKE_UP_TUT_IX] = WAKE_UP_TUT,
+ [CHANGE_PIN_TUT_IX] = CHANGE_PIN_TUT,
+ [CHANGE_LANG_TUT_IX] = CHANGE_LANG_TUT,
+ [SUBTITLE_TUT_IX] = SUBTITLE_TUT,
+ [CHANGE_LOC_TUT_IX] = CHANGE_LOC_TUT,
+ [RESET_TUT_IX] = RESET_TUT,
+ [SOUND_TUT_IX] = SOUND_TUT,
+ [CHAN_TUT_IX] = CHAN_TUT,
+ [NET_TUT_IX] = NET_TUT
+};
+
static input_handler _btn_handler = {
.clicked = _mouse_cb,
.key_down = _keypad_cb
};
+static input_handler _popup_handler = {
+ .clicked = _popup_clicked_cb
+};
+
view_class *view_action_menu_get_vclass(void)
{
return &_vclass;
static Evas_Object *_create(Evas_Object *win, void *data)
{
struct _priv *priv = NULL;
- int w = 0;
- int h = 0;
+ Evas_Object *popup_button = NULL;
- evas_object_geometry_get(win, NULL, NULL, &w, &h);
-
- if (!win || !w || !h) {
+ if (!win) {
_ERR("Get window object failed.");
return NULL;
}
return NULL;
}
+ priv->view_tut_assoc = eina_hash_string_superfast_new(NULL);
+ if (!priv->view_tut_assoc || !_fill_view_tut_assoc(priv->view_tut_assoc)) {
+ free(priv);
+ return NULL;
+ }
+
priv->lmgr = (layoutmgr *)data;
priv->action_menu_layout = utils_add_layout(win, GRP_VIEW_ACTION_MENU, EINA_TRUE);
if (!priv->action_menu_layout) {
+ eina_hash_free(priv->view_tut_assoc);
free(priv);
return NULL;
}
if (!priv->live_tv_btn || !priv->more_fav_btn ||
!priv->reorder_btn || !priv->fav_btn || !priv->tut_btn) {
+ eina_hash_free(priv->view_tut_assoc);
evas_object_del(priv->action_menu_layout);
free(priv);
}
-
evas_object_hide(priv->reorder_btn);
evas_object_hide(priv->fav_btn);
evas_object_hide(priv->tut_btn);
+
+ priv->tut_popup = utils_add_popup(priv->action_menu_layout, NULL, STR_TUTORIAL, NULL);
+ if (!priv->tut_popup) {
+ eina_hash_free(priv->view_tut_assoc);
+ evas_object_del(priv->action_menu_layout);
+ free(priv);
+ }
+
+ popup_button = utils_add_button(priv->tut_popup, "button1", NULL, "OK");
+ if (!popup_button) {
+ eina_hash_free(priv->view_tut_assoc);
+ evas_object_del(priv->action_menu_layout);
+ free(priv);
+ }
+
+ inputmgr_add_callback(popup_button, 0, &_popup_handler, priv);
inputmgr_add_callback(priv->live_tv_btn, LIVE_TV_BUTTON_ID, &_btn_handler, priv);
inputmgr_add_callback(priv->more_fav_btn, MORE_FAV_BUTTON_ID, &_btn_handler, priv);
inputmgr_add_callback(priv->reorder_btn, REORDER_BUTTON_ID, &_btn_handler, priv);
inputmgr_add_callback(priv->tut_btn, TUT_BUTTON_ID, &_btn_handler, priv);
if (!viewmgr_set_view_data(VIEW_ACTION_MENU, priv)) {
+ eina_hash_free(priv->view_tut_assoc);
evas_object_del(priv->action_menu_layout);
free(priv);
return NULL;
return priv->action_menu_layout;
}
+static Eina_Bool _fill_view_tut_assoc(Eina_Hash *hash)
+{
+ Eina_Bool res = EINA_TRUE;
+
+ res &= eina_hash_add(hash, VIEW_PICTURE_MODE, (void *)tuts_txts[PICT_MODE_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_PICTURE_CONTRAST, (void *)tuts_txts[PICT_CONTR_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_PICTURE_BRIGHTNESS, (void *)tuts_txts[PICT_BRIGHT_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_PICTURE_SHARPNESS, (void *)tuts_txts[PICT_SHARP_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_PICTURE_COLOR, (void *)tuts_txts[PICT_COLOR_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_PICTURE_TINT, (void *)tuts_txts[PICT_TINT_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_PICTURE_SCREEN_ADJ, (void *)tuts_txts[PICT_SCR_ADJ_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_CLOCK, (void *)tuts_txts[CLOCK_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_SLEEP_TIMER, (void *)tuts_txts[SLEEP_TIM_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_WAKEUP_TIMER, (void *)tuts_txts[WAKE_UP_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_CHANGE_PINCODE, (void *)tuts_txts[CHANGE_PIN_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_LANGUAGE, (void *)tuts_txts[CHANGE_LANG_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_SUBTITLE, (void *)tuts_txts[SUBTITLE_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_LOCATION, (void *)tuts_txts[CHANGE_LOC_TUT_IX]);
+ res &= eina_hash_add(hash, VIEW_RESET, (void *)tuts_txts[RESET_TUT_IX]);
+ res &= eina_hash_add(hash, LAYOUT_ID_SOUND, (void *)tuts_txts[SOUND_TUT_IX]);
+ res &= eina_hash_add(hash, LAYOUT_ID_CHANNEL, (void *)tuts_txts[CHAN_TUT_IX]);
+ res &= eina_hash_add(hash, LAYOUT_ID_NETWORK, (void *)tuts_txts[NET_TUT_IX]);
+
+ return res;
+}
+
static void _show(void *data)
{
struct _priv *priv = (struct _priv *)data;
_ERR("Invalid parameter.");
return;
}
-
+ eina_hash_free(priv->view_tut_assoc);
evas_object_del(priv->action_menu_layout);
free(priv);
}
{
action_menu_parameter *amp = NULL;
struct _priv *vd = (struct _priv *)view_data;
+ const char *tutorial_txt = NULL;
if (!data || !vd)
return;
evas_object_hide(vd->reorder_btn);
evas_object_hide(vd->fav_btn);
evas_object_hide(vd->tut_btn);
+ evas_object_hide(vd->tut_popup);
amp = (action_menu_parameter *)data;
) {
elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN0, vd->fav_btn);
elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN1, vd->reorder_btn);
+ elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN2, vd->tut_btn);
+ tutorial_txt = eina_hash_find(vd->view_tut_assoc , vd->caller_layout_id);
+ elm_object_text_set(vd->tut_popup, _(tutorial_txt));
elm_object_focus_next_object_set(vd->live_tv_btn, vd->fav_btn, ELM_FOCUS_DOWN);
elm_object_focus_next_object_set(vd->more_fav_btn, vd->fav_btn, ELM_FOCUS_UP);
}
) {
elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN0, vd->fav_btn);
elm_layout_content_set(vd->action_menu_layout, PART_ACT_MENU_ICO_BTN1, vd->tut_btn);
+ tutorial_txt = eina_hash_find(vd->view_tut_assoc , vd->caller_layout_subitem_id);
+ elm_object_text_set(vd->tut_popup, _(tutorial_txt));
elm_object_focus_next_object_set(vd->live_tv_btn, vd->fav_btn, ELM_FOCUS_DOWN);
elm_object_focus_next_object_set(vd->more_fav_btn, vd->fav_btn, ELM_FOCUS_UP);
}
UPDATE_REMOVED_FROM_FAV, (void *)priv->caller_layout_subitem_menu_id);
break;
case TUT_BUTTON_ID:
- /* TODO: popup */
- break;
+ viewmgr_pop_view();
+ evas_object_show(priv->tut_popup);
+ evas_object_focus_set(elm_layout_content_get(priv->tut_popup, "button1"), EINA_TRUE);
+ return;
default:
return;
}
if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_ESC))
viewmgr_pop_view();
}
+
+static void _popup_clicked_cb(int id, void *data, Evas_Object *obj)
+{
+ struct _priv *priv = data;
+
+ if (!priv)
+ return;
+
+ evas_object_hide(priv->tut_popup);
+ viewmgr_show_view(VIEW_ACTION_MENU);
+}