summaryrefslogtreecommitdiffstats
path: root/friendfinder
diff options
context:
space:
mode:
authorPatrick Hornecker2010-01-07 16:50:09 +0100
committerPatrick Hornecker2010-01-07 16:50:09 +0100
commitfcbf71d5ef90a51b3b8c75b9c0daeff6297f8068 (patch)
tree67a2b99ce0319021eab34e4679073d8de8628626 /friendfinder
parentuser are shown on map, sender sends his current position (diff)
downloadfriendfinder-fcbf71d5ef90a51b3b8c75b9c0daeff6297f8068.tar.gz
friendfinder-fcbf71d5ef90a51b3b8c75b9c0daeff6297f8068.tar.xz
friendfinder-fcbf71d5ef90a51b3b8c75b9c0daeff6297f8068.zip
options implemented
Diffstat (limited to 'friendfinder')
-rw-r--r--friendfinder/draw_user.c13
-rw-r--r--friendfinder/draw_user.h6
-rw-r--r--friendfinder/gui.c202
-rw-r--r--friendfinder/gui.h1
-rw-r--r--friendfinder/map/object.c8
-rw-r--r--friendfinder/receiver.c32
-rw-r--r--friendfinder/receiver.h2
-rw-r--r--friendfinder/sender.c29
-rw-r--r--friendfinder/sender.h5
9 files changed, 264 insertions, 34 deletions
diff --git a/friendfinder/draw_user.c b/friendfinder/draw_user.c
index c125ecc..bf08f61 100644
--- a/friendfinder/draw_user.c
+++ b/friendfinder/draw_user.c
@@ -11,6 +11,7 @@
int _h= 600;
int _w = 450;
int _distance = 250;
+
int active_map = 0;
double own_lat, own_lon;
@@ -72,8 +73,18 @@ int test_distance(double lat, double lon, int e, int n, double own_lat, double o
}
}
-void get_own_position(double lat, double lon)
+void set_own_position(double lat, double lon)
{
own_lat = lat;
own_lon = lon;
}
+
+double get_current_lat()
+{
+ return own_lat;
+}
+
+double get_current_lon()
+{
+ return own_lon;
+}
diff --git a/friendfinder/draw_user.h b/friendfinder/draw_user.h
index 4d3396a..78b9c75 100644
--- a/friendfinder/draw_user.h
+++ b/friendfinder/draw_user.h
@@ -10,9 +10,13 @@ void draw_user(struct position *pos);
void set_dist(int distance);
-void get_own_position(double lat, double lon);
+void set_own_position(double lat, double lon);
void enable_map_bubbles();
void disable_map_bubbles();
+
+double get_current_lat();
+
+double get_current_lon();
#endif
diff --git a/friendfinder/gui.c b/friendfinder/gui.c
index 8a5629c..203662d 100644
--- a/friendfinder/gui.c
+++ b/friendfinder/gui.c
@@ -19,9 +19,14 @@ int w = 450;
int first = 0;
int bubble_pos = 100;
+
+double current_lat = 47.996578;
+double current_lon = 7.840171;
+
time_t now;
-const char* msg_text;
-char *from, *to, *current_msg, *last_msg;
+
+const char *msg_text, *ip = NULL, *nickname = NULL, *partner_nickname = NULL;
+char *from = NULL, *to = NULL, *current_msg, *last_msg;
static Evas_Object *win, *bbx, *map;
@@ -41,15 +46,59 @@ static void on_own_position(void *data, Evas_Object *obj, void *event_info)
static void set_distance(void *data, Evas_Object *obj, void *event_info)
{
set_dist((int) data);
- get_own_position(map);
+ //get_own_position(map);
}
+static void on_ip(void *data, Evas_Object *obj, void *event_info)
+{
+ ip = elm_entry_entry_get(obj);
+ elm_entry_context_menu_clear(obj);
+}
+
+static void set_ip(void *data, Evas_Object *obj, void *event_info)
+{
+ sender_set_ip(ip);
+ receiver_set_ip(ip);
+}
+
+static void on_nickname(void *data, Evas_Object *obj, void *event_info)
+{
+ nickname = elm_entry_entry_get(obj);
+ elm_entry_context_menu_clear(obj);
+}
+
+static void set_nickname(void *data, Evas_Object *obj, void *event_info)
+{
+ from = nickname;
+
+ if (from != NULL && to != NULL)
+ {
+ init_msg_thread(from, to);
+ }
+}
+
static void on_show_users(void *data, Evas_Object *obj, void *event_info)
{
init_receiver_thread(from);
}
+static void on_partner_nickname(void *data, Evas_Object *obj, void *event_info)
+{
+ partner_nickname = elm_entry_entry_get(obj);
+ elm_entry_context_menu_clear(obj);
+}
+
+static void set_partner_nickname(void *data, Evas_Object *obj, void *event_info)
+{
+ to = partner_nickname;
+
+ if (from != NULL && to != NULL)
+ {
+ init_msg_thread(from, to);
+ }
+}
+
static void on_chat(void *data, Evas_Object *obj, void *event_info)
{
disable_map_bubbles();
@@ -210,6 +259,13 @@ void set_bubble_text(Evas_Object *bb, char *username, char *text)
evas_object_show(bb);
}
+void update_position()
+{
+ current_lat = get_current_lat();
+ current_lon = get_current_lon();
+ printf("current_lat: %f || current_lon: %f \n", current_lat, current_lon);
+}
+
void init_window_parts()
{
Evas_Object *bg, *bx, *bx2, *bx3, *sc, *en;
@@ -304,7 +360,8 @@ void init_toolbar()
void init_options()
{
- Evas_Object *bg, *bx, *bx2, *bt, *bt2, *bt3;
+ Evas_Object *bg, *bx, *bx2, *bx3, *bx4 ,*bt, *bt2, *bt3, *bt4, *bt5 ,*bt6;
+ Evas_Object *en1, *sc1, *en2, *sc2, *en3, *sc3, *lb1, *lb2, *lb3;
/* add a standard bg */
bg = elm_bg_add(win);
@@ -316,22 +373,45 @@ void init_options()
init_toolbar(bg);
bx = elm_box_add(win);
- evas_object_size_hint_weight_set(bx, 1.0, 0.2);
+ 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_resize(bx, w, h);
+ evas_object_resize(bx, w*0.8, h*0.33);
+ evas_object_move(bx, w*0.1, h*0.65);
evas_object_show(bx);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, 1);
evas_object_size_hint_weight_set(bx2, 1.0, 1.0);
evas_object_size_hint_align_set(bx2, -1.0, -1.0);
- elm_box_pack_end(bx, bx2);
+ evas_object_resize(bx2, w*0.8, h*0.04);
+ evas_object_move(bx2, w*0.1, h*0.25);
+ // elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
+ bx3 = elm_box_add(win);
+ elm_box_horizontal_set(bx3, 1);
+ evas_object_size_hint_weight_set(bx3, 1.0, 1.0);
+ evas_object_size_hint_align_set(bx3, -1.0, -1.0);
+ evas_object_resize(bx3, w*0.8, h*0.04);
+ evas_object_move(bx3, w*0.1, h*0.35);
+ // elm_box_pack_end(bx, bx2);
+ evas_object_show(bx3);
+
+ bx4 = elm_box_add(win);
+ elm_box_horizontal_set(bx4, 1);
+ evas_object_size_hint_weight_set(bx4, 1.0, 1.0);
+ evas_object_size_hint_align_set(bx4, -1.0, -1.0);
+ evas_object_resize(bx4, w*0.8, h*0.04);
+ evas_object_move(bx4, w*0.1, h*0.45);
+ // elm_box_pack_end(bx, bx2);
+ evas_object_show(bx4);
+
bt = elm_button_add(win);
elm_button_label_set(bt, "Distance = 100 m");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
+ evas_object_resize(bt, w*0.9, h*0.1);
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", set_distance, 100);
evas_object_show(bt);
@@ -352,7 +432,100 @@ void init_options()
evas_object_smart_callback_add(bt3, "clicked", set_distance, 1000);
evas_object_show(bt3);
-}
+ /* enter ip */
+
+ sc1 = elm_scroller_add(win);
+ evas_object_size_hint_weight_set(sc1, 1.0, 1.0);
+ evas_object_size_hint_align_set(sc1, -1.0, -1.0);
+ elm_box_pack_end(bx2, sc1);
+
+ en1 = elm_entry_add(win);
+ //if (text) elm_entry_entry_set(en, text);
+ //else elm_entry_entry_set(en, "");
+ evas_object_size_hint_weight_set(en1, 1.0, 1.0);
+ evas_object_size_hint_align_set(en1, 0.0, 0.0);
+ elm_scroller_content_set(sc1, en1);
+ evas_object_smart_callback_add(en1, "changed", on_ip, NULL);
+ evas_object_show(en1);
+
+ lb1 = elm_label_add(win);
+ elm_label_label_set(lb1, "Server IP");
+ elm_box_pack_end(bx2, lb1);
+ evas_object_show(lb1);
+
+ evas_object_show(sc1);
+
+ bt4 = elm_button_add(win);
+ elm_button_label_set(bt4, "Set server IP");
+ evas_object_size_hint_weight_set(bt4, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt4, -1.0, -1.0);
+ elm_box_pack_end(bx2, bt4);
+ evas_object_smart_callback_add(bt4, "clicked", set_ip, NULL);
+ evas_object_show(bt4);
+
+ /* enter nickname */
+
+ sc2 = elm_scroller_add(win);
+ evas_object_size_hint_weight_set(sc2, 1.0, 1.0);
+ evas_object_size_hint_align_set(sc2, -1.0, -1.0);
+ elm_box_pack_end(bx3, sc2);
+
+ en2 = elm_entry_add(win);
+ //if (text) elm_entry_entry_set(en, text);
+ //else elm_entry_entry_set(en, "");
+ evas_object_size_hint_weight_set(en2, 1.0, 1.0);
+ evas_object_size_hint_align_set(en2, 0.0, 0.0);
+ elm_scroller_content_set(sc2, en2);
+ evas_object_smart_callback_add(en2, "changed", on_nickname, NULL);
+ evas_object_show(en2);
+
+ lb2 = elm_label_add(win);
+ elm_label_label_set(lb2, "Nickname");
+ elm_box_pack_end(bx3, lb2);
+ evas_object_show(lb2);
+
+ evas_object_show(sc2);
+
+ bt5 = elm_button_add(win);
+ elm_button_label_set(bt5, "Set own nickname");
+ evas_object_size_hint_weight_set(bt5, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt5, -1.0, -1.0);
+ elm_box_pack_end(bx3, bt5);
+ evas_object_smart_callback_add(bt5, "clicked", set_nickname, NULL);
+ evas_object_show(bt5);
+
+ /* enter nickname of chat partner */
+
+ sc3 = elm_scroller_add(win);
+ evas_object_size_hint_weight_set(sc3, 1.0, 1.0);
+ evas_object_size_hint_align_set(sc3, -1.0, -1.0);
+ elm_box_pack_end(bx4, sc3);
+
+ en3 = elm_entry_add(win);
+ //if (text) elm_entry_entry_set(en, text);
+ //else elm_entry_entry_set(en, "");
+ evas_object_size_hint_weight_set(en3, 1.0, 1.0);
+ evas_object_size_hint_align_set(en3, 0.0, 0.0);
+ elm_scroller_content_set(sc3, en3);
+ evas_object_smart_callback_add(en3, "changed", on_partner_nickname, NULL);
+ evas_object_show(en3);
+
+ lb3 = elm_label_add(win);
+ elm_label_label_set(lb3, "Buddy nickname");
+ elm_box_pack_end(bx4, lb3);
+ evas_object_show(lb3);
+
+ evas_object_show(sc3);
+
+ bt6 = elm_button_add(win);
+ elm_button_label_set(bt6, "Set buddy nickname");
+ evas_object_size_hint_weight_set(bt6, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt6, -1.0, -1.0);
+ elm_box_pack_end(bx4, bt6);
+ evas_object_smart_callback_add(bt6, "clicked", set_partner_nickname, NULL);
+ evas_object_show(bt6);
+}
+
void init_map()
{
@@ -385,9 +558,10 @@ void init_map()
map = e_smart_map_add(win, "data/maps/fr_map.eet");
e_smart_map_set_theme(map, "themes/map.edj", "main");
- e_smart_map_set_pos(map, 47.996578, 7.840171);
- evas_object_size_hint_min_set(map, w-2, h-115);//h-10*8-60);
-// evas_object_size_hint_max_set(map, w-2, h-100);//-10*8-120);
+ e_smart_map_set_pos(map, current_lat, current_lon);
+// e_smart_map_set_pos(map, 47.996578, 7.840171);
+ evas_object_size_hint_min_set(map, w-2, h-10*8-60);
+ evas_object_size_hint_max_set(map, w-2, h-10*8-120);
evas_object_resize(map, w, h*0.65);
elm_box_pack_end(bx2, map);
evas_object_show(map);
@@ -462,7 +636,7 @@ void elm_main ()
evas_object_show(win);
/* start the message sender thread */
- init_msg_thread(from, to);
+ //init_msg_thread(from, to);
/* get going and draw/respond to the user */
elm_run();
@@ -473,7 +647,7 @@ void elm_main ()
int main (int argc, char **argv)
{
- if (argv[1] == NULL || argv[2] == NULL)
+ /* if (argv[1] == NULL || argv[2] == NULL)
{
printf("no nick and no receiver set");
from = NULL;
@@ -483,7 +657,7 @@ int main (int argc, char **argv)
{
from = argv[1];
to = argv[2];
- }
+ }*/
elm_init(argc, argv);
diff --git a/friendfinder/gui.h b/friendfinder/gui.h
index 47756f3..ae52896 100644
--- a/friendfinder/gui.h
+++ b/friendfinder/gui.h
@@ -24,6 +24,7 @@ void set_bubble_text(Evas_Object *bb, char *username, char *text);
void show_message(char *current_msg);
char* get_current_time();
void print_users(struct position* pos);
+void save_current_map_position(double lat, double lon);
//init functions
void init_options();
diff --git a/friendfinder/map/object.c b/friendfinder/map/object.c
index c337cc4..45ba56c 100644
--- a/friendfinder/map/object.c
+++ b/friendfinder/map/object.c
@@ -12,6 +12,7 @@
#include "smart_map_priv.h"
#include "../draw_user.h"
+#include "../gui.h"
static void tile_array_add(struct smart_map *smart, int index)
{
@@ -169,9 +170,10 @@ int map_object_update(struct smart_map *smart)
if(smart->theme == NULL)
return 0;
-
- get_own_position(smart->ta.lat, smart->ta.lon);
- get_sender_position(smart->ta.lat, smart->ta.lon);
+
+ /* functions for saving position for various programm parts */
+ set_own_position(smart->ta.lat, smart->ta.lon);
+ set_sender_position(smart->ta.lat, smart->ta.lon);
snprintf(buffer, 512, "%lf * %lf", smart->ta.lat, smart->ta.lon);
smart->lat = smart->ta.lat;
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index 63552ce..7497458 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -12,12 +12,18 @@ irc_callbacks_t callbacks;
int counter = 0;
char sender_name[100];
char *lat, *lon;
+char *receiver_server_ip;
int ret;
int got_lat = 0;
int got_lon = 0;
BF_KEY key;
+void receiver_set_ip(char *_ip)
+{
+ receiver_server_ip = _ip;
+}
+
int init_connection_receiver(char* server_ip, char* user)
{
printf("RECEIVER: initialising connection...\n");
@@ -28,14 +34,14 @@ int init_connection_receiver(char* server_ip, char* user)
{
printf("RECEIVER: connection error-code: %i \n", con);
- return 0;
+ return 1;
}
if (irc_is_connected(session) == 1)
{
printf("RECEIVER: connected...\n");
- return 1;
+ return 0;
}
}
@@ -110,11 +116,23 @@ void receiver_main(void *user)
callbacks.event_connect = on_connect_receiver;
char *username = (char*) user;
- //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen
- strcat(username, "_r");
+
+ if (receiver_server_ip != NULL)
+ {
+ //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen
+ strcat(username, "_r");
+
+ if (init_connection_receiver(receiver_server_ip, username) == 0)
+ {
+ printf("RECEIVER: connection succesfull...\n");
+
+ irc_run(session);
+ }
+ }
- init_connection_receiver("127.0.0.1", username);
+ else
+ {
+ printf("RECEIVER: error ip not set! Receiver can't be started\n");
+ }
- irc_run(session);
- printf("done\n");
}
diff --git a/friendfinder/receiver.h b/friendfinder/receiver.h
index bc3f9eb..33d8b75 100644
--- a/friendfinder/receiver.h
+++ b/friendfinder/receiver.h
@@ -11,5 +11,7 @@ struct position
/* calls main for receiver */
void receiver_main(void *user);
+/* sets the ip of irc-server, to whom the receiver will connect */
+void receiver_set_ip(char *_ip);
#endif
diff --git a/friendfinder/sender.c b/friendfinder/sender.c
index 0ef0222..8ba5980 100644
--- a/friendfinder/sender.c
+++ b/friendfinder/sender.c
@@ -12,13 +12,19 @@ irc_callbacks_t callbacks;
int msg_count = 0;
int ack_count = 0;
int resend = 0;
-char* nick;
+char *nick;
+char *sender_server_ip = NULL;
double own_lat, own_lon;
int first_send = 0;
BF_KEY key;
+void sender_set_ip(char *_sender_server_ip)
+{
+ sender_server_ip = _sender_server_ip;
+}
+
int init_connection_sender(char* server_ip, char* user)
{
printf("SENDER: initialising connection...\n");
@@ -59,7 +65,7 @@ int random_position_x(int bb_x_upper)
return rand() % bb_x_upper;
}
-void get_sender_position(double lat, double lon)
+void set_sender_position(double lat, double lon)
{
own_lat = lat;
own_lon = lon;
@@ -169,14 +175,23 @@ void sender_main(void *user)
callbacks.event_channel = get_aknowledge;
char *username = (char*)user;
- //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen
- strcat(username, "_s");
- if (init_connection_sender("127.0.0.1", username) == 0)
+ if (sender_server_ip != NULL)
{
- printf("SENDER: connection succesfull...\n");
+ //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen
+ strcat(username, "_s");
+
+ if (init_connection_sender(sender_server_ip, username) == 0)
+ {
+ printf("SENDER: connection succesfull...\n");
- irc_run(session);
+ irc_run(session);
+ }
+ }
+
+ else
+ {
+ printf("SENDER: error ip not set! Sender can't be started\n");
}
}
diff --git a/friendfinder/sender.h b/friendfinder/sender.h
index 8f6a723..7ac89d3 100644
--- a/friendfinder/sender.h
+++ b/friendfinder/sender.h
@@ -5,6 +5,9 @@
void sender_main(void *user);
/* set the position which will the sender send */
-void get_sender_position(double lat, double lon);
+void set_sender_position(double lat, double lon);
+
+/* sets ip address of irc-server, to whom the sender will connect */
+void sender_set_ip(char *_sender_server_ip);
#endif