summaryrefslogblamecommitdiffstats
path: root/friendfinder/map/controls.c
blob: 89eee55bdecaadbe44e346012d283fb322310a8b (plain) (tree)

















































































































































                                                                                 
#include <Elementary.h>
#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;
}