summaryrefslogblamecommitdiffstats
path: root/friendfinder/gui.c
blob: 7804c768d4d01e056c3a037544567dab2daab687 (plain) (tree)
1
2
3
4
5
6
7
8
9




                   

                       

                        
                       
                     

                    
                   
                      
                    
 
           



                     
                    



                               
                                                                                   


                                                                     
           
 
                                                        
 

                                                                     
                   




                                                                           



                                         

 


                                                                        

 





















                                                                        
                                                                             




                                          










                                                                              

                                                                         
                                                     


                                           

 









                                                                                
                                                                             




                                          







                                                                          


                                     


                                 
                                                   





                                                         
 






                                                                       
                                                                   

                        
                              
                            
                          



                                                                  
                        
                   
                             
                                 
                          



                                                                      
                        
                              
                       

 

                                                                      

                              











                                                                 

 

                                                                      
                                            
                                          
 


                             

                                                                           
                              


                             
                                                   
                 









                                                                         
                        

                                                      

                               
 
                                                   
                 









                                                                         
        

                                                      

                               
        
                                                   
                 









                                                                         
        

                                         







                                                    
                                
                
                                                   
                 









                                                                         
                                

                                                      

                                              
                               
                 

                                                    
                 









                                                                         
                

                                                      

                                              
                               

                 
                                                   
                 









                                                                         

                                  
                                         

                                              
                               
                 


                        


         








                                 
                                                  

                                                                 
                        


                              





                                                       

                                                    



                                                       
                                           



                                            

 






                                                                                  

                        



                                                   
 
















                                                                                 







                                           





                                                        

















                                                                        






















                                                                  
                                          

                                                          




                                                                  
   
                             




                                 

                   
                                                                           



































                                                         
                                                                         











                                                         





                                                         
                  
 





                                                        
                                                                           


                             

                   

                                                                                                


                               
 







                                                                             
                                                       
                                                        

                                               



                                       
                                                        
                                                         
                                               
                                            
                              
 




                                                         
                                            






                                                         
                                            

                              







                                                         
                                 

                                                       
                                                        
                                              
                                 
                                                                         
                             
















                                                                           







                                                         
                                              





                                                                    




                                             






















                                                                     





                                                                          




                                                   






















                                                                           





                                                                                  




                                             













                                                                                   











                                                         
                                                                                

                              
                                        












                                                         
                                                                                 

                              

        


               
                                                        
 

                               
 













                                                                             
                                                        
                                                         
                                               


                                  
                                                           
                                                                        
                                                           

                                                           
                                           
                                   
                              
 

                                                      

                                                        


                                                                             
 






                                                                            
 






                                                                        

 
                                  
 
                               

                                                    



                                                         
                                  
                              

                                            
                                                                              
 
                                                        
                                  
                                          

                                                         
                                  
                              

                                                
                                                                        



                

                                                                                    
                                                










                                                                               
                                                    
                  


                               



                                






                             
 
#include <stdlib.h>
#include <time.h>

#include "Evas.h"
#include "Ecore.h"
#include "Elementary.h"

#include "render/line.h"

#include "msg_sender.h"
#include "receiver.h"
#include "gui.h"
#include "handler.h"
#include "sender.h"
#include "draw_user.h"
#include "barcode.h"

int h= 600;
int w = 450;

int first = 0;
int bubble_pos = 100;
int enable_chat = 0;

double current_lat = 47.996578;
double current_lon = 7.840171;

const char *msg_text, *key, *ip = NULL, *nickname = NULL, *partner_nickname = NULL;
char *from = NULL, *to = NULL, *count = "3", *current_msg, *last_msg;
int sender_count = 3;

time_t now;

static 	Evas_Object *win, *bbx, *map, *img, *bcb;	

static void on_cancel(void *data, Evas_Object *obj, void *event_info)
{
 	elm_exit();
	close_threads();
}

static void on_own_position(void *data, Evas_Object *obj, void *event_info)
{
	if (nickname != NULL)
	{
		init_sender_thread(from);
	}
}

