pidgin/plugins/cap/cap.c

Tue, 07 May 2013 05:04:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Tue, 07 May 2013 05:04:46 -0400
changeset 33923
0fcc5635daba
parent 33754
a860609d9c9e
child 34699
09b2c9219b57
child 38258
9a6551eba09c
permissions
-rw-r--r--

Rewrite debug window filter in JS.

Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.

I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.

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;
33754
a860609d9c9e Fix from David Walser for a crash in the CAP plugin.
Daniel Atallah <datallah@pidgin.im>
parents: 33471
diff changeset
46 char *sql, *sta_id = NULL;
14573
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
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
96
33471
b120a1fe399e A patch from Euro on trac, heavily modified by me for simplicity and to kill
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 31294
diff changeset
97 sta_id = purple_status_get_id(get_status_for(buddy));
b120a1fe399e A patch from Euro on trac, heavily modified by me for simplicity and to kill
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 31294
diff changeset
98
b120a1fe399e A patch from Euro on trac, heavily modified by me for simplicity and to kill
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 31294
diff changeset
99 if(sta_id && !strcmp(sta_id, "offline")) {
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
100 /* This is kind of stupid, change it. */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
101 if(prediction == 1.0f)
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
102 prediction = 0.0f;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
103 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
104
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
105 if(generated)
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
106 return prediction;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
107 else
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
108 return -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
109 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
110
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
111 static CapStatistics * get_stats_for(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
112 CapStatistics *stats;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
113
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
114 g_return_val_if_fail(buddy != NULL, NULL);
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
115
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
116 stats = g_hash_table_lookup(_buddy_stats, buddy->name);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
117 if(!stats) {
22604
226486bb16b7 Fix for accessing uninitialized memory
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22104
diff changeset
118 stats = g_malloc0(sizeof(CapStatistics));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
119 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
120 stats->buddy = buddy;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
121 stats->last_seen = -1;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
122 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
123
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 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
125 } 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
126 /* 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
127 * 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
128 stats->buddy = buddy;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
129 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
130 generate_prediction(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
131 return stats;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
132 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
133
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
134 static void destroy_stats(gpointer data) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
135 CapStatistics *stats = data;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
136 g_free(stats->prediction);
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
137 /* g_free(stats->hourly_usage); */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
138 /* 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
139 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
140 purple_timeout_remove(stats->timeout_source_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
141 g_free(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
142 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
143
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
144 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
145 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
146 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
147 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
148 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
149 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
150 "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
151 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
152 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
153
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
154 purple_debug_info("cap", "%s\n", sql_select);
14573
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 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
157
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
158 rc = sqlite3_step(stmt);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
159
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
160 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
161 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
162 buddy_name, account, protocol, minute, 1, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
163 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
164 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
165 "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
166 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
167 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
168 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
169 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
170 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
171 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
172 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
173
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
174 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
175 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
176
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
177 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
178 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
179 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
180
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
181 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
182 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
183 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
184 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
185 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
186 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
187 "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
188 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
189 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
190
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
191 purple_debug_info("cap", "%s\n", sql_select);
14573
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 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
194
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
195 rc = sqlite3_step(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
196
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
197 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
198 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
199 buddy_name, account, protocol, status_id, 1, 0);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
200 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
201 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
202 "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
203 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
204 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
205 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
206 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
207 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
208 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
209 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
210
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
211 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
212 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
213
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
214 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
215 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
216 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
217
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
218 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
219 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
220 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
221 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
222 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
223 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
224 "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
225 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
226 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
227
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
228 purple_debug_info("cap", "%s\n", sql_select);
14573
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 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
231
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
232 rc = sqlite3_step(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
233
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
234 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
235 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
236 buddy_name, account, protocol, minute, 0, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
237 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
238 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
239 "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
240 buddy_name, account, protocol, minute);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
241 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
242 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
243 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
244 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
245 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
246 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
247
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
248 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
249 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
250
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
251 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
252 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
253 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
254
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
255 static void
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
256 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
257 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
258 sqlite3_stmt *stmt;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
259 const char *tail;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
260 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
261 "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
262 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
263 char *sql_ins_up = NULL;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
264
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
265 purple_debug_info("cap", "%s\n", sql_select);
14573
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 sqlite3_prepare(_db, sql_select, -1, &stmt, &tail);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
268
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
269 rc = sqlite3_step(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
270
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
271 if(rc == SQLITE_DONE) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
272 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
273 buddy_name, account, protocol, status_id, 0, 1);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
274 } else if(rc == SQLITE_ROW) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
275 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
276 "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
277 buddy_name, account, protocol, status_id);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
278 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
279 purple_debug_info("cap", "%d\n", rc);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
280 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
281 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
282 return;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
283 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
284
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
285 sqlite3_finalize(stmt);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
286 sqlite3_free(sql_select);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
287
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
288 sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
289 sqlite3_free(sql_ins_up);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
290 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
291
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
292 static void insert_cap_success(CapStatistics *stats) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
293 gchar *buddy_name = stats->buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
294 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
295 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
296 const gchar *status_id = (stats->last_message_status_id) ?
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
297 stats->last_message_status_id :
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
298 purple_status_get_id(get_status_for(stats->buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
299 struct tm *current_time;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
300 int minute;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
301
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
302 if(stats->last_message == -1) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
303 time_t now = time(NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
304 current_time = localtime(&now);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
305 } else {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
306 current_time = localtime(&stats->last_message);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
307 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
308 minute = current_time->tm_min + current_time->tm_hour * 60;
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_msg_count_success(buddy_name, account_id, protocol_id, minute);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
311
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
312 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
313
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
314 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
315 stats->last_message_status_id = NULL;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
316 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
317
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
318 static void insert_cap_failure(CapStatistics *stats) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
319 gchar *buddy_name = stats->buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
320 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
321 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
322 const gchar *status_id = (stats->last_message_status_id) ?
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
323 stats->last_message_status_id :
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
324 purple_status_get_id(get_status_for(stats->buddy));
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
325 struct tm *current_time = localtime(&stats->last_message);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
326 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
327
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
328 insert_cap_msg_count_failed(buddy_name, account_id, protocol_id, minute);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
329
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
330 insert_cap_status_count_failed(buddy_name, account_id, protocol_id, status_id);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
331
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
332 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
333 stats->last_message_status_id = NULL;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
334 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
335
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
336 static gboolean max_message_difference_cb(gpointer data) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
337 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
338 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
339 insert_cap_failure(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
340 stats->timeout_source_id = 0;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
341 return FALSE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
342 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
343
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
344 /* Purple Signal Handlers */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
345
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
346 /* sent-im-msg */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
347 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
348 PurpleBuddy *buddy;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
349 guint interval, words;
15487
b4f2636a79ea Remove the timeout-source to fix a possible crash.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
350 CapStatistics *stats = NULL;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
351
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
352 buddy = purple_find_buddy(account, receiver);
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
353
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
354 if (buddy == NULL)
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
355 return;
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
356
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
357 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
358 words = word_count(message);
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
359
15487
b4f2636a79ea Remove the timeout-source to fix a possible crash.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
360 stats = get_stats_for(buddy);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
361
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
362 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
363 stats->last_message = time(NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
364 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
365 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
366 purple_timeout_remove(stats->timeout_source_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
367
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 23517
diff changeset
368 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
369 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
370
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
371 /* received-im-msg */
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
372 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
373 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
374 PurpleBuddy *buddy;
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
375 CapStatistics *stats;
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
376 /* guint words = word_count(message); */
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
377
27983
d18ffba447c9 cap: Ignore auto-resp messages. Closes #4633.
Paul Aurich <darkrain42@pidgin.im>
parents: 26753
diff changeset
378 if (flags & PURPLE_MESSAGE_AUTO_RESP)
d18ffba447c9 cap: Ignore auto-resp messages. Closes #4633.
Paul Aurich <darkrain42@pidgin.im>
parents: 26753
diff changeset
379 return;
d18ffba447c9 cap: Ignore auto-resp messages. Closes #4633.
Paul Aurich <darkrain42@pidgin.im>
parents: 26753
diff changeset
380
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
381 buddy = purple_find_buddy(account, sender);
14883
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
382
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
383 if (buddy == NULL)
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
384 return;
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
385
4b555e4c09f5 [gaim-migrate @ 17588]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14579
diff changeset
386 stats = get_stats_for(buddy);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
387
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
388 /* insert_word_count(sender, buddy_name, words); */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
389
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
390 /* 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
391 * then cancel the timeout callback. */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
392 if(stats->timeout_source_id != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
393 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
394 purple_timeout_remove(stats->timeout_source_id);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
395 stats->timeout_source_id = 0;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
396 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
397
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
398 insert_cap_success(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
399
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
400 /* Reset the last_message value */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
401 stats->last_message = -1;
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
402 /* Reset the last status id value */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
403 stats->last_message_status_id = NULL;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
404 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
405
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
406 /* buddy-status-changed */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
407 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
408 CapStatistics *stats = get_stats_for(buddy);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
409 insert_status_change_from_purple_status(stats, status);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
410 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
411
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
412 /* buddy-signed-on */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
413 static void buddy_signed_on(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
414 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
415
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
416 /* 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
417 * 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
418 * 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
419 if(!stats->buddy) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
420 stats->buddy = buddy;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
421 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
422
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
423 insert_status_change(stats);
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
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
426 /* buddy-signed-off */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
427 static void buddy_signed_off(PurpleBuddy *buddy) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
428 CapStatistics *stats = get_stats_for(buddy);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
429
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
430 /* 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
431 * 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
432 * them up again and continue using their statistics.
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
433 */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
434 insert_status_change(stats);
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
435 /* stats->buddy = NULL; */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
436 stats->last_seen = time(NULL);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
437 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
438
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
439 /* drawing-tooltip */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
440 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
441 if(node->type == PURPLE_BLIST_BUDDY_NODE) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
442 PurpleBuddy *buddy = (PurpleBuddy *)node;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
443 CapStatistics *stats = get_stats_for(buddy);
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
444 /* 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
445 if(stats->prediction->probability >= 0.0) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
446 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
447 100 * stats->prediction->probability);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
448 } else {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
449 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
450 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
451 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
452 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
453
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
454 /* signed-on */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
455 static void signed_on(PurpleConnection *gc) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
456 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
457 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
458 gchar *my_name = g_strdup(my_purple_name);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
459 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
460
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
461 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
462 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
463 char *sql;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
464
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
465 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
466 sqlite3_exec(_db, sql, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
467 sqlite3_free(sql);
14328
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 if(last_offline) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
470 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
471 /* reset all of the last_message times to -1 */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
472 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
473 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
474 g_hash_table_remove(_my_offline_times, my_name);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
475 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
476 g_free(my_name);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
477 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
478
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
479 /* signed-off */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
480 static void signed_off(PurpleConnection *gc) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
481 /* 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
482 * 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
483 * (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
484 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
485 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
486 gchar *my_name = g_strdup(my_purple_name);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
487 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
488 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
489 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
490 char *sql;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
491
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
492 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
493 sqlite3_exec(_db, sql, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
494 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
495
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
496 time(offline_time);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
497 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
498 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
499
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
500 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
501 CapStatistics *stats = value;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
502 stats->last_message = -1;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
503 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
504
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
505 static PurpleStatus * get_status_for(PurpleBuddy *buddy) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
506 PurplePresence *presence = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
507 PurpleStatus *status = purple_presence_get_active_status(presence);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
508 return status;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
509 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
510
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
511 static void create_tables() {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
512 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
513 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
514 "CREATE TABLE IF NOT EXISTS cap_status ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
515 " buddy varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
516 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
517 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
518 " status varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
519 " event_time datetime not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
520 " primary key (buddy, account, protocol, event_time)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
521 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
522 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
523
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
524 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
525 "create table if not exists cap_message ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
526 " sender varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
527 " receiver varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
528 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
529 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
530 " word_count integer not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
531 " event_time datetime not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
532 " primary key (sender, account, protocol, receiver, event_time)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
533 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
534 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
535
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
536 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
537 "create table if not exists cap_msg_count ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
538 " buddy varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
539 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
540 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
541 " minute_val int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
542 " success_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
543 " failed_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
544 " primary key (buddy, account, protocol, minute_val)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
545 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
546 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
547
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
548 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
549 "create table if not exists cap_status_count ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
550 " buddy varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
551 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
552 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
553 " status varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
554 " success_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
555 " failed_count int not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
556 " primary key (buddy, account, protocol, status)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
557 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
558 NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
559
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
560 rc = sqlite3_exec(_db,
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
561 "create table if not exists cap_my_usage ("
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
562 " account varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
563 " protocol varchar(60) not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
564 " online tinyint not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
565 " event_time datetime not null,"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
566 " primary key(account, protocol, online, event_time)"
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
567 ");",
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
568 NULL, NULL, NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
569 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
570
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
571 static gboolean create_database_connection() {
14579
59821d058fa5 [gaim-migrate @ 17237]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14578
diff changeset
572 gchar *path;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
573 int rc;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
574
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
575 if(_db)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
576 return TRUE;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
577
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
578 /* build the path */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
579 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
580
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
581 /* make database connection here */
14579
59821d058fa5 [gaim-migrate @ 17237]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14578
diff changeset
582 rc = sqlite3_open(path, &_db);
59821d058fa5 [gaim-migrate @ 17237]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14578
diff changeset
583 g_free(path);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
584 if(rc != SQLITE_OK)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
585 return FALSE;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
586
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
587 /* Add tables here */
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
588 create_tables();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
589 purple_debug_info("cap", "Database connection successfully made.\n");
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
590 return TRUE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
591 }
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
592 static void destroy_database_connection() {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
593 if(_db)
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
594 sqlite3_close(_db);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
595
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
596 _db = NULL;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
597 }
14328
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 static guint word_count(const gchar *string) {
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
600 /*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
601 gchar **result = g_strsplit_set(string, " ", -1);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
602 guint count = g_strv_length(result);
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 g_strfreev(result);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
605
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
606 return count;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
607 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
608
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
609 static void insert_status_change(CapStatistics *statistics) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
610 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
611 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
612
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
613 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
614 char *sql;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
615 int rc;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
616 const gchar *status_id;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
617 const gchar *buddy_name;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
618 const gchar *protocol_id;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
619 const gchar *account_id;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
620
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
621 /* 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
622 * 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
623 * to many duplicated useless database entries. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
624 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
625 return;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
626
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
627 status_id = purple_status_get_id(status);
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
628 buddy_name = statistics->buddy->name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
629 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
630 account_id = purple_account_get_username(statistics->buddy->account);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
631
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
632 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
633
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
634 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
635
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
636 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
637 rc = sqlite3_exec(_db, sql, NULL, NULL, NULL);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
638 sqlite3_free(sql);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
639 }
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 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
642 /* TODO! */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
643 /* dbi_result result; */
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
644 /* 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
645 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
646
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
647 /* Purple plugin specific code */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
648
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
649 static gboolean plugin_load(PurplePlugin *plugin) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
650 _plugin_pointer = plugin;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
651 _signals_connected = FALSE;
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 /* 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
654 * 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
655 * keys/values are automatically deleted */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
656 _buddy_stats = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, destroy_stats);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
657
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
658 /* ? - Can't remember at the moment
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
659 */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
660 _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
661
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
662 if(create_database_connection()) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
663 add_plugin_functionality(plugin);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
664 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
665 return TRUE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
666 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
667
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
668 static void add_plugin_functionality(PurplePlugin *plugin) {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
669 if(_signals_connected)
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
670 return;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
671
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
672 purple_debug_info("cap", "Adding plugin functionality.\n");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
673
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
674 /* Connect all the signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
675 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
676 PURPLE_CALLBACK(sent_im_msg), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
677
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
678 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
679 PURPLE_CALLBACK(received_im_msg), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
680
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
681 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
682 PURPLE_CALLBACK(buddy_status_changed), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
683
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
684 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
685 PURPLE_CALLBACK(buddy_signed_on), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
686
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
687 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
688 PURPLE_CALLBACK(buddy_signed_off), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
689
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
690 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
691 PURPLE_CALLBACK(drawing_tooltip), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
692
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
693 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
694 PURPLE_CALLBACK(signed_on), NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
695
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
696 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
697 PURPLE_CALLBACK(signed_off), NULL);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
698
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
699 _signals_connected = TRUE;
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
700 }
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
701
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
702 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
703 CapStatistics *stats = value;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
704 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
705 purple_timeout_remove(stats->timeout_source_id);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
706 stats->timeout_source_id = 0;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
707 }
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
708 }
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
709
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
710 static void remove_plugin_functionality(PurplePlugin *plugin) {
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
711 if(!_signals_connected)
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
712 return;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
713
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
714 purple_debug_info("cap", "Removing plugin functionality.\n");
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
715
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
716 /* 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
717 g_hash_table_foreach(_buddy_stats, cancel_conversation_timeouts, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
718
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
719 /* Connect all the signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
720 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
721 PURPLE_CALLBACK(sent_im_msg));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
722
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
723 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
724 PURPLE_CALLBACK(received_im_msg));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
725
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
726 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
727 PURPLE_CALLBACK(buddy_status_changed));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
728
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
729 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
730 PURPLE_CALLBACK(buddy_signed_on));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
731
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
732 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
733 PURPLE_CALLBACK(buddy_signed_off));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
734
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
735 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
736 PURPLE_CALLBACK(drawing_tooltip));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
737
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
738 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
739 PURPLE_CALLBACK(signed_on));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
740
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
741 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
742 PURPLE_CALLBACK(signed_off));
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
743
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
744 _signals_connected = FALSE;
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
745 }
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 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
748 CapStatistics *stats = value;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
749 if(stats->last_message != -1 && stats->buddy != NULL) {
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
750 insert_cap_failure(stats);
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
751 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
752 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
753
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
754 static gboolean plugin_unload(PurplePlugin *plugin) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
755 purple_debug_info("cap", "CAP plugin unloading\n");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
756
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
757 /* clean up memory allocations */
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
758 if(_buddy_stats) {
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
759 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
760 g_hash_table_destroy(_buddy_stats);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
761 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
762
14578
86ee02190858 [gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14575
diff changeset
763 /* close database connection */
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
764 destroy_database_connection();
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
765
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
766 return TRUE;
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
767 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
768
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
769 static CapPrefsUI * create_cap_prefs_ui() {
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
770 CapPrefsUI *ui = g_malloc(sizeof(CapPrefsUI));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
771
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
772 ui->ret = gtk_vbox_new(FALSE, 18);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
773 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
774 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
775
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
776 /* msg_difference spinner */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
777 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
778 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
779 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
780 ui->msg_difference_minutes_label = gtk_label_new(_("minutes"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
781 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
782
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
783 /* last_seen spinner */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
784 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
785 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
786 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
787 ui->last_seen_minutes_label = gtk_label_new(_("minutes"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
788 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
789
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
790 /* threshold spinner */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
791 ui->threshold_label = gtk_label_new(_("Threshold:"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
792 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
793 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
794 ui->threshold_minutes_label = gtk_label_new(_("minutes"));
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
795 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
796
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
797 /* Layout threshold/last-seen/response-timeout input items */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
798 ui->table_layout = gtk_table_new(3, 3, FALSE);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
799 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
800 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
801 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
802
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
803 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
804 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
805 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
806
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
807 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
808 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
809 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
810
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
811 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
812 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
813 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
814
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
815 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
816 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
817 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
818
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
819 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
820 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
821 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
822
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
823 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
824 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
825 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
826
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
827 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
828 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
829 (GtkAttachOptions) (0), 0, 0);
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 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
832 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
833 (GtkAttachOptions) (0), 0, 0);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
834
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
835
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
836 /* Config window - lay it out */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
837 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
838
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
839 /* 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
840 * purple prefs.
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
841 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
842 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
843 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
844 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
845 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
846 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
847 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
848 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
849 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
850 if(purple_prefs_exists("/plugins/gtk/cap/threshold")) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
851 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
852 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
853 }
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
854
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
855 /* Add the signals */
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
856 g_signal_connect(G_OBJECT(ui->ret), "destroy",
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
857 G_CALLBACK(cap_prefs_ui_destroy_cb), ui);
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
858
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
859 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
860 G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/max_msg_difference");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
861
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
862 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
863 G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/max_seen_difference");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
864
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
865 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
866 G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/threshold");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 27983
diff changeset
867
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
868 return ui;
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
869 }
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 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
872 CapPrefsUI *ui = user_data;
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
873 if(_db) {
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
874 add_plugin_functionality(_plugin_pointer);
14412
e2a3932dc608 [gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14328
diff changeset
875 }
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
876 g_free(ui);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
877 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
878
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
879 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
880 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
881 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
882
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15487
diff changeset
883 static PidginPluginUiInfo ui_info = {
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
884 get_config_frame,
17364
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
885 0 /* page_num (reserved) */,
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
886 NULL,NULL,NULL,NULL
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
887 };
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
888
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
889 static PurplePluginInfo info = {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
890 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
891 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
892 PURPLE_MINOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
893 PURPLE_PLUGIN_STANDARD, /**< type */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15487
diff changeset
894 PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
895 0, /**< flags */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
896 NULL, /**< dependencies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
897 PURPLE_PRIORITY_DEFAULT, /**< priority */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
898 CAP_PLUGIN_ID, /**< id */
15418
bf287f742a5a [gaim-migrate @ 18149]
Luke Schierer <lschiere@pidgin.im>
parents: 14883
diff changeset
899 N_("Contact Availability Prediction"), /**< name */
20288
5ca925a094e2 applied changes from 03b709ec2a153e7e82719df0ba4635108bb1d3c6
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
900 DISPLAY_VERSION, /**< version */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
901 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
902 N_("Displays statistical information about your buddies' availability"),
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
903 /** description */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
904 "Geoffrey Foster <geoffrey.foster@gmail.com>", /**< author */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
905 PURPLE_WEBSITE, /**< homepage */
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
906 plugin_load, /**< load */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
907 plugin_unload, /**< unload */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
908 NULL, /**< destroy */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
909 &ui_info, /**< ui_info */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
910 NULL, /**< extra_info */
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
911 NULL, /**< prefs_info */
17364
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
912 NULL,
82d48f3b2967 Add padding, get rid of compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15884
diff changeset
913 NULL,NULL,NULL,NULL
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
914 };
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
915
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
916 static GtkWidget * get_config_frame(PurplePlugin *plugin) {
14573
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
917 CapPrefsUI *ui = create_cap_prefs_ui();
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 /*
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
920 * 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
921 */
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
922 remove_plugin_functionality(_plugin_pointer);
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
923
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
924 return ui->ret;
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
925 }
7e18a0a07718 [gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents: 14412
diff changeset
926
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
927 static void init_plugin(PurplePlugin *plugin) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
928 purple_prefs_add_none("/plugins/gtk/cap");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
929 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
930 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
931 purple_prefs_add_int("/plugins/gtk/cap/threshold", 5);
14328
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
932 }
34f47ce417d4 [gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff changeset
933
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
934 PURPLE_INIT_PLUGIN(cap, init_plugin, info);

mercurial