summaryrefslogtreecommitdiffstats
path: root/friendfinder/map/controls.c
diff options
context:
space:
mode:
Diffstat (limited to 'friendfinder/map/controls.c')
-rw-r--r--friendfinder/map/controls.c146
1 files changed, 146 insertions, 0 deletions
diff --git a/friendfinder/map/controls.c b/friendfinder/map/controls.c
new file mode 100644
index 0000000..89eee55
--- /dev/null
+++ b/friendfinder/map/controls.c
@@ -0,0 +1,146 @@
+#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;
+}