static void set_distance(void *data, Evas_Object *obj, void *event_info)
{
	set_dist((int) data);
}

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 && strlen(from) > 0 && strlen(to) > 0)
	{
		init_msg_thread(from, to);
	}
}

static void on_partner_number(void *data, Evas_Object *obj, void *event_info)
{
   	sender_count = elm_entry_entry_get(obj);
	elm_entry_context_menu_clear(obj);
}

static void set_partner_number(void *data, Evas_Object *obj, void *event_info)
{
   	set_sender_count(sender_count);
}

static void on_show_users(void *data, Evas_Object *obj, void *event_info)
{
	if (nickname != NULL && strlen(nickname) > 0)
	{
		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 && strlen(from) > 0 && strlen(to) > 0)
	{
		init_msg_thread(from, to);
	}
}

static void create_barcode(void *data, Evas_Object *obj, void *event_info)
{	
	if (key != NULL && strlen(key) > 0)
	{
		generate_barcode(key);
	}
	else return;

	if (img != NULL)
	{
		evas_object_del(img);
	}

	img = elm_image_add(win);
	elm_image_file_set(img, "barcode.png", "");
   	evas_object_size_hint_weight_set(img, 1.0, 1.0);
   	evas_object_size_hint_align_set(img, -1.0, -1.0);
	evas_object_resize(img, w*0.5, h*0.5);
	elm_box_pack_end((Evas_Object*)data, img);
	evas_object_show(img);


}

static void on_keyenter(void *data, Evas_Object *obj, void *event_info)
{
	key = elm_entry_entry_get(obj);
}

static void on_chat(void *data, Evas_Object *obj, void *event_info)
{	
	enable_chat = 1;
	disable_map_bubbles();
	init_window_parts();
	init_toolbar(obj);
}

static void on_map(void *data, Evas_Object *obj, void *event_info)
{
	enable_chat = 0;
	init_map();
	enable_map_bubbles();
	init_draw_user(win, map);
	init_toolbar(obj);
}

static void on_options(void *data, Evas_Object *obj, void *event_info)
{
	enable_chat = 0;
	disable_map_bubbles();
	init_options();
}

static void on_barcode(void *data, Evas_Object *obj, void *event_info)
{
	enable_chat = 0;
	disable_map_bubbles();
	init_barcode();

	if (img != NULL)
	{
		img = elm_image_add(win);
		elm_image_file_set(img, "barcode.png", "");
   		evas_object_size_hint_weight_set(img, 1.0, 1.0);
   		evas_object_size_hint_align_set(img, -1.0, -1.0);
		evas_object_resize(img, w*0.5, h*0.5);
		elm_box_pack_end(bcb, img);
		evas_object_show(img);
	}
}

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);
}

Evas_Object *bb1, *bb2, *bb3;

static void on_send_message(void *data, Evas_Object *bx3, void *event_info)
{
	set_txt_msg(msg_text);

	if (msg_text != NULL)
	{
		if (first == 0 && enable_chat == 1)
		{
			if(bb1 !=NULL)
				evas_object_del(bb1);

			bb1 = elm_bubble_add(bx3);
			evas_object_size_hint_weight_set(bb1, 0.0, 0.0);
   			evas_object_size_hint_align_set(bb1, -1.0, -1.0);
			evas_object_resize(bb1, w, h/6);
			evas_object_move(bb1, 0, bubble_pos);
			set_bubble_text(bb1, from, msg_text);
			evas_object_show(bb1);
			
			first = 1;
			bubble_pos = bubble_pos + h/6;
			return;
		}

		if (first == 1 && enable_chat == 1)
		{
			if(bb2 !=NULL)
				evas_object_del(bb2);

			bb2 = elm_bubble_add(bx3);
			evas_object_size_hint_weight_set(bb2, 1.0, 1.0);
   			evas_object_size_hint_align_set(bb2, -1.0, -1.0);
			evas_object_resize(bb2, w, h/6);
			evas_object_move(bb2, 0, bubble_pos);
			set_bubble_text(bb2, from, msg_text);
			evas_object_show(bb2);
	
			first = 2;
			bubble_pos = bubble_pos + h/6;
			return;
		}	
	
		if (first == 2 && enable_chat == 1)
		{
			if(bb3 !=NULL)
				evas_object_del(bb3);

			bb3 = elm_bubble_add(bx3);
			evas_object_size_hint_weight_set(bb3, 1.0, 1.0);
   			evas_object_size_hint_align_set(bb3, -1.0, -1.0);
			evas_object_resize(bb3, w, h/6);
			evas_object_move(bb3, 0, bubble_pos);
			set_bubble_text(bb3, from, msg_text);
			evas_object_show(bb3);
	
			first = 0;
			bubble_pos = 100;
			return;
		}
	}
}

