summaryrefslogtreecommitdiffstats
path: root/friendfinder/gui.c
diff options
context:
space:
mode:
authorPatrick Hornecker2009-12-21 16:07:36 +0100
committerPatrick Hornecker2009-12-21 16:07:36 +0100
commit3cefadd098bb72a087406ecc09c1c04f1dca0ab5 (patch)
treebbec3ea006ac2abc6bdf52f00ca2b970f27274d9 /friendfinder/gui.c
parentfew changes (diff)
downloadfriendfinder-3cefadd098bb72a087406ecc09c1c04f1dca0ab5.tar.gz
friendfinder-3cefadd098bb72a087406ecc09c1c04f1dca0ab5.tar.xz
friendfinder-3cefadd098bb72a087406ecc09c1c04f1dca0ab5.zip
file locations reorderd, map in gui...build problems on local machine
Diffstat (limited to 'friendfinder/gui.c')
-rw-r--r--friendfinder/gui.c474
1 files changed, 474 insertions, 0 deletions
diff --git a/friendfinder/gui.c b/friendfinder/gui.c
new file mode 100644
index 0000000..868b4c1
--- /dev/null
+++ b/friendfinder/gui.c
@@ -0,0 +1,474 @@
+#include <stdlib.h>
+#include <time.h>
+
+#include "Evas.h"
+#include "Ecore.h"
+#include "Ecore_Evas.h"
+#include "Elementary.h"
+
+#include "msg_sender.h"
+#include "gui.h"
+#include "handler.h"
+#include "receiver.h"
+#include "sender.h"
+
+int h = 600;
+int w = 450;
+
+int first = 0;
+int bubble_pos = 100;
+time_t now;
+const char* msg_text;
+char *from, *to, *current_msg, *last_msg;
+
+static Evas_Object *win, *bbx;
+
+
+
+
+static void on_cancel(void *data, Evas_Object *obj, void *event_info)
+{
+ /* cleanly exit */
+ elm_exit();
+}
+
+static void on_chat(void *data, Evas_Object *obj, void *event_info)
+{
+
+ init_window_parts();
+ init_buttons(obj);
+ init_toolbar(obj);
+
+}
+
+static void on_map(void *data, Evas_Object *obj, void *event_info)
+{
+
+ init_map();
+
+}
+
+static void on_options(void *data, Evas_Object *obj, void *event_info)
+{
+
+ init_options();
+
+}
+
+static void on_message(void *data, Evas_Object *obj, void *event_info)
+{
+
+ msg_text = elm_entry_entry_get(obj);
+ elm_entry_context_menu_clear(obj);
+
+}
+
+static void on_send_message(void *data, Evas_Object *bx3, void *event_info)
+{
+
+ printf("on_send_message: %s\n", msg_text);
+ set_txt_msg(msg_text);
+ Evas_Object *bb1, *bb2, *bb3;
+
+ if (msg_text != NULL)
+ {
+
+ if (first == 0)
+ {
+ bb1 = elm_bubble_add(bx3);
+ evas_object_resize(bb1, w, h/7);
+ evas_object_move(bb1, 0, 0);
+ evas_object_show(bb1);
+ set_bubble_text(bb1, from, msg_text);
+
+ first = 1;
+ bubble_pos = bubble_pos + h/6;
+
+ return;
+ }
+ if (first == 1)
+ {
+ bb2 = elm_bubble_add(bx3);
+ evas_object_resize(bb2, w, h/6);
+ evas_object_move(bb2, 0, bubble_pos);
+ evas_object_show(bb2);
+ set_bubble_text(bb2, from, msg_text);
+
+ first = 2;
+ bubble_pos = bubble_pos + h/6;
+
+ return;
+ }
+ // printf("position: %d\n", bubble_pos);
+
+ if (first == 2)
+ {
+ bb3 = elm_bubble_add(bx3);
+ evas_object_resize(bb3, w, h/6);
+ evas_object_move(bb3, 0, bubble_pos);
+ evas_object_show(bb3);
+ set_bubble_text(bb3, from, msg_text);
+
+ first = 0;
+ bubble_pos = 100;
+
+ return;
+ }
+ }
+}
+
+/* if message has been sent, print it in a bubble */
+void show_message(char *current_msg)
+{
+ Evas_Object *bb1, *bb2, *bb3;
+
+ if (current_msg != NULL)
+ {
+ if (first == 0)
+ {
+ bb1 = elm_bubble_add(bbx);
+ evas_object_resize(bb1, w, h/7);
+ evas_object_move(bb1, 0, 0);
+ evas_object_show(bb1);
+ set_bubble_text(bb1, to, current_msg);
+
+ first = 1;
+ bubble_pos = bubble_pos + h/6;
+ }
+ if (first == 1);
+ {
+ bb2 = elm_bubble_add(bbx);
+ evas_object_resize(bb2, w, h/6);
+ evas_object_move(bb2, 0, bubble_pos);
+ evas_object_show(bb2);
+ set_bubble_text(bb2, to, current_msg);
+
+ first = 2;
+ bubble_pos = bubble_pos + h/6;
+ }
+ if (first == 2)
+ {
+ bb3 = elm_bubble_add(bbx);
+ evas_object_resize(bb3, w, h/6);
+ evas_object_move(bb3, 0, bubble_pos);
+ evas_object_show(bb3);
+ set_bubble_text(bb3, to, current_msg);
+
+ first = 0;
+ bubble_pos = bubble_pos + h/6;
+ }
+ }
+}
+
+/* returns the current system time */
+char* get_current_time()
+{
+
+ time_t now;
+ time(&now);
+ char *text = ctime(&now);
+ return text;
+
+}
+
+
+/* sets the username, time-text and the text in the bubble */
+void set_bubble_text(Evas_Object *bb, char *username, char *text)
+{
+
+ Evas_Object *cn;
+
+ /* sets the username */
+ elm_entry_entry_set(bb, username);
+
+ /* get time string and set it */
+ elm_bubble_info_set(bb, get_current_time());
+
+ /* create entry */
+ cn = elm_entry_add(bb);
+ elm_entry_entry_set(cn, text);
+ elm_entry_line_wrap_set(cn, 0);
+ evas_object_size_hint_weight_set(cn, 1.0, 1.0);
+
+ /* create overlay bubble with message string */
+ Evas_Object *inner_bb;
+ inner_bb = elm_bubble_add(bb);
+ elm_bubble_info_set(inner_bb, text);
+ evas_object_resize(bb, w, h/6);
+ evas_object_move(bb, 0, bubble_pos);
+ elm_bubble_content_set(bb, cn);
+ evas_object_show(bb);
+
+}
+
+void init_window_parts()
+{
+
+ Evas_Object *bg, *bx, *bx2, *bx3, *sc, *en;
+
+ /* add a standard bg */
+ bg = elm_bg_add(win);
+ /* not not allow bg to expand. let's limit dialog size to contents */
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ /* add a box object - default is vertical. a box holds children in a row,
+ * either horizontally or vertically. nothing more. */
+ bx = elm_box_add(win);
+ evas_object_resize(bx, w, h*0.85);
+ evas_object_show(bx);
+
+ /* add horizontal box for buttons */
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, 1);
+ elm_box_homogenous_set(bx2, 1);
+ elm_frame_content_set(bx, bx2);
+ evas_object_move(bx2, 0, h*0.93);
+ evas_object_resize(bx2, w, h*0.05);
+ //elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ /* add box for incoming messages */
+ bx3 = elm_box_add(win);
+ evas_object_resize(bx3, w, h*0.15);
+ evas_object_move(bx3, 0, h*0.78);
+ evas_object_show(bx3);
+
+
+ sc = elm_scroller_add(win);
+ evas_object_size_hint_weight_set(sc, 1.0, 1.0);
+ evas_object_size_hint_align_set(sc, -1.0, -1.0);
+ elm_box_pack_end(bx3, sc);
+
+ en = elm_entry_add(win);
+ //if (text) elm_entry_entry_set(en, text);
+ //else elm_entry_entry_set(en, "");
+ evas_object_size_hint_weight_set(en, 1.0, 1.0);
+ evas_object_size_hint_align_set(en, 0.0, 0.0);
+ elm_scroller_content_set(sc, en);
+ evas_object_smart_callback_add(en, "changed", on_message, NULL);
+ evas_object_show(en);
+
+ evas_object_show(sc);
+
+ /* init buttons */
+ bbx = bx2;
+ init_buttons(bx2);
+
+ /* init toolbar */
+ init_toolbar(win);
+}
+
+void init_toolbar()
+{
+
+ Evas_Object *tb, *ic, *bx;
+
+ /* add box for toolbar */
+ bx = elm_box_add(win);
+ evas_object_resize(bx, w, h*0.15);
+ evas_object_move(bx, 0, 0);
+ evas_object_show(bx);
+
+ tb = elm_toolbar_add(win);
+ evas_object_size_hint_weight_set(tb, 1.0, 0.0);
+ evas_object_size_hint_align_set(tb, -1.0, -1.0);
+
+ ic = elm_icon_add(win);
+ elm_icon_standard_set(ic, "chat");
+ elm_toolbar_item_add(tb, ic, "Chat", on_chat, NULL);
+ evas_object_show(ic);
+
+ ic = elm_icon_add(win);
+ elm_icon_standard_set(ic, "edit");
+ elm_toolbar_item_add(tb, ic, "Options", on_options, NULL);
+ evas_object_show(ic);
+
+ ic = elm_icon_add(win);
+ elm_icon_standard_set(ic, "clock");
+ elm_toolbar_item_add(tb, ic, "Map", on_map, NULL);
+ evas_object_show(ic);
+
+// evas_object_show(ic);
+
+ elm_box_pack_end(bx, tb);
+ evas_object_show(tb);
+}
+
+void init_options()
+{
+
+ Evas_Object *bg, *bx, *bx2, *bt;
+
+ /* add a standard bg */
+ bg = elm_bg_add(win);
+ /* not not allow bg to expand. let's limit dialog size to contents */
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ /* set toolbar again */
+ init_toolbar(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, 1.0, 1.0);
+ evas_object_size_hint_align_set(bx, -1.0, -1.0);
+ evas_object_resize(bx, w, h);
+ evas_object_show(bx);
+
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, 1);
+ evas_object_size_hint_weight_set(bx2, 1.0, 0.0);
+ evas_object_size_hint_align_set(bx2, -1.0, -1.0);
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Stell mich ein");
+ evas_object_size_hint_weight_set(bt, 1.0, 0.0);
+ evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_smart_callback_add(bt, "clicked", NULL, NULL);
+ evas_object_show(bt);
+}
+
+void init_map()
+{
+
+ Evas_Object *bg, *bx, *bx2, *bx3, *map, *bt1, *bt2;
+
+ /* add a standard bg */
+ bg = elm_bg_add(win);
+ /* not not allow bg to expand. let's limit dialog size to contents */
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ /* set toolbar again */
+ init_toolbar(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, 1.0, 1.0);
+ evas_object_size_hint_align_set(bx, -1.0, -1.0);
+ evas_object_resize(bx, w, h);
+ evas_object_show(bx);
+
+ bx2 = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx2, 1.0, 0.0);
+ evas_object_size_hint_align_set(bx2, -1.0, -1.0);
+ evas_object_resize(bx2, w*1.3, h*0.7);
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ bx3 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, 1);
+ evas_object_size_hint_weight_set(bx3, 1.0, 0.0);
+ evas_object_size_hint_align_set(bx3, -1.0, 0.0);
+ evas_object_resize(bx3, w*0.9, h*0.2);
+ elm_box_pack_end(bx, bx3);
+ evas_object_show(bx3);
+
+ map = e_smart_map_add(win, "data/maps/fr_map.eet");
+ e_smart_map_set_pos(map, 47.996578,7.840171);
+ evas_object_size_hint_min_set(map, w-2*8, h-10*8-40);
+ evas_object_size_hint_max_set(map, w-2*8, h-10*8-40);
+ //evas_object_resize(map, w*0.92, h*0.7);
+ elm_box_pack_end(bx2, map);
+ evas_object_show(map);
+
+ bt1 = elm_button_add(win);
+ elm_button_label_set(bt1, "Show friends");
+ evas_object_size_hint_weight_set(bt1, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt1, -1.0, -1.0);
+ elm_box_pack_end(bx3, bt1);
+ evas_object_smart_callback_add(bt1, "clicked", NULL, NULL);
+ evas_object_show(bt1);
+
+ bt2 = elm_button_add(win);
+ elm_button_label_set(bt2, "Hide friends");
+ evas_object_size_hint_weight_set(bt2, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt2, -1.0, -1.0);
+ elm_box_pack_end(bx3, bt2);
+ evas_object_smart_callback_add(bt2, "clicked", NULL, NULL);
+ evas_object_show(bt2);
+
+}
+
+void init_buttons(Evas_Object *box)
+{
+
+ Evas_Object *bt;
+
+ /* add ok button to box - fill and expand */
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Send Message");
+ evas_object_size_hint_weight_set(bt, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ //elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+
+ /* and when clicked - run "on_ok" */
+ bbx = box;
+ evas_object_smart_callback_add(bt, "clicked", on_send_message, NULL);
+
+
+ /* add cancel button to box - fill and expand */
+ bt = elm_button_add(win);
+ elm_button_label_set(bt, "Cancel");
+ evas_object_size_hint_weight_set(bt, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+
+ /* and when clicked - run "on_cancel" */
+ evas_object_smart_callback_add(bt, "clicked", on_cancel, NULL);
+
+}
+
+void elm_main ()
+{
+
+ /* new window - do the usual and give it a name, title and delete handler */
+ win = elm_win_add(NULL, "Main", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Main");
+ evas_object_smart_callback_add(win, "delete,request", on_cancel, NULL);
+
+ /* resize window */
+ evas_object_resize(win, w, h);
+
+ /* init window parts */
+ init_window_parts();
+
+ /* show the window */
+ evas_object_show(win);
+
+ init_ecore_handler(from, to);
+ /* get going and draw/respond to the user */
+ // elm_run();
+
+ /* standard shutdown */
+ elm_exit();
+
+}
+
+int main (int argc, char **argv)
+{
+ if (argv[1] == NULL && argv[2] == NULL)
+ {
+ printf("no nick and no receiver set");
+ from == NULL;
+ to == NULL;
+ }
+ else
+ {
+ from = argv[1];
+ to = argv[2];
+ }
+
+ elm_init(argc, argv);
+
+ elm_main();
+
+ elm_shutdown();
+
+ return 0;
+
+}