Mon, 19 Mar 2007 07:01:17 +0000
sed -ie 's/gaim/purple/g'
|
14328
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
1 | /* |
| 15884 | 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 |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
18 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
19 | * 02111-1307, USA. |
|
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 | #ifndef _CAP_H_ |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
23 | #define _CAP_H_ |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
24 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
25 | #include "internal.h" |
| 15577 | 26 | #include "pidgin.h" |
|
14328
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
27 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
28 | #include "conversation.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
29 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
30 | #include "gtkconv.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
31 | #include "gtkblist.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
32 | #include "gtkplugin.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
33 | #include "gtkutils.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
34 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
35 | #include "blist.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
36 | #include "notify.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
37 | #include "version.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
38 | #include "debug.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
39 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
40 | #include "util.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
41 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
42 | #include <glib.h> |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
43 | #include <time.h> |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
44 | #include <sqlite3.h> |
|
14328
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
45 | #include "cap_statistics.h" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
46 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
47 | #define CAP_PLUGIN_ID "gtk-g-off_-cap" |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
48 | |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
49 | /* Variables used throughout lifetime of the plugin */ |
| 15884 | 50 | PurplePlugin *_plugin_pointer; |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
51 | sqlite3 *_db; /**< The database */ |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
52 | |
|
14328
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
53 | GHashTable *_buddy_stats = NULL; |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
54 | GHashTable *_my_offline_times = NULL; |
|
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
55 | gboolean _signals_connected; |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
56 | gboolean _sqlite_initialized; |
|
14328
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
57 | |
|
14412
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
58 | /* Prefs UI */ |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
59 | typedef struct _CapPrefsUI CapPrefsUI; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
60 | |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
61 | struct _CapPrefsUI { |
|
14412
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
62 | GtkWidget *ret; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
63 | GtkWidget *cap_vbox; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
64 | GtkWidget *table_layout; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
65 | |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
66 | GtkWidget *threshold_label; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
67 | GtkWidget *threshold_input; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
68 | GtkWidget *threshold_minutes_label; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
69 | |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
70 | GtkWidget *msg_difference_label; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
71 | GtkWidget *msg_difference_input; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
72 | GtkWidget *msg_difference_minutes_label; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
73 | |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
74 | GtkWidget *last_seen_label; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
75 | GtkWidget *last_seen_input; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
76 | GtkWidget *last_seen_minutes_label; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
77 | }; |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
78 | |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
79 | static void generate_prediction(CapStatistics *statistics); |
| 15884 | 80 | static double generate_prediction_for(PurpleBuddy *buddy); |
| 81 | static CapStatistics * get_stats_for(PurpleBuddy *buddy); | |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
82 | static void destroy_stats(gpointer data); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
83 | static void 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
|
84 | static void 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
|
85 | static void 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
|
86 | static void 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
|
87 | static void insert_cap_success(CapStatistics *stats); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
88 | static void insert_cap_failure(CapStatistics *stats); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
89 | static gboolean max_message_difference_cb(gpointer data); |
| 15572 | 90 | /* Pidgin Signal Handlers */ |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
91 | /* sent-im-msg */ |
| 15884 | 92 | static void sent_im_msg(PurpleAccount *account, const char *receiver, const char *message); |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
93 | /* received-im-msg */ |
| 15884 | 94 | static void received_im_msg(PurpleAccount *account, char *sender, char *message, PurpleConversation *conv, PurpleMessageFlags flags); |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
95 | /* buddy-status-changed */ |
| 15884 | 96 | static void buddy_status_changed(PurpleBuddy *buddy, PurpleStatus *old_status, PurpleStatus *status); |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
97 | /* buddy-signed-on */ |
| 15884 | 98 | static void buddy_signed_on(PurpleBuddy *buddy); |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
99 | /* buddy-signed-off */ |
| 15884 | 100 | static void buddy_signed_off(PurpleBuddy *buddy); |
| 101 | static void buddy_idle(PurpleBuddy *buddy, gboolean old_idle, gboolean idle); | |
| 102 | static void blist_node_extended_menu(PurpleBlistNode *node, GList **menu); | |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
103 | /* drawing-tooltip */ |
| 15884 | 104 | static void drawing_tooltip(PurpleBlistNode *node, GString *text, gboolean full); |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
105 | /* signed-on */ |
| 15884 | 106 | static void signed_on(PurpleConnection *gc); |
|
14578
86ee02190858
[gaim-migrate @ 17236]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14573
diff
changeset
|
107 | /* signed-off */ |
| 15884 | 108 | static void signed_off(PurpleConnection *gc); |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
109 | static void reset_all_last_message_times(gpointer key, gpointer value, gpointer user_data); |
| 15884 | 110 | static PurpleStatus * get_status_for(PurpleBuddy *buddy); |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
111 | static void create_tables(); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
112 | static gboolean create_database_connection(); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
113 | static void destroy_database_connection(); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
114 | static guint word_count(const gchar *string); |
|
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
115 | static void insert_status_change(CapStatistics *statistics); |
| 15884 | 116 | 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
|
117 | static void insert_word_count(const char *sender, const char *receiver, guint count); |
| 15884 | 118 | void display_statistics_action_cb(PurpleBlistNode *node, gpointer data); |
| 119 | static gboolean plugin_load(PurplePlugin *plugin); | |
| 120 | static void add_plugin_functionality(PurplePlugin *plugin); | |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
121 | static void cancel_conversation_timeouts(gpointer key, gpointer value, gpointer user_data); |
| 15884 | 122 | static void remove_plugin_functionality(PurplePlugin *plugin); |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
123 | static void write_stats_on_unload(gpointer key, gpointer value, gpointer user_data); |
| 15884 | 124 | static gboolean plugin_unload(PurplePlugin *plugin); |
|
14573
7e18a0a07718
[gaim-migrate @ 17231]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14412
diff
changeset
|
125 | static CapPrefsUI * create_cap_prefs_ui(); |
|
14412
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
126 | static void cap_prefs_ui_destroy_cb(GtkObject *object, gpointer user_data); |
|
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
127 | static void numeric_spinner_prefs_cb(GtkSpinButton *spinbutton, gpointer user_data); |
| 15884 | 128 | static GtkWidget * get_config_frame(PurplePlugin *plugin); |
| 129 | static void init_plugin(PurplePlugin *plugin); | |
|
14412
e2a3932dc608
[gaim-migrate @ 17053]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
14328
diff
changeset
|
130 | |
|
14328
34f47ce417d4
[gaim-migrate @ 16948]
Geoff Foster <g-off_@users.sourceforge.net>
parents:
diff
changeset
|
131 | #endif |