/* if message has been sent, print it in a bubble */
void show_message(char *current_msg)
{
	if (current_msg != NULL)
	{	
		if (first == 0 && enable_chat == 1)
		{
			if(bb1 !=NULL)
				evas_object_del(bb1);
		
			bb1 = elm_bubble_add(bbx);
			evas_object_size_hint_weight_set(bb1, 1.0, 1.0);
   			evas_object_size_hint_align_set(bb1, -1.0, -1.0);
			evas_object_resize(bb1, w, h/6);
			evas_object_move(bb1, 0, bubble_pos);
			set_bubble_text(bb1, to, current_msg);
			evas_object_show(bb1);
				
			first = 1;
			bubble_pos = bubble_pos + h/6;

			current_msg[0] = '\0';
			return;
		}

		if (first == 1 && enable_chat == 1) 
		{
			if(bb2 !=NULL)
				evas_object_del(bb2);

			bb2 = elm_bubble_add(bbx);
			evas_object_size_hint_weight_set(bb2, 1.0, 1.0);
   			evas_object_size_hint_align_set(bb2, -1.0, -1.0);
			evas_object_resize(bb2, w, h/6);
			evas_object_move(bb2, 0, bubble_pos);
			set_bubble_text(bb2, to, current_msg);
			evas_object_show(bb2);
		
			first = 2;
			bubble_pos = bubble_pos + h/6;

			current_msg[0] = '\0';
			return;
		}
	
		if (first == 2 && enable_chat == 1)
		{
			if(bb3 !=NULL)
				evas_object_del(bb3);
		
			bb3 = elm_bubble_add(bbx);
			evas_object_size_hint_weight_set(bb3, 1.0, 1.0);
   			evas_object_size_hint_align_set(bb3, -1.0, -1.0);
			evas_object_resize(bb3, w, h/6);
			evas_object_move(bb3, 0, bubble_pos);
			set_bubble_text(bb3, to, current_msg);
			evas_object_show(bb3);
			
			first = 0;
			bubble_pos = 100;

			current_msg[0] = '\0';
			return;
		}
	free(bb1);	
	free(bb2);	
	free(bb3);	
	}
}

char* get_current_time()
{
	time_t now;
	time(&now);
	char *text = ctime(&now);
	return text;

}

