plugins/idle.c

Tue, 21 Jun 2005 04:40:34 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Tue, 21 Jun 2005 04:40:34 +0000
changeset 11016
9990e360ee9c
parent 9943
b54a762f60fa
child 11033
dc68e074f10d
permissions
-rw-r--r--

[gaim-migrate @ 12885]
Wherever possible, allow users to act on objects and data directly, rather
than through dialogs or explicit commands. For example, it is more intuitive
to drag a circle object around in a diagram rather than selecting a "Move"
command from a menu while the circle is selected. Simlarly, in an email
application, allow the user to attach files by dragging them from the file
manager and dropping them onto the message composition window if they wish.
-- GNOME HIG

This allows direct manipulation of buddy aliases and group names, by moving
the features from dialogs to GtkTreeView's inline editing.

I think this is a great change, but it seems like the type of thing that
might stir up controversy. If so, take it to the mailing list for discussion.
If not, I'll go ahead and perfect this sometime later.

-s.

4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
1 /* a nifty little plugin to set your idle time to whatever you want it to be.
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
2 * useful for almost nothing. mostly just a demo plugin. but it's fun to have
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
3 * 40-day idle times.
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
4 */
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
5
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5614
diff changeset
6 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5614
diff changeset
7
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5614
diff changeset
8 #include "connection.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5614
diff changeset
9 #include "debug.h"
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
10 #include "plugin.h"
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
11 #include "request.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5614
diff changeset
12 #include "server.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9015
diff changeset
13 #include "version.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5614
diff changeset
14
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
15 #define IDLE_PLUGIN_ID "gtk-idle"
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
16
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
17
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
18 static void
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
19 idle_action_ok(void *ignored, GaimRequestFields *fields)
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
20 {
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
21 time_t t;
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
22 int tm;
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
23 GaimAccount *acct;
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
24 GaimConnection *gc;
5587
22cb9fe4798a [gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
25
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
26 tm = gaim_request_fields_get_integer(fields, "mins");
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
27 acct = gaim_request_fields_get_account(fields, "acct");
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
28 gc = gaim_account_get_connection(acct);
5587
22cb9fe4798a [gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
29
5227
6b44f7901f94 [gaim-migrate @ 5597]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
30 gaim_debug(GAIM_DEBUG_INFO, "idle",
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
31 "setting idle time for %s to %d\n",
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
32 gaim_account_get_username(acct), tm);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
33 time(&t);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
34 t -= 60 * tm;
5587
22cb9fe4798a [gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents: 5530
diff changeset
35 gc->last_sent_time = t;
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
36 serv_set_idle(gc, 60 * tm);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
37 gc->is_idle = 0;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
38 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
39
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
40
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
41 static void
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
42 idle_action(GaimPluginAction *action)
6008
052096edd56b [gaim-migrate @ 6456]
Christian Hammond <chipx86@chipx86.com>
parents: 5920
diff changeset
43 {
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
44 /* Use the super fancy request API */
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
45
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
46 GaimRequestFields *request;
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
47 GaimRequestFieldGroup *group;
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
48 GaimRequestField *field;
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
49
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
50 group = gaim_request_field_group_new(NULL);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
51
8994
8727e5ba8637 [gaim-migrate @ 9769]
Ambrose Li <ambrose.li@gmail.com>
parents: 8986
diff changeset
52 field = gaim_request_field_account_new("acct", _("Account"), NULL);
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
53 gaim_request_field_account_set_show_all(field, FALSE);
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
54 gaim_request_field_group_add_field(group, field);
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
55
8994
8727e5ba8637 [gaim-migrate @ 9769]
Ambrose Li <ambrose.li@gmail.com>
parents: 8986
diff changeset
56 field = gaim_request_field_int_new("mins", _("Minutes"), 10);
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
57 gaim_request_field_group_add_field(group, field);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
58
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
59 request = gaim_request_fields_new();
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
60 gaim_request_fields_add_group(request, group);
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
61
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
62 gaim_request_fields(action->plugin,
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
63 N_("I'dle Mak'er"),
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
64 _("Set Account Idle Time"),
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
65 NULL,
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
66 request,
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
67 _("_Set"), G_CALLBACK(idle_action_ok),
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
68 _("_Cancel"), NULL,
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
69 NULL);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
70 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
71
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
72
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
73 static GList *
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
74 actions(GaimPlugin *plugin, gpointer context)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
75 {
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
76 GList *l = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
77 GaimPluginAction *act = NULL;
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
78
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
79 act = gaim_plugin_action_new(_("Set Account Idle Time"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
80 idle_action);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8994
diff changeset
81 l = g_list_append(l, act);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
82
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
83 return l;
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
84 }
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
85
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
86
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
87 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
88 {
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9015
diff changeset
89 GAIM_PLUGIN_MAGIC,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9015
diff changeset
90 GAIM_MAJOR_VERSION,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9015
diff changeset
91 GAIM_MINOR_VERSION,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
92 GAIM_PLUGIN_STANDARD,
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
93 NULL,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
94 0,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
95 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
96 GAIM_PRIORITY_DEFAULT,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
97 IDLE_PLUGIN_ID,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
98 N_("I'dle Mak'er"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
99 VERSION,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
100 N_("Allows you to hand-configure how long you've been idle for"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
101 N_("Allows you to hand-configure how long you've been idle for"),
6481
f8d7460aab30 [gaim-migrate @ 6995]
Mark Doliner <markdoliner@pidgin.im>
parents: 6371
diff changeset
102 "Eric Warmenhoven <eric@warmenhoven.org>",
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6064
diff changeset
103 GAIM_WEBSITE,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
104 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
105 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
106 NULL,
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
107 NULL,
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
108 NULL,
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
109 NULL,
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
110 actions
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
111 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
112
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
113
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
114 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5873
diff changeset
115 init_plugin(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
116 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
117 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
118
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
119
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6008
diff changeset
120 GAIM_INIT_PLUGIN(idle, init_plugin, info)
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8749
diff changeset
121

mercurial