plugins/idle.c

Sat, 05 Apr 2003 18:46:37 +0000

author
Herman Bloggs <herman@bluedigits.com>
date
Sat, 05 Apr 2003 18:46:37 +0000
changeset 5040
eae9b0be19ab
parent 4635
475ccd9dc3ac
child 5205
242b8aa81328
permissions
-rw-r--r--

[gaim-migrate @ 5384]
0.60 update

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
4202
8b92de3b1c07 [gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents: 4165
diff changeset
6 #include "config.h"
8b92de3b1c07 [gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents: 4165
diff changeset
7
8b92de3b1c07 [gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents: 4165
diff changeset
8 #ifndef GAIM_PLUGINS
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
9 #define GAIM_PLUGINS
4202
8b92de3b1c07 [gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents: 4165
diff changeset
10 #endif
8b92de3b1c07 [gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents: 4165
diff changeset
11
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4585
diff changeset
12 #include "gaim.h"
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
13 #include "multi.h"
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
14 #include <sys/time.h>
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
15
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
16 static struct gaim_connection *gc = NULL;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
17
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
18 const char *name() {
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
19 return _("I'dle Mak'er");
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
20 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
21
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
22 const char *description() {
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
23 return _("Allows you to hand-configure how long you've been idle for");
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
24 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
25
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
26 char *gaim_plugin_init(GModule *module) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
27 return NULL;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
28 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
29
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
30 static void set_idle(GtkWidget *button, GtkWidget *spinner) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
31 time_t t;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
32 int tm = CLAMP(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner)), 0, G_MAXINT);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
33 if (!gc) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
34 return;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
35 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
36 debug_printf("setting idle time for %s to %d\n", gc->username, tm);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
37 time(&t);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
38 t -= 60 * tm;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
39 gc->lastsent = t;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
40 serv_set_idle(gc, 60 * tm);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
41 gc->is_idle = 0;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
42 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
43
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
44 static void sel_gc(GtkWidget *opt, struct gaim_connection *g) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
45 gc = g;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
46 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
47
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
48 static void make_connect_menu(GtkWidget *box) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
49 GtkWidget *optmenu, *menu, *opt;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
50 GSList *c = connections;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
51 struct gaim_connection *g;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
52
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
53 optmenu = gtk_option_menu_new();
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
54 gtk_box_pack_start(GTK_BOX(box), optmenu, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
55
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
56 menu = gtk_menu_new();
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
57
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
58 while (c) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
59 g = (struct gaim_connection *)c->data;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
60 opt = gtk_menu_item_new_with_label(g->username);
4165
9d849f3a4dff [gaim-migrate @ 4394]
Christian Hammond <chipx86@chipx86.com>
parents: 4103
diff changeset
61 g_signal_connect(GTK_OBJECT(opt), "activate",
9d849f3a4dff [gaim-migrate @ 4394]
Christian Hammond <chipx86@chipx86.com>
parents: 4103
diff changeset
62 G_CALLBACK(sel_gc), g);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4608
diff changeset
63 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
64 gtk_widget_show(opt);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
65 c = g_slist_next(c);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
66 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
67
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
68 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu));
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
69 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
70 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
71
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
72 if (connections)
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
73 gc = connections->data;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
74 else
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
75 gc = NULL;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
76 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
77
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
78 struct gaim_plugin_description desc;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
79 struct gaim_plugin_description *gaim_plugin_desc() {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
80 desc.api_version = PLUGIN_API_VERSION;
4585
cd29170cbc26 [gaim-migrate @ 4869]
Matthew Smith <matthew@smigs.co.uk>
parents: 4298
diff changeset
81 desc.name = g_strdup(_("I'dle Mak'er"));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
82 desc.version = g_strdup(VERSION);
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
83 desc.description = g_strdup(_("Allows you to hand-configure how long you've been idle for"));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
84 desc.authors = g_strdup("Eric Warmenhoven &lt;eric@warmenhoven.org>");
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
85 desc.url = g_strdup(WEBSITE);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
86 return &desc;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
87 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
88
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
89 GtkWidget *gaim_plugin_config_gtk() {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
90 GtkWidget *ret;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
91 GtkWidget *frame, *label;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
92 GtkWidget *vbox, *hbox;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
93 GtkAdjustment *adj;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
94 GtkWidget *spinner, *button;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
95
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
96 ret = gtk_vbox_new(FALSE, 18);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
97 gtk_container_set_border_width(GTK_CONTAINER(ret), 12);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
98
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
99 frame = make_frame(ret, _("Idle Time"));
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
100
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
101 vbox = gtk_vbox_new(FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
102 gtk_container_add(GTK_CONTAINER(frame), vbox);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
104 hbox = gtk_hbox_new(FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
105 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
106
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
107 label = gtk_label_new(_("Set"));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
108 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
109
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
110 make_connect_menu(hbox);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
111
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
112 label = gtk_label_new(_("idle for"));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
113 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
114
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
115 adj = (GtkAdjustment *)gtk_adjustment_new(10, 0, G_MAXINT, 1, 0, 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
116 spinner = gtk_spin_button_new(adj, 0, 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
117 gtk_box_pack_start(GTK_BOX(hbox), spinner, TRUE, TRUE, 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
118
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
119 label = gtk_label_new(_("minutes."));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
120 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
121
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
122 hbox = gtk_hbox_new(TRUE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
123 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
124
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
125 button = gtk_button_new_with_mnemonic(_("_Set"));
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
126 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5);
4165
9d849f3a4dff [gaim-migrate @ 4394]
Christian Hammond <chipx86@chipx86.com>
parents: 4103
diff changeset
127 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(set_idle), spinner);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
128
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
129 gtk_widget_show_all(ret);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
130
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
131 return ret;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
132 }

mercurial