/* sets the username and the text in the bubble */
void set_bubble_text(Evas_Object *bb, char *username, char *text)
{
	Evas_Object *cn;
	
	printf("%s \n", text);
	
	/* 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);

	elm_bubble_info_set(bb, get_current_time());

	/* create overlay bubble with message string */
	Evas_Object *inner_bb;
	inner_bb = elm_bubble_add(bb);
	elm_bubble_info_set(inner_bb, text);
	elm_bubble_label_set(bb, username);
	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 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;

	/* 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);
   	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);
   	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, "home");
   	elm_toolbar_item_add(tb, ic, "Map", on_map, NULL);
   	evas_object_show(ic);

	ic = elm_icon_add(win);
	elm_icon_standard_set(ic, "file");
	elm_toolbar_item_add(tb, ic, "Barcode", on_barcode, NULL);
	evas_object_show(ic);
   
	evas_object_show(ic);
   
   	elm_box_pack_end(bx, tb);
   	evas_object_show(tb);
}

void init_barcode()
{
	Evas_Object *bg, *bx1, *bx2, *bx3, *bx4, *lb1, *sc, *en, *bt, *img;

	bg = elm_bg_add(win);

	elm_win_resize_object_add(win, bg);
	evas_object_show(bg);

	init_toolbar(bg);

	bx1 = elm_box_add(win);
  	evas_object_size_hint_weight_set(bx1, 1.0, 1.0);
   	evas_object_size_hint_align_set(bx1, -1.0, -1.0);
	evas_object_resize(bx1, w*0.8, h*0.33); 
	evas_object_move(bx1, w*0.1, h*0.65);
	evas_object_show(bx1);

	lb1 = elm_label_add(win);
	elm_label_label_set(lb1, "Enter key");
	elm_box_pack_end(bx1, lb1);
	evas_object_show(lb1);

	bx2 = elm_box_add(win);
  	evas_object_size_hint_weight_set(bx2, 1.0, 1.0);
   	evas_object_size_hint_align_set(bx2, -1.0, -1.0);
	evas_object_resize(bx2, w*0.8, h*0.045); 
	evas_object_move(bx2, w*0.1, h*0.76);
	evas_object_show(bx2);

	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(bx2, sc);

	en = elm_entry_add(win);
   	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_keyenter, NULL);
   	evas_object_show(en);

	evas_object_show(sc);
	evas_object_show(en);

	bx3 = elm_box_add(win);
  	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.045); 
	evas_object_move(bx3, w*0.1, h*0.83);
	evas_object_show(bx3);

	bx4 = elm_box_add(win);
  	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.6, h*0.6); 
	evas_object_move(bx4, w*0.2, h*0.15);
	evas_object_show(bx4);
	bcb = bx4;

	bt = elm_button_add(win);
   	elm_button_label_set(bt, "Generate barcode");
   	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(bx3, bt);
   	evas_object_smart_callback_add(bt, "clicked", create_barcode, bx4);
   	evas_object_show(bt);
}

void init_options()
{
	Evas_Object *bg, *bx, *bx2, *bx3, *bx4, *bx5, *bt, *bt2, *bt3, *bt4, *bt5 ,*bt6, *bt7;
	Evas_Object *en1, *sc1, *en2, *sc2, *en3, *sc3, *en4, *sc4, *lb1, *lb2, *lb3, *lb4;	
	
	/* 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*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);
	evas_object_resize(bx2, w*0.8, h*0.04);
	evas_object_move(bx2, w*0.1, h*0.2);
	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.3);
	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.4);
	evas_object_show(bx4);

	bx5 = elm_box_add(win);
   	elm_box_horizontal_set(bx5, 1);
   	evas_object_size_hint_weight_set(bx5, 1.0, 1.0);
   	evas_object_size_hint_align_set(bx5, -1.0, -1.0);
	evas_object_resize(bx5, w*0.8, h*0.04);
	evas_object_move(bx5, w*0.1, h*0.5);
	evas_object_show(bx5);

	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);

	bt2 = elm_button_add(win);
   	elm_button_label_set(bt2, "Distance = 250 m");
   	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(bx, bt2);
   	evas_object_smart_callback_add(bt2, "clicked", set_distance, 250);
   	evas_object_show(bt2);

	bt3 = elm_button_add(win);
   	elm_button_label_set(bt3, "Distance = 1000 m");
   	evas_object_size_hint_weight_set(bt3, 1.0, 1.0);
   	evas_object_size_hint_align_set(bt3, -1.0, -1.0);
  	elm_box_pack_end(bx, bt3);
   	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);
	elm_entry_entry_set(en1, "127.0.0.1");
   	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);
	
	if (ip != NULL)
	{
		elm_entry_entry_set(en1, ip);
	}
	
	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);
   	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);

	if (from != NULL)
	{
		elm_entry_entry_set(en2, nickname);
	}

	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);
   	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);

	if (to != NULL)
	{
		elm_entry_entry_set(en3, to);
	}

	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);

	/* enter number of visible sender */

	sc4 = elm_scroller_add(win);	
	evas_object_size_hint_weight_set(sc4, 1.0, 1.0);
   	evas_object_size_hint_align_set(sc4, -1.0, -1.0);
   	elm_box_pack_end(bx5, sc4);

	en4 = elm_entry_add(win);
   	evas_object_size_hint_weight_set(en4, 1.0, 1.0);
   	evas_object_size_hint_align_set(en4, 0.0, 0.0);
   	elm_scroller_content_set(sc4, en4);
   	evas_object_smart_callback_add(en4, "changed", on_partner_number, NULL);
   	evas_object_show(en4);

	elm_entry_entry_set(en4, count);

	lb4 = elm_label_add(win);
	elm_label_label_set(lb4, "Visible sender");
	elm_box_pack_end(bx5, lb4);
	evas_object_show(lb4);
	
   	evas_object_show(sc4);

	bt7 = elm_button_add(win);
   	elm_button_label_set(bt7, "Set visible sender");
   	evas_object_size_hint_weight_set(bt7, 1.0, 1.0);
   	evas_object_size_hint_align_set(bt7, -1.0, -1.0);
  	elm_box_pack_end(bx5, bt7);
   	evas_object_smart_callback_add(bt7, "clicked", set_partner_number, NULL);
   	evas_object_show(bt7);

}	


