Mercurial > pidgin
annotate plugins/idle.c @ 13918:61ba85cf05a6
[gaim-migrate @ 16421]
Paco-Paco thinks it would be good to make libgnt configure look for ncursesw.
Thanks to rekkanoryo and grim, we can do that.
committer: Tailor Script <tailor@pidgin.im>
| author | Sadrul Habib Chowdhury <imadil@gmail.com> |
|---|---|
| date | Tue, 04 Jul 2006 18:49:13 +0000 |
| parents | 571aebbe5ec6 |
| children |
| rev | line source |
|---|---|
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
1 /* |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
2 * idle.c - I'dle Mak'er plugin for Gaim |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
3 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
4 * This file is part of Gaim. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
5 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
6 * Gaim is the legal property of its developers, whose names are too numerous |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
8 * source distribution. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
9 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
13 * (at your option) any later version. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
14 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
18 * GNU General Public License for more details. |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
19 * |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 4103 | 23 */ |
| 24 | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
25 #include "internal.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
26 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
27 #include "connection.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
28 #include "debug.h" |
| 11975 | 29 #include "notify.h" |
| 8986 | 30 #include "plugin.h" |
| 31 #include "request.h" | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
32 #include "server.h" |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
33 #include "status.h" |
| 9943 | 34 #include "version.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5614
diff
changeset
|
35 |
| 11754 | 36 /* This plugin no longer depends on gtk */ |
| 37 #define IDLE_PLUGIN_ID "core-idle" | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
38 |
| 11754 | 39 static GList *idled_accts = NULL; |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
40 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
41 static gboolean |
| 12775 | 42 unidle_filter(GaimAccount *acct) |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
43 { |
| 11754 | 44 if (g_list_find(idled_accts, acct)) |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
45 return TRUE; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
46 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
47 return FALSE; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
48 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
49 |
| 12775 | 50 static gboolean |
|
12776
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
51 idleable_filter(GaimAccount *account) |
| 12775 | 52 { |
|
12776
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
53 GaimPlugin *prpl; |
| 12775 | 54 |
|
12776
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
55 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
|
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
56 g_return_val_if_fail(prpl != NULL, FALSE); |
|
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
57 |
|
54ba44abf356
[gaim-migrate @ 15123]
Richard Laager <rlaager@wiktel.com>
parents:
12775
diff
changeset
|
58 return (GAIM_PLUGIN_PROTOCOL_INFO(prpl)->set_idle != NULL); |
| 12775 | 59 } |
| 60 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
61 static void |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
62 set_idle_time(GaimAccount *acct, int mins_idle) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
63 { |
| 11972 | 64 time_t t; |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
65 GaimConnection *gc = gaim_account_get_connection(acct); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
66 GaimPresence *presence = gaim_account_get_presence(acct); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
67 |
|
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
68 if (!gc) |
|
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
69 return; |
|
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
70 |
| 11754 | 71 gaim_debug_info("idle", |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
72 "setting idle time for %s to %d\n", |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
73 gaim_account_get_username(acct), mins_idle); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
74 |
|
13658
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
75 if (mins_idle) |
|
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
76 t = time(NULL) - (60 * mins_idle); /* subtract seconds idle from current time */ |
|
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
77 else |
|
788580688610
[gaim-migrate @ 16060]
Evan Schoenberg <evan.s@dreskin.net>
parents:
12844
diff
changeset
|
78 t = 0; /* time idle is irrelevant */ |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
79 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
80 gaim_presence_set_idle(presence, mins_idle ? TRUE : FALSE, t); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
81 } |
| 4103 | 82 |
| 8986 | 83 static void |
| 84 idle_action_ok(void *ignored, GaimRequestFields *fields) | |
| 85 { | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
86 int tm = gaim_request_fields_get_integer(fields, "mins"); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
87 GaimAccount *acct = gaim_request_fields_get_account(fields, "acct"); |
|
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
88 |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
89 /* only add the account to the GList if it's not already been idled */ |
| 12775 | 90 if (!unidle_filter(acct)) |
| 11754 | 91 { |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
92 gaim_debug_misc("idle", |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
93 "%s hasn't been idled yet; adding to list.\n", |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
94 gaim_account_get_username(acct)); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
95 idled_accts = g_list_append(idled_accts, acct); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
96 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
97 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
98 set_idle_time(acct, tm); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
99 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
100 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
101 static void |
| 12775 | 102 idle_all_action_ok(void *ignored, GaimRequestFields *fields) |
| 103 { | |
| 104 GaimAccount *acct = NULL; | |
|
13833
571aebbe5ec6
[gaim-migrate @ 16282]
Richard Laager <rlaager@wiktel.com>
parents:
13700
diff
changeset
|
105 GList *list, *iter; |
| 12775 | 106 int tm = gaim_request_fields_get_integer(fields, "mins"); |
| 107 const char *prpl_id = NULL; | |
| 108 | |
|
13833
571aebbe5ec6
[gaim-migrate @ 16282]
Richard Laager <rlaager@wiktel.com>
parents:
13700
diff
changeset
|
109 list = gaim_accounts_get_all_active(); |
|
571aebbe5ec6
[gaim-migrate @ 16282]
Richard Laager <rlaager@wiktel.com>
parents:
13700
diff
changeset
|
110 for(iter = list; iter; iter = iter->next) { |
|
571aebbe5ec6
[gaim-migrate @ 16282]
Richard Laager <rlaager@wiktel.com>
parents:
13700
diff
changeset
|
111 acct = (GaimAccount *)(iter->data); |
| 12775 | 112 |
| 113 if(acct) | |
| 114 prpl_id = gaim_account_get_protocol_id(acct); | |
| 115 | |
| 116 if(acct && idleable_filter(acct)) { | |
| 117 gaim_debug_misc("idle", "Idling %s.\n", | |
| 118 gaim_account_get_username(acct)); | |
| 119 | |
| 120 set_idle_time(acct, tm); | |
| 121 | |
| 122 if(!g_list_find(idled_accts, acct)) | |
| 123 idled_accts = g_list_append(idled_accts, acct); | |
| 124 } | |
| 125 } | |
|
13833
571aebbe5ec6
[gaim-migrate @ 16282]
Richard Laager <rlaager@wiktel.com>
parents:
13700
diff
changeset
|
126 |
|
571aebbe5ec6
[gaim-migrate @ 16282]
Richard Laager <rlaager@wiktel.com>
parents:
13700
diff
changeset
|
127 g_list_free(list); |
| 12775 | 128 } |
| 129 | |
| 130 static void | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
131 unidle_action_ok(void *ignored, GaimRequestFields *fields) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
132 { |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
133 GaimAccount *acct = gaim_request_fields_get_account(fields, "acct"); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
134 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
135 set_idle_time(acct, 0); /* unidle the account */ |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
136 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
137 /* once the account has been unidled it shouldn't be in the list */ |
|
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
138 idled_accts = g_list_remove(idled_accts, acct); |
| 4103 | 139 } |
| 140 | |
| 8986 | 141 |
| 142 static void | |
| 9015 | 143 idle_action(GaimPluginAction *action) |
|
6008
35679a3f2bcc
[gaim-migrate @ 6456]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
144 { |
| 8986 | 145 /* Use the super fancy request API */ |
| 4103 | 146 |
| 8986 | 147 GaimRequestFields *request; |
| 148 GaimRequestFieldGroup *group; | |
| 149 GaimRequestField *field; | |
| 150 | |
| 151 group = gaim_request_field_group_new(NULL); | |
| 4103 | 152 |
| 8994 | 153 field = gaim_request_field_account_new("acct", _("Account"), NULL); |
| 12775 | 154 gaim_request_field_account_set_filter(field, idleable_filter); |
| 8986 | 155 gaim_request_field_account_set_show_all(field, FALSE); |
| 156 gaim_request_field_group_add_field(group, field); | |
| 11754 | 157 |
| 8994 | 158 field = gaim_request_field_int_new("mins", _("Minutes"), 10); |
| 8986 | 159 gaim_request_field_group_add_field(group, field); |
| 4103 | 160 |
| 8986 | 161 request = gaim_request_fields_new(); |
| 162 gaim_request_fields_add_group(request, group); | |
| 163 | |
| 9015 | 164 gaim_request_fields(action->plugin, |
| 8986 | 165 N_("I'dle Mak'er"), |
| 166 _("Set Account Idle Time"), | |
| 167 NULL, | |
| 168 request, | |
| 169 _("_Set"), G_CALLBACK(idle_action_ok), | |
| 170 _("_Cancel"), NULL, | |
| 171 NULL); | |
| 4103 | 172 } |
| 173 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
174 static void |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
175 unidle_action(GaimPluginAction *action) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
176 { |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
177 GaimRequestFields *request; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
178 GaimRequestFieldGroup *group; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
179 GaimRequestField *field; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
180 |
| 11975 | 181 if (idled_accts == NULL) |
| 182 { | |
| 183 gaim_notify_info(NULL, NULL, _("None of your accounts are idle."), NULL); | |
| 184 return; | |
| 185 } | |
| 186 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
187 group = gaim_request_field_group_new(NULL); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
188 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
189 field = gaim_request_field_account_new("acct", _("Account"), NULL); |
| 12775 | 190 gaim_request_field_account_set_filter(field, unidle_filter); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
191 gaim_request_field_account_set_show_all(field, FALSE); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
192 gaim_request_field_group_add_field(group, field); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
193 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
194 request = gaim_request_fields_new(); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
195 gaim_request_fields_add_group(request, group); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
196 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
197 gaim_request_fields(action->plugin, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
198 N_("I'dle Mak'er"), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
199 _("Unset Account Idle Time"), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
200 NULL, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
201 request, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
202 _("_Unset"), G_CALLBACK(unidle_action_ok), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
203 _("_Cancel"), NULL, |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
204 NULL); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
205 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
206 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
207 static void |
| 12775 | 208 idle_all_action(GaimPluginAction *action) |
| 209 { | |
| 210 GaimRequestFields *request; | |
| 211 GaimRequestFieldGroup *group; | |
| 212 GaimRequestField *field; | |
| 213 | |
| 214 group = gaim_request_field_group_new(NULL); | |
| 215 | |
| 216 field = gaim_request_field_int_new("mins", _("Minutes"), 10); | |
| 217 gaim_request_field_group_add_field(group, field); | |
| 218 | |
| 219 request = gaim_request_fields_new(); | |
| 220 gaim_request_fields_add_group(request, group); | |
| 221 | |
| 222 gaim_request_fields(action->plugin, | |
| 223 N_("I'dle Mak'er"), | |
| 224 _("Set Idle Time for All Accounts"), | |
| 225 NULL, | |
| 226 request, | |
| 227 _("_Set"), G_CALLBACK(idle_all_action_ok), | |
| 228 _("_Cancel"), NULL, | |
| 229 NULL); | |
| 230 } | |
| 231 | |
| 232 static void | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
233 unidle_all_action(GaimPluginAction *action) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
234 { |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
235 GList *l; |
| 11754 | 236 |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
237 /* freeing the list here will cause segfaults if the user idles an account |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
238 * after the list is freed */ |
| 11754 | 239 for (l = idled_accts; l; l = l->next) |
| 240 { | |
|
11749
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
241 GaimAccount *account = l->data; |
|
7da512f06185
[gaim-migrate @ 14040]
Richard Laager <rlaager@wiktel.com>
parents:
11551
diff
changeset
|
242 set_idle_time(account, 0); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
243 } |
| 11754 | 244 |
| 245 g_list_free(idled_accts); | |
| 246 idled_accts = NULL; | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
247 } |
| 8986 | 248 |
| 249 static GList * | |
| 9015 | 250 actions(GaimPlugin *plugin, gpointer context) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
251 { |
| 8986 | 252 GList *l = NULL; |
| 9015 | 253 GaimPluginAction *act = NULL; |
| 4103 | 254 |
| 12306 | 255 act = gaim_plugin_action_new(_("Set Account Idle Time"), |
| 9015 | 256 idle_action); |
| 257 l = g_list_append(l, act); | |
| 4103 | 258 |
| 12306 | 259 act = gaim_plugin_action_new(_("Unset Account Idle Time"), |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
260 unidle_action); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
261 l = g_list_append(l, act); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
262 |
| 12775 | 263 act = gaim_plugin_action_new(_("Set Idle Time for All Accounts"), |
| 264 idle_all_action); | |
| 265 l = g_list_append(l, act); | |
| 266 | |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
267 act = gaim_plugin_action_new( |
| 12306 | 268 _("Unset Idle Time for All Idled Accounts"), unidle_all_action); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
269 l = g_list_append(l, act); |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
270 |
| 8986 | 271 return l; |
| 4103 | 272 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
273 |
|
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
274 static void |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
275 signing_off_cb(GaimConnection *gc, void *data) |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
276 { |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
277 GaimAccount *account; |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
278 |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
279 account = gaim_connection_get_account(gc); |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
280 idled_accts = g_list_remove(idled_accts, account); |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
281 } |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
282 |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
283 static gboolean |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
284 plugin_load(GaimPlugin *plugin) |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
285 { |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
286 gaim_signal_connect(gaim_connections_get_handle(), "signing-off", |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
287 plugin, |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
288 GAIM_CALLBACK(signing_off_cb), NULL); |
| 12844 | 289 |
| 290 return TRUE; | |
|
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
291 } |
|
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
292 |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
293 static gboolean |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
294 plugin_unload(GaimPlugin *plugin) |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
295 { |
| 11754 | 296 unidle_all_action(NULL); |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
297 |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
298 return TRUE; |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
299 } |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
300 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
301 static GaimPluginInfo info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
302 { |
| 9943 | 303 GAIM_PLUGIN_MAGIC, |
| 304 GAIM_MAJOR_VERSION, | |
| 305 GAIM_MINOR_VERSION, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
306 GAIM_PLUGIN_STANDARD, |
| 8986 | 307 NULL, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
308 0, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
309 NULL, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
310 GAIM_PRIORITY_DEFAULT, |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
311 IDLE_PLUGIN_ID, |
|
13700
85267a333422
[gaim-migrate @ 16103]
Richard Laager <rlaager@wiktel.com>
parents:
13658
diff
changeset
|
312 |
|
85267a333422
[gaim-migrate @ 16103]
Richard Laager <rlaager@wiktel.com>
parents:
13658
diff
changeset
|
313 /* This is a cultural reference. Dy'er Mak'er is a song by Led Zeppelin. |
|
85267a333422
[gaim-migrate @ 16103]
Richard Laager <rlaager@wiktel.com>
parents:
13658
diff
changeset
|
314 If that doesn't translate well into your language, drop the 's before translating. */ |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
315 N_("I'dle Mak'er"), |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
316 VERSION, |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
317 N_("Allows you to hand-configure how long you've been idle"), |
|
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
318 N_("Allows you to hand-configure how long you've been idle"), |
| 6481 | 319 "Eric Warmenhoven <eric@warmenhoven.org>", |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6064
diff
changeset
|
320 GAIM_WEBSITE, |
|
12839
2bf82fdddf5e
[gaim-migrate @ 15187]
Richard Laager <rlaager@wiktel.com>
parents:
12826
diff
changeset
|
321 plugin_load, |
|
11551
78aad676fdb2
[gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents:
11256
diff
changeset
|
322 plugin_unload, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
323 NULL, |
| 8986 | 324 NULL, |
| 325 NULL, | |
| 326 NULL, | |
| 327 actions | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
328 }; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
329 |
| 12826 | 330 static void |
|
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
331 init_plugin(GaimPlugin *plugin) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
332 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
333 } |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4635
diff
changeset
|
334 |
| 8986 | 335 |
| 6063 | 336 GAIM_INIT_PLUGIN(idle, init_plugin, info) |
| 8986 | 337 |
