pidgin/plugins/cap/cap.c

Mon, 08 Jun 2009 02:24:49 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Mon, 08 Jun 2009 02:24:49 +0000
changeset 27314
402d25ce01da
parent 26753
a8dca8faae69
child 27983
d18ffba447c9
permissions
-rw-r--r--

Use the JID for adding a chat/buddy because the name is for descriptive
purpose only, and using it will not fill in the Add Chat dialog correctly.
Because the JID is not visible, the user will not know what to actually put
there instead.

14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
2 * Contact Availability Prediction plugin for Purple
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
3 *
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
4 * Copyright (C) 2006 Geoffrey Foster.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
5 *
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
7 * modify it under the terms of the GNU General Public License as
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
8 * published by the Free Software Foundation; either version 2 of the
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
9 * License, or (at your option) any later version.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
10 *
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful, but
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
14 * General Public License for more details.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
15 *
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18938
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18938
diff changeset
19 * 02111-1301, USA.
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
20 */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
21
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
22 #include "cap.h"
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
23
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
24 static void generate_prediction(CapStatistics *statistics) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
25 if(statistics->buddy) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
26 if(statistics->prediction == NULL)
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
27 statistics->prediction = g_malloc(sizeof(CapPrediction));
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
28 statistics->prediction->probability = generate_prediction_for(statistics->buddy);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
29 statistics->prediction->generated_at = time(NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
30 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
31 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
32
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
33 static double generate_prediction_for(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
34 double prediction = 1.0f;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
35 gboolean generated = FALSE;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
36 gchar *buddy_name = buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
37 const gchar *protocol_id = purple_account_get_protocol_id(buddy->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
38 const gchar *account_id = purple_account_get_username(buddy->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
39 const gchar *status_id = purple_status_get_id(get_status_for(buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
40 time_t t = time(NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
41 struct tm *current_time = localtime(&t);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
42 int current_minute = current_time->tm_min + current_time->tm_hour * 60;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
43 int threshold = purple_prefs_get_int("/plugins/gtk/cap/threshold");
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
44 int min_minute = (current_minute - threshold) % 1440;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
45 int max_minute = (current_minute + threshold) % 1440;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
46 char *sql;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
47 sqlite3_stmt *stmt = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
48 const char *tail = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
49 int rc;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
50
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
51
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
52 sql = sqlite3_mprintf("select sum(success_count) as successes, sum(failed_count) as failures "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
53 "from cap_msg_count where "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
54 "buddy=%Q and account=%Q and protocol=%Q and minute_val>=%d and minute_val<=%d;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
55 buddy_name, account_id, protocol_id, min_minute, max_minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
56 rc = sqlite3_prepare(_db, sql, -1, &stmt, &tail);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
57 if(rc == SQLITE_OK) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
58 int successes = 0;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
59 int failures = 0;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
60 if(stmt != NULL) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
61 if(sqlite3_step(stmt) == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
62 successes = sqlite3_column_int(stmt, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
63 failures = sqlite3_column_int(stmt, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
64 if(failures + successes > 0) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
65 prediction *= ((double)successes/((double)(successes+failures)));
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
66 generated = TRUE;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
67 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
68 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
69 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
70 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
71 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
72 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
73
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
74 sql = sqlite3_mprintf("select sum(success_count) as successes, sum(failed_count) as failures "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
75 "from cap_status_count where "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
76 "buddy=%Q and account=%Q and protocol=%Q and status=%Q;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
77 buddy_name, account_id, protocol_id, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
78 rc = sqlite3_prepare(_db, sql, -1, &stmt, &tail);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
79 if(rc == SQLITE_OK) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
80 int successes = 0;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
81 int failures = 0;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
82 if(stmt != NULL) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
83 if(sqlite3_step(stmt) == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
84 successes = sqlite3_column_int(stmt, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
85 failures = sqlite3_column_int(stmt, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
86 if(failures + successes > 0) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
87 prediction *= ((double)successes/((double)(successes+failures)));
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
88 generated = TRUE;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
89 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
90 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
91 sqlite3_finalize(stmt);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
92 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
93 }
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
94 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
95
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
96
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
97 if(strcmp(purple_status_get_id(get_status_for(buddy)), "offline") == 0) {
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
98 /* This is kind of stupid, change it. */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
99 if(prediction == 1.0f)
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
100 prediction = 0.0f;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
101 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
102
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
103 if(generated)
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
104 return prediction;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
105 else
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
106 return -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
107 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
108
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
109 static CapStatistics * get_stats_for(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
110 CapStatistics *stats;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
111
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
112 g_return_val_if_fail(buddy != NULL, NULL);
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
113
18938
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
114 stats = g_hash_table_lookup(_buddy_stats, buddy->name);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
115 if(!stats) {
22604
226486bb16b7 Fix for accessing uninitialized memory
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22104
diff changeset
116 stats = g_malloc0(sizeof(CapStatistics));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
117 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
118 stats->buddy = buddy;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
119 stats->last_seen = -1;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
120 stats->last_status_id = "";
18938
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
121
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
122 g_hash_table_insert(_buddy_stats, g_strdup(buddy->name), stats);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
123 } else {
18938
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
124 /* This may actually be a different PurpleBuddy than what is in stats.
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
125 * We replace stats->buddy to make sure we're looking at a valid pointer. */
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
126 stats->buddy = buddy;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
127 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
128 generate_prediction(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
129 return stats;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
130 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
131
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
132 static void destroy_stats(gpointer data) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
133 CapStatistics *stats = data;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
134 g_free(stats->prediction);
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
135 /* g_free(stats->hourly_usage); */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
136 /* g_free(stats->daily_usage); */
15487
b4f2636a79ea Remove the timeout-source to fix a possible crash.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
137 if (stats->timeout_source_id != 0)
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
138 purple_timeout_remove(stats->timeout_source_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
139 g_free(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
140 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
141
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
142 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
143 insert_cap_msg_count_success(const char *buddy_name, const char *account, const char *protocol, int minute) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
144 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
145 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
146 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
147 char *sql_select = sqlite3_mprintf("SELECT * FROM cap_msg_count WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
148 "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
149 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
150 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
151
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
152 purple_debug_info("cap", "%s\n", sql_select);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
153
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
154 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
155
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
156 rc = sqlite3_step(stmt);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
157
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
158 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
159 sql_ins_up = sqlite3_mprintf("INSERT INTO cap_msg_count VALUES (%Q, %Q, %Q, %d, %d, %d);",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
160 buddy_name, account, protocol, minute, 1, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
161 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
162 sql_ins_up = sqlite3_mprintf("UPDATE cap_msg_count SET success_count=success_count+1 WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
163 "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
164 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
165 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
166 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
167 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
168 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
169 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
170 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
171
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
172 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
173 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
174
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
175 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
176 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
177 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
178
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
179 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
180 insert_cap_status_count_success(const char *buddy_name, const char *account, const char *protocol, const char *status_id) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
181 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
182 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
183 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
184 char *sql_select = sqlite3_mprintf("SELECT * FROM cap_status_count WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
185 "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
186 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
187 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
188
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
189 purple_debug_info("cap", "%s\n", sql_select);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
190
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
191 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
192
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
193 rc = sqlite3_step(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
194
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
195 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
196 sql_ins_up = sqlite3_mprintf("INSERT INTO cap_status_count VALUES (%Q, %Q, %Q, %Q, %d, %d);",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
197 buddy_name, account, protocol, status_id, 1, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
198 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
199 sql_ins_up = sqlite3_mprintf("UPDATE cap_status_count SET success_count=success_count+1 WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
200 "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
201 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
202 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
203 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
204 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
205 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
206 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
207 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
208
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
209 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
210 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
211
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
212 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
213 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
214 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
215
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
216 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
217 insert_cap_msg_count_failed(const char *buddy_name, const char *account, const char *protocol, int minute) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
218 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
219 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
220 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
221 char *sql_select = sqlite3_mprintf("SELECT * FROM cap_msg_count WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
222 "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
223 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
224 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
225
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
226 purple_debug_info("cap", "%s\n", sql_select);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
227
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
228 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
229
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
230 rc = sqlite3_step(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
231
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
232 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
233 sql_ins_up = sqlite3_mprintf("INSERT INTO cap_msg_count VALUES (%Q, %Q, %Q, %d, %d, %d);",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
234 buddy_name, account, protocol, minute, 0, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
235 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
236 sql_ins_up = sqlite3_mprintf("UPDATE cap_msg_count SET failed_count=failed_count+1 WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
237 "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
238 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
239 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
240 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
241 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
242 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
243 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
244 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
245
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
246 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
247 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
248
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
249 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
250 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
251 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
252
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
253 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
254 insert_cap_status_count_failed(const char *buddy_name, const char *account, const char *protocol, const char *status_id) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
255 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
256 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
257 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
258 char *sql_select = sqlite3_mprintf("SELECT * FROM cap_status_count WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
259 "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
260 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
261 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
262
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
263 purple_debug_info("cap", "%s\n", sql_select);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
264
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
265 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
266
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
267 rc = sqlite3_step(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
268
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
269 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
270 sql_ins_up = sqlite3_mprintf("INSERT INTO cap_status_count VALUES (%Q, %Q, %Q, %Q, %d, %d);",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
271 buddy_name, account, protocol, status_id, 0, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
272 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
273 sql_ins_up = sqlite3_mprintf("UPDATE cap_status_count SET failed_count=failed_count+1 WHERE "
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
274 "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
275 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
276 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
277 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
278 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
279 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
280 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
281 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
282
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
283 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
284 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
285
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
286 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
287 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
288 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
289
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
290 static void insert_cap_success(CapStatistics *stats) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
291 gchar *buddy_name = stats->buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
292 const gchar *protocol_id = purple_account_get_protocol_id(stats->buddy->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
293 const gchar *account_id = purple_account_get_username(stats->buddy->account);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
294 const gchar *status_id = (stats->last_message_status_id) ?
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
295 stats->last_message_status_id :
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
296 purple_status_get_id(get_status_for(stats->buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
297 struct tm *current_time;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
298 int minute;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
299
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
300 if(stats->last_message == -1) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
301 time_t now = time(NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
302 current_time = localtime(&now);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
303 } else {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
304 current_time = localtime(&stats->last_message);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
305 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
306 minute = current_time->tm_min + current_time->tm_hour * 60;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
307
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
308 insert_cap_msg_count_success(buddy_name, account_id, protocol_id, minute);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
309
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
310 insert_cap_status_count_success(buddy_name, account_id, protocol_id, status_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
311
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
312 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
313 stats->last_message_status_id = NULL;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
314 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
315
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
316 static void insert_cap_failure(CapStatistics *stats) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
317 gchar *buddy_name = stats->buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
318 const gchar *protocol_id = purple_account_get_protocol_id(stats->buddy->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
319 const gchar *account_id = purple_account_get_username(stats->buddy->account);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
320 const gchar *status_id = (stats->last_message_status_id) ?
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
321 stats->last_message_status_id :
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
322 purple_status_get_id(get_status_for(stats->buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
323 struct tm *current_time = localtime(&stats->last_message);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
324 int minute = current_time->tm_min + current_time->tm_hour * 60;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
325
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
326 insert_cap_msg_count_failed(buddy_name, account_id, protocol_id, minute);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
327
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
328 insert_cap_status_count_failed(buddy_name, account_id, protocol_id, status_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
329
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
330 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
331 stats->last_message_status_id = NULL;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
332 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
333
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
334 static gboolean max_message_difference_cb(gpointer data) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
335 CapStatistics *stats = data;
23517
db3d6a500678 Fix occurred to be spelled correctly. Thanks to bruce89 for noticing. Fixes #6096.
Daniel Atallah <datallah@pidgin.im>
parents: 22782
diff changeset
336 purple_debug_info("cap", "Max Message Difference timeout occurred\n");
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
337 insert_cap_failure(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
338 stats->timeout_source_id = 0;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
339 return FALSE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
340 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
341
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
342 /* Purple Signal Handlers */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
343
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
344 /* sent-im-msg */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
345 static void sent_im_msg(PurpleAccount *account, const char *receiver, const char *message) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
346 PurpleBuddy *buddy;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
347 guint interval, words;
15487
b4f2636a79ea Remove the timeout-source to fix a possible crash.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
348 CapStatistics *stats = NULL;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
349
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
350 buddy = purple_find_buddy(account, receiver);
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
351
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
352 if (buddy == NULL)
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
353 return;
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
354
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
355 interval = purple_prefs_get_int("/plugins/gtk/cap/max_msg_difference") * 60;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
356 words = word_count(message);
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
357
15487
b4f2636a79ea Remove the timeout-source to fix a possible crash.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
358 stats = get_stats_for(buddy);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
359
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
360 insert_word_count(purple_account_get_username(account), receiver, words);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
361 stats->last_message = time(NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
362 stats->last_message_status_id = purple_status_get_id(get_status_for(buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
363 if(stats->timeout_source_id != 0)
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
364 purple_timeout_remove(stats->timeout_source_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
365
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
366 stats->timeout_source_id = purple_timeout_add_seconds(interval, max_message_difference_cb, stats);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
367 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
368
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
369 /* received-im-msg */
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
370 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
371 received_im_msg(PurpleAccount *account, char *sender, char *message, PurpleConversation *conv, PurpleMessageFlags flags) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
372 PurpleBuddy *buddy;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
373 CapStatistics *stats;
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
374 /* guint words = word_count(message); */
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
375
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
376 buddy = purple_find_buddy(account, sender);
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
377
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
378 if (buddy == NULL)
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
379 return;
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
380
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
381 stats = get_stats_for(buddy);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
382
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
383 /* insert_word_count(sender, buddy_name, words); */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
384
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
385 /* If we are waiting for a response from a prior message
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
386 * then cancel the timeout callback. */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
387 if(stats->timeout_source_id != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
388 purple_debug_info("cap", "Cancelling timeout callback\n");
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
389 purple_timeout_remove(stats->timeout_source_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
390 stats->timeout_source_id = 0;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
391 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
392
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
393 insert_cap_success(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
394
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
395 /* Reset the last_message value */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
396 stats->last_message = -1;
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
397 /* Reset the last status id value */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
398 stats->last_message_status_id = NULL;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
399 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
400
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
401 /* buddy-status-changed */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
402 static void buddy_status_changed(PurpleBuddy *buddy, PurpleStatus *old_status, PurpleStatus *status) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
403 CapStatistics *stats = get_stats_for(buddy);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
404 insert_status_change_from_purple_status(stats, status);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
405 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
406
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
407 /* buddy-signed-on */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
408 static void buddy_signed_on(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
409 CapStatistics *stats = get_stats_for(buddy);
18938
39f90d00cd5e Prevent an invalid PurpleBuddy pointer from being used by cap when a non-saved (e.g. Bonjour) buddy logs off and back on. It looks like the code used to (or was intended to) handle this scenario better. Fixes #1860.
Daniel Atallah <datallah@pidgin.im>
parents: 17364
diff changeset
410
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
411 /* If the statistic object existed but doesn't have a buddy pointer associated
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
412 * with it then reassociate one with it. The pointer being null is a result
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
413 * of a buddy with existing stats signing off and Purple sticking around. */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
414 if(!stats->buddy) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
415 stats->buddy = buddy;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
416 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
417
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
418 insert_status_change(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
419 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
420
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
421 /* buddy-signed-off */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
422 static void buddy_signed_off(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
423 CapStatistics *stats = get_stats_for(buddy);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
424
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
425 /* We don't necessarily want to delete a buddies generated statistics every time they go offline.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
426 * Instead we just set the buddy pointer to null so that when they come back online we can look
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
427 * them up again and continue using their statistics.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
428 */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
429 insert_status_change(stats);
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
430 /* stats->buddy = NULL; */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
431 stats->last_seen = time(NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
432 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
433
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
434 /* drawing-tooltip */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
435 static void drawing_tooltip(PurpleBlistNode *node, GString *text, gboolean full) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
436 if(node->type == PURPLE_BLIST_BUDDY_NODE) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
437 PurpleBuddy *buddy = (PurpleBuddy *)node;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
438 CapStatistics *stats = get_stats_for(buddy);
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
439 /* get the probability that this buddy will respond and add to the tooltip */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
440 if(stats->prediction->probability >= 0.0) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
441 g_string_append_printf(text, "\n<b>%s</b> %3.0f %%", _("Response Probability:"),
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
442 100 * stats->prediction->probability);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
443 } else {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
444 g_string_append_printf(text, "\n<b>%s</b> ???", _("Response Probability:"));
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
445 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
446 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
447 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
448
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
449 /* signed-on */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
450 static void signed_on(PurpleConnection *gc) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
451 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
452 const char *my_purple_name = purple_account_get_username(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
453 gchar *my_name = g_strdup(my_purple_name);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
454 time_t *last_offline = g_hash_table_lookup(_my_offline_times, my_name);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
455
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
456 const gchar *account_id = purple_account_get_username(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
457 const gchar *protocol_id = purple_account_get_protocol_id(account);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
458 char *sql;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
459
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
460 sql = sqlite3_mprintf("insert into cap_my_usage values(%Q, %Q, %d, now());", account_id, protocol_id, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
461 sqlite3_exec(_db, sql, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
462 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
463
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
464 if(last_offline) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
465 if(difftime(*last_offline, time(NULL)) > purple_prefs_get_int("/plugins/gtk/cap/max_seen_difference") * 60) {
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
466 /* reset all of the last_message times to -1 */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
467 g_hash_table_foreach(_my_offline_times, reset_all_last_message_times, NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
468 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
469 g_hash_table_remove(_my_offline_times, my_name);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
470 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
471 g_free(my_name);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
472 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
473
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
474 /* signed-off */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
475 static void signed_off(PurpleConnection *gc) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
476 /* Here we record the time you (the user) sign off of an account.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
477 * The account username is the key in the hashtable and the sign off time_t
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
478 * (equal to the sign off time) is the value. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
479 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
480 const char *my_purple_name = purple_account_get_username(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
481 gchar *my_name = g_strdup(my_purple_name);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
482 time_t *offline_time = g_malloc(sizeof(time_t));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
483 const gchar *account_id = purple_account_get_username(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
484 const gchar *protocol_id = purple_account_get_protocol_id(account);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
485 char *sql;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
486
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
487 sql = sqlite3_mprintf("insert into cap_my_usage values(%Q, %Q, %d, now());", account_id, protocol_id, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
488 sqlite3_exec(_db, sql, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
489 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
490
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
491 time(offline_time);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
492 g_hash_table_insert(_my_offline_times, my_name, offline_time);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
493 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
494
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
495 static void reset_all_last_message_times(gpointer key, gpointer value, gpointer user_data) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
496 CapStatistics *stats = value;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
497 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
498 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
499
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
500 static PurpleStatus * get_status_for(PurpleBuddy *buddy) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
501 PurplePresence *presence = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
502 PurpleStatus *status = purple_presence_get_active_status(presence);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
503 return status;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
504 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
505
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
506 static void create_tables() {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
507 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
508 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
509 "CREATE TABLE IF NOT EXISTS cap_status ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
510 " buddy varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
511 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
512 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
513 " status varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
514 " event_time datetime not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
515 " primary key (buddy, account, protocol, event_time)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
516 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
517 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
518
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
519 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
520 "create table if not exists cap_message ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
521 " sender varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
522 " receiver varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
523 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
524 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
525 " word_count integer not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
526 " event_time datetime not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
527 " primary key (sender, account, protocol, receiver, event_time)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
528 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
529 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
530
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
531 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
532 "create table if not exists cap_msg_count ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
533 " buddy varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
534 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
535 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
536 " minute_val int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
537 " success_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
538 " failed_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
539 " primary key (buddy, account, protocol, minute_val)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
540 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
541 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
542
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
543 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
544 "create table if not exists cap_status_count ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
545 " buddy varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
546 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
547 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
548 " status varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
549 " success_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
550 " failed_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
551 " primary key (buddy, account, protocol, status)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
552 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
553 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
554
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
555 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
556 "create table if not exists cap_my_usage ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
557 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
558 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
559 " online tinyint not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
560 " event_time datetime not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
561 " primary key(account, protocol, online, event_time)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
562 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
563 NULL, NULL, NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
564 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
565
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
566 static gboolean create_database_connection() {
14579
59821d058fa5 [gaim-migrate @ 17237]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14578
diff changeset
567 gchar *path;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
568 int rc;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
569
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
570 if(_db)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
571 return TRUE;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
572
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
573 /* build the path */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
574 path = g_build_filename(purple_user_dir(), "cap.db", (gchar *)NULL);
14575
09627613e743 [gaim-migrate @ 17233]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14573
diff changeset
575
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
576 /* make database connection here */
14579
59821d058fa5 [gaim-migrate @ 17237]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14578
diff changeset
577 rc = sqlite3_open(path, &_db);
59821d058fa5 [gaim-migrate @ 17237]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14578
diff changeset
578 g_free(path);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
579 if(rc != SQLITE_OK)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
580 return FALSE;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
581
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
582 /* Add tables here */
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
583 create_tables();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
584 purple_debug_info("cap", "Database connection successfully made.\n");
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
585 return TRUE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
586 }
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
587 static void destroy_database_connection() {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
588 if(_db)
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
589 sqlite3_close(_db);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
590
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
591 _db = NULL;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
592 }
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
593
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
594 static guint word_count(const gchar *string) {
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
595 /*TODO: doesn't really work, should use regex instead (#include <regex.h>)*/
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
596 gchar **result = g_strsplit_set(string, " ", -1);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
597 guint count = g_strv_length(result);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
598
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
599 g_strfreev(result);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
600
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
601 return count;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
602 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
603
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
604 static void insert_status_change(CapStatistics *statistics) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
605 insert_status_change_from_purple_status(statistics, get_status_for(statistics->buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
606 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
607
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
608 static void insert_status_change_from_purple_status(CapStatistics *statistics, PurpleStatus *status) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
609 char *sql;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
610 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
611 const gchar *status_id;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
612 const gchar *buddy_name;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
613 const gchar *protocol_id;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
614 const gchar *account_id;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
615
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
616 /* It would seem that some protocols receive periodic updates of the buddies status.
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
617 * Check to make sure the last status is not the same as current status to prevent
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
618 * to many duplicated useless database entries. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
619 if(strcmp(statistics->last_status_id, purple_status_get_id(status)) == 0)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
620 return;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
621
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
622 status_id = purple_status_get_id(status);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
623 buddy_name = statistics->buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
624 protocol_id = purple_account_get_protocol_id(statistics->buddy->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
625 account_id = purple_account_get_username(statistics->buddy->account);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
626
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
627 statistics->last_status_id = purple_status_get_id(status);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
628
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
629 purple_debug_info("cap", "Executing: insert into cap_status (buddy, account, protocol, status, event_time) values(%s, %s, %s, %s, now());\n", buddy_name, account_id, protocol_id, status_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
630
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
631 sql = sqlite3_mprintf("insert into cap_status values (%Q, %Q, %Q, %Q, now());", buddy_name, account_id, protocol_id, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
632 rc = sqlite3_exec(_db, sql, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
633 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
634 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
635
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
636 static void insert_word_count(const char *sender, const char *receiver, guint count) {
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
637 /* TODO! */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
638 /* dbi_result result; */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
639 /* result = dbi_conn_queryf(_conn, "insert into cap_message values(\'%s\', \'%s\', %d, now());", sender, receiver, count); */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
640 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
641
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
642 /* Purple plugin specific code */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
643
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
644 static gboolean plugin_load(PurplePlugin *plugin) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
645 _plugin_pointer = plugin;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
646 _signals_connected = FALSE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
647
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
648 /* buddy_stats is a hashtable where strings are keys
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
649 * and the keys are a buddies account id (PurpleBuddy.name).
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
650 * keys/values are automatically deleted */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
651 _buddy_stats = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, destroy_stats);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
652
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
653 /* ? - Can't remember at the moment
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
654 */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
655 _my_offline_times = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
656
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
657 if(create_database_connection()) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
658 add_plugin_functionality(plugin);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
659 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
660 return TRUE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
661 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
662
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
663 static void add_plugin_functionality(PurplePlugin *plugin) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
664 if(_signals_connected)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
665 return;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
666
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
667 purple_debug_info("cap", "Adding plugin functionality.\n");
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
668
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
669 /* Connect all the signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
670 purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
671 PURPLE_CALLBACK(sent_im_msg), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
672
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
673 purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
674 PURPLE_CALLBACK(received_im_msg), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
675
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
676 purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
677 PURPLE_CALLBACK(buddy_status_changed), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
678
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
679 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
680 PURPLE_CALLBACK(buddy_signed_on), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
681
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
682 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
683 PURPLE_CALLBACK(buddy_signed_off), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
684
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
685 purple_signal_connect(pidgin_blist_get_handle(), "drawing-tooltip", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
686 PURPLE_CALLBACK(drawing_tooltip), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
687
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
688 purple_signal_connect(purple_connections_get_handle(), "signed-on", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
689 PURPLE_CALLBACK(signed_on), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
690
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
691 purple_signal_connect(purple_connections_get_handle(), "signed-off", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
692 PURPLE_CALLBACK(signed_off), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
693
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
694 _signals_connected = TRUE;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
695 }
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
696
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
697 static void cancel_conversation_timeouts(gpointer key, gpointer value, gpointer user_data) {
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
698 CapStatistics *stats = value;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
699 if(stats->timeout_source_id != 0) {
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
700 purple_timeout_remove(stats->timeout_source_id);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
701 stats->timeout_source_id = 0;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
702 }
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
703 }
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
704
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
705 static void remove_plugin_functionality(PurplePlugin *plugin) {
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
706 if(!_signals_connected)
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
707 return;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
708
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
709 purple_debug_info("cap", "Removing plugin functionality.\n");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
710
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
711 /* If there are any timeouts waiting to be processed then cancel them */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
712 g_hash_table_foreach(_buddy_stats, cancel_conversation_timeouts, NULL);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
713
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
714 /* Connect all the signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
715 purple_signal_disconnect(purple_conversations_get_handle(), "sent-im-msg", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
716 PURPLE_CALLBACK(sent_im_msg));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
717
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
718 purple_signal_disconnect(purple_conversations_get_handle(), "received-im-msg", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
719 PURPLE_CALLBACK(received_im_msg));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
720
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
721 purple_signal_disconnect(purple_blist_get_handle(), "buddy-status-changed", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
722 PURPLE_CALLBACK(buddy_status_changed));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
723
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
724 purple_signal_disconnect(purple_blist_get_handle(), "buddy-signed-on", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
725 PURPLE_CALLBACK(buddy_signed_on));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
726
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
727 purple_signal_disconnect(purple_blist_get_handle(), "buddy-signed-off", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
728 PURPLE_CALLBACK(buddy_signed_off));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
729
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
730 purple_signal_disconnect(pidgin_blist_get_handle(), "drawing-tooltip", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
731 PURPLE_CALLBACK(drawing_tooltip));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
732
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
733 purple_signal_disconnect(purple_connections_get_handle(), "signed-on", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
734 PURPLE_CALLBACK(signed_on));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
735
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
736 purple_signal_disconnect(purple_connections_get_handle(), "signed-off", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
737 PURPLE_CALLBACK(signed_off));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
738
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
739 _signals_connected = FALSE;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
740 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
741
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
742 static void write_stats_on_unload(gpointer key, gpointer value, gpointer user_data) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
743 CapStatistics *stats = value;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
744 if(stats->last_message != -1 && stats->buddy != NULL) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
745 insert_cap_failure(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
746 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
747 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
748
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
749 static gboolean plugin_unload(PurplePlugin *plugin) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
750 purple_debug_info("cap", "CAP plugin unloading\n");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
751
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
752 /* clean up memory allocations */
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
753 if(_buddy_stats) {
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
754 g_hash_table_foreach(_buddy_stats, write_stats_on_unload, NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
755 g_hash_table_destroy(_buddy_stats);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
756 }
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
757
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
758 /* close database connection */
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
759 destroy_database_connection();
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
760
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
761 return TRUE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
762 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
763
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
764 static CapPrefsUI * create_cap_prefs_ui() {
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
765 CapPrefsUI *ui = g_malloc(sizeof(CapPrefsUI));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
766
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
767 ui->ret = gtk_vbox_new(FALSE, 18);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
768 gtk_container_set_border_width(GTK_CONTAINER(ui->ret), 10);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15487
diff changeset
769 ui->cap_vbox = pidgin_make_frame(ui->ret, _("Statistics Configuration"));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
770
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
771 /* msg_difference spinner */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
772 ui->msg_difference_label = gtk_label_new(_("Maximum response timeout:"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
773 gtk_misc_set_alignment(GTK_MISC(ui->msg_difference_label), 0, 0.5);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
774 ui->msg_difference_input = gtk_spin_button_new_with_range(1, 1440, 1);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
775 ui->msg_difference_minutes_label = gtk_label_new(_("minutes"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
776 gtk_misc_set_alignment(GTK_MISC(ui->msg_difference_minutes_label), 0, 0.5);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
777
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
778 /* last_seen spinner */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
779 ui->last_seen_label = gtk_label_new(_("Maximum last-seen difference:"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
780 gtk_misc_set_alignment(GTK_MISC(ui->last_seen_label), 0, 0.5);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
781 ui->last_seen_input = gtk_spin_button_new_with_range(1, 1440, 1);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
782 ui->last_seen_minutes_label = gtk_label_new(_("minutes"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
783 gtk_misc_set_alignment(GTK_MISC(ui->last_seen_minutes_label), 0, 0.5);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
784
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
785 /* threshold spinner */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
786 ui->threshold_label = gtk_label_new(_("Threshold:"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
787 gtk_misc_set_alignment(GTK_MISC(ui->threshold_label), 0, 0.5);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
788 ui->threshold_input = gtk_spin_button_new_with_range(1, 1440, 1);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
789 ui->threshold_minutes_label = gtk_label_new(_("minutes"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
790 gtk_misc_set_alignment(GTK_MISC(ui->threshold_minutes_label), 0, 0.5);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
791
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
792 /* Layout threshold/last-seen/response-timeout input items */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
793 ui->table_layout = gtk_table_new(3, 3, FALSE);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
794 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->threshold_label, 0, 1, 0, 1,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
795 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
796 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
797
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
798 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->threshold_input, 1, 2, 0, 1,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
799 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
800 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
801
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
802 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->threshold_minutes_label, 2, 3, 0, 1,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
803 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
804 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
805
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
806 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->msg_difference_label, 0, 1, 1, 2,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
807 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
808 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
809
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
810 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->msg_difference_input, 1, 2, 1, 2,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
811 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
812 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
813
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
814 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->msg_difference_minutes_label, 2, 3, 1, 2,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
815 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
816 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
817
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
818 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->last_seen_label, 0, 1, 2,3,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
819 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
820 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
821
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
822 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->last_seen_input, 1, 2, 2, 3,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
823 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
824 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
825
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
826 gtk_table_attach(GTK_TABLE(ui->table_layout), ui->last_seen_minutes_label, 2, 3, 2, 3,
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
827 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
828 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
829
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
830
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
831 /* Config window - lay it out */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
832 gtk_box_pack_start(GTK_BOX(ui->cap_vbox), ui->table_layout, FALSE, FALSE, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
833
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
834 /* Set the input areas to contain the configuration values from
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
835 * purple prefs.
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
836 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
837 if(purple_prefs_exists("/plugins/gtk/cap/max_msg_difference")) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
838 int max_msg_diff = purple_prefs_get_int("/plugins/gtk/cap/max_msg_difference");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
839 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ui->msg_difference_input), max_msg_diff);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
840 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
841 if(purple_prefs_exists("/plugins/gtk/cap/max_seen_difference")) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
842 int max_seen_diff = purple_prefs_get_int("/plugins/gtk/cap/max_seen_difference");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
843 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ui->last_seen_input), max_seen_diff);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
844 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
845 if(purple_prefs_exists("/plugins/gtk/cap/threshold")) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
846 int threshold = purple_prefs_get_int("/plugins/gtk/cap/threshold");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
847 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ui->threshold_input), threshold);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
848 }
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
849
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
850 /* Add the signals */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
851 g_signal_connect(G_OBJECT(ui->ret), "destroy",
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
852 G_CALLBACK(cap_prefs_ui_destroy_cb), ui);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
853
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
854 g_signal_connect(G_OBJECT(ui->msg_difference_input), "value-changed",
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
855 G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/max_msg_difference");
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
856
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
857 g_signal_connect(G_OBJECT(ui->last_seen_input), "value-changed",
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
858 G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/max_seen_difference");
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
859
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
860 g_signal_connect(G_OBJECT(ui->threshold_input), "value-changed",
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
861 G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/threshold");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
862
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
863 return ui;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
864 }
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
865
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
866 static void cap_prefs_ui_destroy_cb(GtkObject *object, gpointer user_data) {
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
867 CapPrefsUI *ui = user_data;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
868 if(_db) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
869 add_plugin_functionality(_plugin_pointer);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
870 }
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
871 g_free(ui);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
872 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
873
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
874 static void numeric_spinner_prefs_cb(GtkSpinButton *spinbutton, gpointer user_data) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
875 purple_prefs_set_int(user_data, gtk_spin_button_get_value_as_int(spinbutton));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
876 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
877
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15487
diff changeset
878 static PidginPluginUiInfo ui_info = {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
879 get_config_frame,
17364
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
880 0 /* page_num (reserved) */,
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
881 NULL,NULL,NULL,NULL
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
882 };
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
883
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
884 static PurplePluginInfo info = {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
885 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
886 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
887 PURPLE_MINOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
888 PURPLE_PLUGIN_STANDARD, /**< type */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15487
diff changeset
889 PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
890 0, /**< flags */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
891 NULL, /**< dependencies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
892 PURPLE_PRIORITY_DEFAULT, /**< priority */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
893 CAP_PLUGIN_ID, /**< id */
15418
bf287f742a5a [gaim-migrate @ 18149]
Luke Schierer <lschiere@pidgin.im>
parents: 14883
diff changeset
894 N_("Contact Availability Prediction"), /**< name */
20288
5ca925a094e2 applied changes from 03b709ec2a153e7e82719df0ba4635108bb1d3c6
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
895 DISPLAY_VERSION, /**< version */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
896 N_("Contact Availability Prediction plugin."), /** summary */
22782
c465a8b48510 Massage some plugin metadata to look better with the fixed up description pane.
Will Thompson <resiak@pidgin.im>
parents: 22604
diff changeset
897 N_("Displays statistical information about your buddies' availability"),
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
898 /** description */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
899 "Geoffrey Foster <geoffrey.foster@gmail.com>", /**< author */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
900 PURPLE_WEBSITE, /**< homepage */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
901 plugin_load, /**< load */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
902 plugin_unload, /**< unload */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
903 NULL, /**< destroy */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
904 &ui_info, /**< ui_info */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
905 NULL, /**< extra_info */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
906 NULL, /**< prefs_info */
17364
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
907 NULL,
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
908 NULL,NULL,NULL,NULL
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
909 };
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
910
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
911 static GtkWidget * get_config_frame(PurplePlugin *plugin) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
912 CapPrefsUI *ui = create_cap_prefs_ui();
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
913
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
914 /*
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
915 * Prevent database stuff from occuring since we are editing values
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
916 */
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
917 remove_plugin_functionality(_plugin_pointer);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
918
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
919 return ui->ret;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
920 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
921
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
922 static void init_plugin(PurplePlugin *plugin) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
923 purple_prefs_add_none("/plugins/gtk/cap");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
924 purple_prefs_add_int("/plugins/gtk/cap/max_seen_difference", 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
925 purple_prefs_add_int("/plugins/gtk/cap/max_msg_difference", 10);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
926 purple_prefs_add_int("/plugins/gtk/cap/threshold", 5);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
927 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
928
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
929 PURPLE_INIT_PLUGIN(cap, init_plugin, info);

mercurial