#include #include "../vkbd/vkbd.h" #include "../map/smart_map_priv.h" static void cb_exit(void *data, Evas_Object *obj, void *event_info) { elm_exit(); } static void _cb_hide(void *data, Evas_Object *obj, void *event_info) { struct smart_map *smart = (struct smart_map *)data; overlay_hide(smart, "xxx"); } static void _kbd_show(void *data, Evas_Object *o, void *event_info) { struct controls *ctrl = data; vkbd_show(ctrl->vkbd, 240, 320, NULL); } static void _cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event) { struct smart_map *smart = (struct smart_map *)data; smart->moved = 0; smart->drag = 1; } static void _cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event) { struct smart_map *smart = (struct smart_map *)data; Evas_Event_Mouse_Up *ev = event; double lat = 0, lon = 0; int ox, oy; smart->drag = 0; if(smart->moved) { smart->moved = 0; return; } ox = smart->ta.ox + ev->output.x; oy = smart->ta.oy + ev->output.y; map_to_latlon(smart->li, ox, oy, &lat, &lon); char buffer[512]; snprintf(buffer, 512, "point: %lf * %lf", lat, lon); edje_object_part_text_set(smart->theme, "position", buffer); } static void _cb_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event) { Evas_Event_Mouse_Move *ev = event; struct smart_map *smart = (struct smart_map *)data; Evas_Coord dx, dy; if(!smart->drag) return; smart->moved = 1; dx = ev->cur.canvas.x - ev->prev.canvas.x; dy = ev->cur.canvas.y - ev->prev.canvas.y; e_smart_map_move(smart->obj, -dx, -dy); } void init_clickarea(struct smart_map *smart) { struct controls *ctrl = &smart->c; ctrl->ctrl = evas_object_rectangle_add(smart->evas); evas_object_smart_member_add(ctrl->ctrl, smart->obj); evas_object_color_set(ctrl->ctrl, 0, 0, 0, 0); evas_object_clip_set(ctrl->ctrl, smart->clip); evas_object_repeat_events_set(ctrl->ctrl, 1); evas_object_show(ctrl->ctrl); evas_object_event_callback_add(ctrl->ctrl, EVAS_CALLBACK_MOUSE_DOWN, _cb_mouse_down, smart); evas_object_event_callback_add(ctrl->ctrl, EVAS_CALLBACK_MOUSE_UP, _cb_mouse_up, smart); evas_object_event_callback_add(ctrl->ctrl, EVAS_CALLBACK_MOUSE_MOVE, _cb_mouse_move, smart); } int controls_init(struct smart_map *smart) { struct controls *ctrl; if(!smart || !smart->win) return -1; init_clickarea(smart); ctrl = &smart->c; /* ctrl->bx = elm_box_add(smart->win); evas_object_size_hint_weight_set(ctrl->bx, 1.0, 1.0); elm_win_resize_object_add(smart->win, ctrl->bx); evas_object_show(ctrl->bx); ctrl->bt = elm_hoversel_add(smart->win); elm_hoversel_hover_parent_set(ctrl->bt, smart->obj); elm_hoversel_label_set(ctrl->bt, "Menu"); elm_hoversel_item_add(ctrl->bt, "Item 1", "apps", ELM_ICON_STANDARD, NULL, NULL); elm_hoversel_item_add(ctrl->bt, "Item 2", "arrow_down", ELM_ICON_STANDARD, _cb_hide, smart); elm_hoversel_item_add(ctrl->bt, "Item 3", "home", ELM_ICON_STANDARD, _kbd_show, ctrl); elm_hoversel_item_add(ctrl->bt, "Item 4", "close", ELM_ICON_STANDARD, cb_exit, NULL); evas_object_size_hint_weight_set(ctrl->bt, 1.0, 1.0); evas_object_size_hint_align_set(ctrl->bt, 1.0, 1.0); elm_box_pack_end(ctrl->bx, ctrl->bt); evas_object_show(ctrl->bt); */ #if 0 Evas_Object *bt = elm_button_add(win); elm_button_label_set(bt, "Button"); Evas_Object *bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, 1.0, 1.0); elm_win_resize_object_add(win, bx); elm_box_pack_end(bx, bt); evas_object_show(bx); evas_object_size_hint_align_set(bt, 1.0, -1.0); elm_box_pack_end(bx, bt); evas_object_show(bt); #endif ctrl->vkbd = vkbd_add(smart->evas); return 0; }