100
101
update_position()
102
103
GtkLabel *label_msg;
103
104
label_msg = (GtkLabel *)lookup_widget(window1, "label51");
104
gtk_label_set_label (label_msg, _("Connecting..."));
105
gtk_label_set_label(label_msg, "Connecting...");
106
#if GLIB_CHECK_VERSION(2,34,0)
107
if (!g_thread_new("friends thread", &update_position_thread, (gpointer) NULL) != 0)
109
107
if (!g_thread_create(&update_position_thread, NULL, FALSE, NULL) != 0)
111
108
g_warning("### can't create friend thread\n");
117
114
update_position_thread(void *ptr)
121
118
GtkEntry *nick, *pass, *email, *msg;
122
119
GtkLabel *label_msg;
123
const gchar *n, *p, *e, *m;
120
const gchar *n, *p, *e, *m;
125
122
static gchar lat[64], lon[64], mode[64];
126
123
static gchar alt[16] = "0", speed[16] = "0", head[16]="0";
129
126
gchar **user_data_sets;
130
127
long int response_code;
132
129
CURL *curl_handle;
134
131
struct curl_httppost *formdata=NULL;
135
132
struct curl_httppost *lastptr=NULL;
137
134
struct mem_struct chunk;
139
136
chunk.memory=NULL;
143
140
gdk_threads_enter();
145
142
label_msg = (GtkLabel *)lookup_widget(window1, "label51");
148
145
nick = (GtkEntry *)lookup_widget(window1, "entry7");
149
146
pass = (GtkEntry *)lookup_widget(window1, "entry8");
150
147
email = (GtkEntry *)lookup_widget(window1, "entry9");
151
148
msg = (GtkEntry *)lookup_widget(window1, "entry29");
153
150
switch (global_ff_mode) {
155
152
ff_mode = g_strdup("private");
157
154
case FRIEND_MODE:
164
161
ff_mode = g_strdup("");
167
164
n = gtk_entry_get_text(nick);
168
165
p = gtk_entry_get_text(pass);
169
166
e = gtk_entry_get_text(email);
170
167
m = gtk_entry_get_text(msg);
172
169
gdk_threads_leave();
175
172
if (global_myposition.lat && global_myposition.lon)
177
174
g_sprintf(lat, "%f", global_myposition.lat);
178
175
g_sprintf(lon, "%f", global_myposition.lon);
179
g_sprintf(mode, "%s|%dx%d", "man", global_drawingarea_width, global_drawingarea_height);
176
g_sprintf(mode, "%s|%dx%d", "man", global_drawingarea_width, global_drawingarea_height);
181
178
else if (gpsdata && gpsdata->fix.latitude !=0)
183
180
g_sprintf(lat, "%f", gpsdata->fix.latitude);
184
181
g_sprintf(lon, "%f", gpsdata->fix.longitude);
185
g_sprintf(mode, "%s|%dx%d", "gps", global_drawingarea_width, global_drawingarea_height);
182
g_sprintf(mode, "%s|%dx%d", "gps", global_drawingarea_width, global_drawingarea_height);
189
186
float tmplat, tmplon;
191
188
tmplat = rad2deg( pixel2lat(global_zoom, global_y+global_drawingarea_height/2) );
192
189
tmplon = rad2deg( pixel2lon(global_zoom, global_x+global_drawingarea_width/2) );
193
190
g_sprintf(lat, "%f", tmplat);
194
191
g_sprintf(lon, "%f", tmplon);
195
g_sprintf(mode, "%s|%dx%d", "atm", global_drawingarea_width, global_drawingarea_height);
192
g_sprintf(mode, "%s|%dx%d", "atm", global_drawingarea_width, global_drawingarea_height);
201
198
g_snprintf(alt, 16, "%.1f", gpsdata->fix.altitude);
202
199
g_snprintf(head, 16, "%.1f", gpsdata->fix.heading);
203
200
g_snprintf(speed, 16, "%.1f", gpsdata->fix.speed);
206
203
curl_global_init(CURL_GLOBAL_ALL);
208
205
curl_formadd(&formdata,
210
CURLFORM_COPYNAME, "lat",
211
CURLFORM_COPYCONTENTS, lat,
214
curl_formadd(&formdata,
216
CURLFORM_COPYNAME, "lon",
217
CURLFORM_COPYCONTENTS, lon,
220
curl_formadd(&formdata,
222
CURLFORM_COPYNAME, "alt",
223
CURLFORM_COPYCONTENTS, alt,
226
curl_formadd(&formdata,
228
CURLFORM_COPYNAME, "head",
229
CURLFORM_COPYCONTENTS, head,
232
curl_formadd(&formdata,
234
CURLFORM_COPYNAME, "speed",
235
CURLFORM_COPYCONTENTS, speed,
238
curl_formadd(&formdata,
240
CURLFORM_COPYNAME, "mode",
241
CURLFORM_COPYCONTENTS, mode,
244
curl_formadd(&formdata,
246
CURLFORM_COPYNAME, "ff_mode",
247
CURLFORM_COPYCONTENTS, ff_mode,
250
curl_formadd(&formdata,
252
CURLFORM_COPYNAME, "nick",
253
CURLFORM_COPYCONTENTS, n,
256
curl_formadd(&formdata,
258
CURLFORM_COPYNAME, "pass",
259
CURLFORM_COPYCONTENTS, p,
262
curl_formadd(&formdata,
264
CURLFORM_COPYNAME, "msg",
265
CURLFORM_COPYCONTENTS, m,
207
CURLFORM_COPYNAME, "lat",
208
CURLFORM_COPYCONTENTS, lat,
211
curl_formadd(&formdata,
213
CURLFORM_COPYNAME, "lon",
214
CURLFORM_COPYCONTENTS, lon,
217
curl_formadd(&formdata,
219
CURLFORM_COPYNAME, "alt",
220
CURLFORM_COPYCONTENTS, alt,
223
curl_formadd(&formdata,
225
CURLFORM_COPYNAME, "head",
226
CURLFORM_COPYCONTENTS, head,
229
curl_formadd(&formdata,
231
CURLFORM_COPYNAME, "speed",
232
CURLFORM_COPYCONTENTS, speed,
235
curl_formadd(&formdata,
237
CURLFORM_COPYNAME, "mode",
238
CURLFORM_COPYCONTENTS, mode,
241
curl_formadd(&formdata,
243
CURLFORM_COPYNAME, "ff_mode",
244
CURLFORM_COPYCONTENTS, ff_mode,
247
curl_formadd(&formdata,
249
CURLFORM_COPYNAME, "nick",
250
CURLFORM_COPYCONTENTS, n,
253
curl_formadd(&formdata,
255
CURLFORM_COPYNAME, "pass",
256
CURLFORM_COPYCONTENTS, p,
259
curl_formadd(&formdata,
261
CURLFORM_COPYNAME, "msg",
262
CURLFORM_COPYCONTENTS, m,
269
266
curl_handle = curl_easy_init();
271
268
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.tangogps.org/friends/update_pos.php");
272
269
curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formdata);
273
270
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb_write_to_mem);
274
271
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
275
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, VERSION );
272
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0 |" VERSION " | " __VERSION__);
277
276
curl_easy_perform(curl_handle);
278
277
curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &response_code);
281
280
curl_easy_cleanup(curl_handle);
290
if (response_code == 200)
289
if (response_code == 200)
297
296
user_data_sets = g_strsplit_set (chunk.memory, "|", -1);
300
299
gdk_threads_enter();
301
300
g_slist_free(friends_list);
302
301
friends_list = NULL;
303
gtk_label_set_label(label_msg, user_data_sets[0]);
302
gtk_label_set_label(label_msg, user_data_sets[0]);
304
303
gdk_threads_leave();
306
305
while (user_data_sets[i] && !g_str_equal(user_data_sets[i],"EOD") )
310
309
friend_t *friend = g_new0(friend_t,1);
312
311
array = g_strsplit(user_data_sets[i],"#",-1);
313
312
while (array[len]) len++;
321
320
friend->type = atoi(g_strdup(array[0]));
511
518
p = gtk_entry_get_text(pass);
512
519
e = gtk_entry_get_text(email);
515
522
curl_global_init(CURL_GLOBAL_ALL);
518
curl_formadd(&formdata,
520
CURLFORM_COPYNAME, "nick",
521
CURLFORM_COPYCONTENTS, n,
524
curl_formadd(&formdata,
526
CURLFORM_COPYNAME, "pass",
527
CURLFORM_COPYCONTENTS, p,
530
curl_formadd(&formdata,
532
CURLFORM_COPYNAME, "email",
533
CURLFORM_COPYCONTENTS, e,
525
curl_formadd(&formdata,
527
CURLFORM_COPYNAME, "nick",
528
CURLFORM_COPYCONTENTS, n,
531
curl_formadd(&formdata,
533
CURLFORM_COPYNAME, "pass",
534
CURLFORM_COPYCONTENTS, p,
537
curl_formadd(&formdata,
539
CURLFORM_COPYNAME, "email",
540
CURLFORM_COPYCONTENTS, e,
538
545
curl_handle = curl_easy_init();
540
547
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.tangogps.org/friends/register_nick.php");
541
548
curl_easy_setopt(curl_handle, CURLOPT_HTTPPOST, formdata);
542
549
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb_write_to_mem);
574
583
GtkWidget *hbox, *label, *vbox, *button;
577
label_txt = g_strdup_printf (_("<b>%s</b>\n"
581
f->nick, f->lastseen, f->away_msg);
586
label_txt = g_strdup_printf("<b>%s</b>\nLast seen:\n%s\n<i>%s</i>",f->nick, f->lastseen, f->away_msg);
583
588
hbox = gtk_hbox_new (FALSE, 2);
584
589
gtk_widget_show (hbox);
586
591
label = gtk_label_new ("");
587
592
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
589
594
gtk_label_set_label(GTK_LABEL(label), label_txt);
591
596
gtk_widget_show (label);
592
597
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
594
599
vbox = gtk_vbox_new (FALSE, 0);
595
600
gtk_widget_show (vbox);
596
601
gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
598
603
button = gtk_button_new_with_mnemonic (_("Msg"));
599
604
gtk_widget_show (button);
600
605
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 2);
602
607
g_signal_connect ((gpointer) button, "clicked",
603
608
G_CALLBACK (on_msg_friend_clicked),
604
609
(gpointer) f->nick);
606
611
button = gtk_button_new_with_mnemonic (_("Go To"));
607
612
gtk_widget_show (button);
608
613
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 2);
610
615
g_signal_connect ((gpointer) button, "clicked",
611
616
G_CALLBACK (on_goto_friend_clicked),
766
772
item->name=g_strdup("pass");
767
773
item->value=g_strdup(p);
768
774
postdata = g_slist_append(postdata, item);
775
781
item = g_new0(postdata_item_t, 1);
776
782
item->name=g_strdup("lat");
777
783
item->value=g_strdup_printf("%f", m->lat);
778
784
postdata = g_slist_append(postdata, item);
780
786
item = g_new0(postdata_item_t, 1);
781
787
item->name=g_strdup("lon");
782
788
item->value=g_strdup_printf("%f", m->lon);
783
postdata = g_slist_append(postdata, item);
789
postdata = g_slist_append(postdata, item);
785
791
item = g_new0(postdata_item_t, 1);
786
792
item->name=g_strdup("txt");
787
793
item->value=g_strdup_printf("%s", m->txt);
788
postdata = g_slist_append(postdata, item);
794
postdata = g_slist_append(postdata, item);
790
796
item = g_new0(postdata_item_t, 1);
791
797
item->name=g_strdup("to");
792
798
item->value=g_strdup_printf("%s", m->to);
793
postdata = g_slist_append(postdata, item);
799
postdata = g_slist_append(postdata, item);
798
804
if(db_ts_last_request_friends)
800
806
item = g_new0(postdata_item_t, 1);
945
949
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
946
950
gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
947
951
gtk_misc_set_padding (GTK_MISC (label), 5, 2);
950
954
label_txt = g_strdup_printf("<i><b>%s</b>, %s</i>\n\n%s",m->from, m->time, m->txt);
952
label_txt = g_strdup_printf(_("<i><small>To: </small><b>%s</b></i>\n\n%s"),
956
label_txt = g_strdup_printf("<i><small>To: </small><b>%s</b></i>\n\n%s",m->to, m->txt);
955
958
gtk_label_set_label(GTK_LABEL(label), label_txt);
957
960
gtk_widget_show (label);
958
961
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
960
963
vbox = gtk_vbox_new (FALSE, 0);
961
964
gtk_widget_show (vbox);
962
965
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
966
969
button = gtk_button_new_with_mnemonic (_("Reply"));
967
970
gtk_widget_show (button);
968
971
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 2);
970
973
g_signal_connect ((gpointer) button, "clicked",
971
974
G_CALLBACK (on_msg_friend_clicked),
972
975
(gpointer) m->from);
974
977
button = gtk_button_new_with_mnemonic (_("Go To"));
975
978
gtk_widget_show (button);
976
979
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 2);
978
981
g_signal_connect ((gpointer) button, "clicked",
979
982
G_CALLBACK (on_goto_friend2_clicked),
987
990
on_goto_friend2_clicked(GtkButton *button, gpointer user_data)
995
printf("btn42 clicked: %s\n", m->from);
992
997
set_current_wp(deg2rad(m->lat), deg2rad(m->lon));
994
999
set_mapcenter(m->lat,m->lon, global_zoom);