annotate plugins/lagmeter.c @ 2373:84a5ea08545a

[gaim-migrate @ 2386] you got the mother and the kids, you got the guy and his date we all get mad. we all get late. Looks like somebody! forgot about us! Standing on a corner, waiting for a bus! say hey mister driver man, don't be slow cuz i've got somewhere i've gotta go say hey mister driver man, drive that thing fast! my precious time keeps, slippin' past! let's call the mayor, let's complain look what the city's done to us again tied up in traffic, what do you know the damn city bus, moves so slow --Violent Femmes committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 27 Sep 2001 19:27:52 +0000
parents abdf5f081b29
children b31f0edaf48d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 #define GAIM_PLUGINS
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 #include "gaim.h"
2351
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
3 #include "prpl.h"
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 #include <time.h>
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 #include <sys/types.h>
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7 #include <sys/time.h>
1167
5d1ded9f88b7 [gaim-migrate @ 1177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1122
diff changeset
8 #include <string.h>
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
9 #include <unistd.h>
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
10 #include <math.h>
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 #define MY_LAG_STRING "ZYXCHECKLAGXYZ"
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
14 GModule *handle;
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
15 GtkWidget *lagbox = NULL;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 GtkWidget *my_lagometer;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 struct timeval my_lag_tv;
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
18 guint check_timeout = 0;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 guint delay = 10;
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
20 static GtkWidget *confdlg = NULL;
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
21 struct gaim_connection *my_gc = NULL;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
23 static void avail_now(struct gaim_connection *, void *);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
24
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
25 static void update_lag(int us) {
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 double pct;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28 if (lagbox == NULL) {
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
29 /* guess we better build it then :P */
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
30 GtkWidget *label = gtk_label_new("Lag-O-Meter: ");
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31 GList *tmp = gtk_container_children(GTK_CONTAINER(blist));
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32 GtkWidget *vbox2 = (GtkWidget *)tmp->data;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
33 lagbox = gtk_hbox_new(FALSE, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
34 my_lagometer = gtk_progress_bar_new();
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
35
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
36 gtk_box_pack_start(GTK_BOX(lagbox), label, FALSE, FALSE, 5);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 gtk_box_pack_start(GTK_BOX(lagbox), my_lagometer, TRUE, TRUE, 5);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
38 gtk_widget_set_usize(my_lagometer, 5, 5);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 gtk_widget_show(label);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
41 gtk_widget_show(my_lagometer);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
42
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
43 gtk_box_pack_start(GTK_BOX(vbox2), lagbox, FALSE, TRUE, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
44 gtk_box_reorder_child(GTK_BOX(vbox2), lagbox, 1);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 gtk_widget_show(lagbox);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
46 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
47
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48 pct = us/100000;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49 if (pct > 0)
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
50 pct = 25 * log(pct);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
51 if (pct < 0)
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
52 pct = 0;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
53 if (pct > 100)
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
54 pct = 100;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
55 pct /= 100;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57 gtk_progress_bar_update(GTK_PROGRESS_BAR(my_lagometer), pct);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
58 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
60 static void check_lag(struct gaim_connection *gc, char **who, char **message, void *m) {
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
61 char *name;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
62 if (gc != my_gc)
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
63 return;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
64
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
65 name = g_strdup(normalize(*who));
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 983
diff changeset
66 if (!strcasecmp(normalize(gc->username), name) &&
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
67 (*message != NULL) &&
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
68 !strcmp(*message, MY_LAG_STRING)) {
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
69 struct timeval tv;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
70 int ms;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
71
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
72 gettimeofday(&tv, NULL);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
73
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74 ms = 1000000 * (tv.tv_sec - my_lag_tv.tv_sec);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
75
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
76 ms += tv.tv_usec - my_lag_tv.tv_usec;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
77
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78 update_lag(ms);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
79 *message = NULL;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
80 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81 g_free(name);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
84 static gint send_lag() {
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
85 gettimeofday(&my_lag_tv, NULL);
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
86 if (g_slist_find(connections, my_gc)) {
1295
13e68fb13744 [gaim-migrate @ 1305]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
87 char *m = g_strdup(MY_LAG_STRING);
2351
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
88 if (my_gc->protocol == PROTO_JABBER) {
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
89 if (!strchr(my_gc->username, '@')) {
2353
abdf5f081b29 [gaim-migrate @ 2366]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2351
diff changeset
90 char *buf = g_strconcat(my_gc->username, "@jabber.org/GAIM", NULL);
2351
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
91 serv_send_im(my_gc, buf, m, 1);
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
92 g_free(buf);
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
93 } else if (!strchr(my_gc->username, '/')) {
2353
abdf5f081b29 [gaim-migrate @ 2366]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2351
diff changeset
94 char *buf = g_strconcat(my_gc->username, "@jabber.org/GAIM", NULL);
2351
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
95 serv_send_im(my_gc, buf, m, 1);
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
96 g_free(buf);
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
97 } else
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
98 serv_send_im(my_gc, my_gc->username, m, 1);
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
99 } else
4e2d8992774e [gaim-migrate @ 2364]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1956
diff changeset
100 serv_send_im(my_gc, my_gc->username, m, 1);
1295
13e68fb13744 [gaim-migrate @ 1305]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
101 g_free(m);
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
102 return TRUE;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
103 } else {
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
104 debug_printf("LAGMETER: send_lag called for connection that no longer exists\n");
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
105 check_timeout = 0;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
106 return FALSE;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
107 }
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
108 }
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
109
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
110 static void got_signoff(struct gaim_connection *gc, void *m) {
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
111 if (gc != my_gc)
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
112 return;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
113
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
114 if (check_timeout > 0)
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
115 gtk_timeout_remove(check_timeout);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
116 check_timeout = 0;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
117
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
118 if (confdlg)
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
119 gtk_widget_destroy(confdlg);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
120 confdlg = NULL;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
121
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
122 if (lagbox)
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
123 gtk_widget_destroy(lagbox);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
124 lagbox = NULL;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
125
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
126 if (g_slist_length(connections) > 1) {
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
127 if (connections->data == my_gc) {
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
128 my_gc = NULL;
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
129 avail_now(connections->next->data, NULL);
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
130 } else {
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
131 my_gc = NULL;
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
132 avail_now(connections->data, NULL);
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
133 }
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
134 } else {
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
135 my_gc = NULL;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
136 }
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
137 }
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
138
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
139 static void avail_now(struct gaim_connection *gc, void *m) {
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
140 if (my_gc)
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
141 return;
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
142 update_lag(0);
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
143 check_timeout = gtk_timeout_add(1000 * delay, (GtkFunction)send_lag, NULL);
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
144 my_gc = gc;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
146
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
147 void gaim_plugin_remove() {
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
148 if (check_timeout > 0)
848
5f19ec4a91f7 [gaim-migrate @ 858]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 193
diff changeset
149 gtk_timeout_remove(check_timeout);
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
150 check_timeout = 0;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151 if (confdlg)
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
152 gtk_widget_destroy(confdlg);
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
153 if (lagbox)
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
154 gtk_widget_destroy(lagbox);
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
155
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 confdlg = NULL;
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
157 lagbox = NULL;
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
158 my_gc = NULL;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
159 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
160
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1000
diff changeset
161 char *gaim_plugin_init(GModule *h) {
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 handle = h;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
164 confdlg = NULL;
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
165 lagbox = NULL;
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
166 my_gc = NULL;
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
167
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
168 gaim_signal_connect(handle, event_signon, avail_now, NULL);
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
169 gaim_signal_connect(handle, event_im_recv, check_lag, NULL);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
170 gaim_signal_connect(handle, event_signoff, got_signoff, NULL);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
171
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
172 if (connections)
1000
91b7377e7b45 [gaim-migrate @ 1010]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 983
diff changeset
173 avail_now(connections->data, NULL);
1073
6b013aff4de3 [gaim-migrate @ 1083]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1047
diff changeset
174
6b013aff4de3 [gaim-migrate @ 1083]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1047
diff changeset
175 return NULL;
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
176 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
177
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
178 static void adjust_timeout(GtkWidget *button, GtkWidget *spinner) {
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
179 delay = CLAMP(gtk_spin_button_get_value_as_int(
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
180 GTK_SPIN_BUTTON(spinner)), 0, 3600);
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
181 debug_printf("LAGMETER: new updates: %d\n", delay);
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
182 if (check_timeout > 0)
848
5f19ec4a91f7 [gaim-migrate @ 858]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 193
diff changeset
183 gtk_timeout_remove(check_timeout);
1122
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
184 check_timeout = 0;
889ca2b8697b [gaim-migrate @ 1132]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1073
diff changeset
185 if (my_gc)
1377
569835fcabc3 [gaim-migrate @ 1387]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1295
diff changeset
186 check_timeout = gtk_timeout_add(1000 * delay, (GtkFunction)send_lag, NULL);
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
187 gtk_widget_destroy(confdlg);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
188 confdlg = NULL;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
189 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
190
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
191 void gaim_plugin_config() {
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
192 GtkWidget *label;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
193 GtkAdjustment *adj;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
194 GtkWidget *spinner;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
195 GtkWidget *button;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
196 GtkWidget *box;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
197
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
198 if (confdlg) {
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
199 gtk_widget_show_all(confdlg);
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
200 return;
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
201 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
202
1956
c9c20663e05b [gaim-migrate @ 1966]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1943
diff changeset
203 confdlg = gtk_window_new(GTK_WINDOW_DIALOG);
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
204 gtk_window_set_title(GTK_WINDOW(confdlg), "Gaim Lag Delay");
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
205
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
206 box = gtk_hbox_new(FALSE, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
207 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
208 gtk_container_add(GTK_CONTAINER(confdlg), box);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
209
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
210 label = gtk_label_new("Delay between updates: ");
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
211 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
212 gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
213
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
214 adj = (GtkAdjustment *)gtk_adjustment_new(delay, 0, 3600, 1, 0, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
215 spinner = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 0, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
216 gtk_box_pack_start(GTK_BOX(box), spinner, TRUE, TRUE, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
217
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
218 button = gtk_button_new_with_label("OK");
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
219 gtk_signal_connect(GTK_OBJECT(button), "clicked",
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
220 (GtkSignalFunc)adjust_timeout, spinner);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
221 gtk_box_pack_start(GTK_BOX(box), button, FALSE, TRUE, 0);
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
222
983
a05ad732b613 [gaim-migrate @ 993]
Rob Flynn <gaim@robflynn.com>
parents: 848
diff changeset
223 gtk_widget_show_all(confdlg);
193
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
224 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
225
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
226 char *name() {
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 return "Lag-O-Meter, Pluggified";
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
228 }
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
229
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
230 char *description() {
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
231 return "Your old familiar Lag-O-Meter, in a brand new form.";
6af9b88e4f90 [gaim-migrate @ 203]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232 }