void init_map()
{
	Evas_Object *bg, *bx, *bx2, *bt, *bt2, *bt3;	

	/* 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, 0.5, 0.2);
   	evas_object_size_hint_align_set(bx2, -1.0, -1.0);
	evas_object_resize(bx2, w*0.97, h*0.6);
   	elm_box_pack_end(bx, bx2);
	evas_object_show(bx2);

	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, current_lat, current_lon);
	evas_object_size_hint_min_set(map, w-2, h-10*8-80);
	evas_object_size_hint_max_set(map, w-2, h-10*8-80);
	evas_object_resize(map, w, h*0.65);
	elm_box_pack_end(bx2, map);
	evas_object_show(map);

	bt = elm_button_add(win);
   	elm_button_label_set(bt, "Send own position");
   	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(bx, bt);
   	evas_object_smart_callback_add(bt, "clicked", on_own_position, NULL);
   	evas_object_show(bt); 

	bt2 = elm_button_add(win);
   	elm_button_label_set(bt2, "Show other users");
   	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(bx, bt2);
   	evas_object_smart_callback_add(bt2, "clicked", on_show_users, NULL);
   	evas_object_show(bt2);

	bt3 = elm_button_add(win);
   	elm_button_label_set(bt3, "Exit");
   	evas_object_size_hint_weight_set(bt3, 1.0, 1.0);
   	evas_object_size_hint_align_set(bt3, -1.0, -1.0);
  	elm_box_pack_end(bx, bt3);
   	evas_object_smart_callback_add(bt3, "clicked", on_cancel, NULL);
   	evas_object_show(bt3);    
}

void init_buttons(Evas_Object *bx)
{
	Evas_Object *bt1, *bt2;

	/* add ok button to box - fill and expand */
   	bt1 = elm_button_add(win);
   	elm_button_label_set(bt1, "Send Message");
   	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(bx, bt1);
   	evas_object_show(bt1);
   	
	/* and when clicked - run "on_ok" */
   	evas_object_smart_callback_add(bt1, "clicked", on_send_message, NULL);

   	/* add cancel button to box - fill and expand */
   	bt2 = elm_button_add(win);
   	elm_button_label_set(bt2, "Exit");
   	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(bx, bt2);
   	evas_object_show(bt2);
   
	/* and when clicked - run "on_cancel" */
   	evas_object_smart_callback_add(bt2, "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, "Friend Finder");
   	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);

	/* get going and draw/respond to the user */
   	elm_run();
   
	/* standard shutdown */
   	elm_exit();
}

int main (int argc, char **argv)
{
	elm_init(argc, argv);

	elm_main();

	elm_shutdown();

	return 0;
}