plugins/idle.c

Sat, 26 Apr 2003 17:36:52 +0000

author
Christian Hammond <chipx86@chipx86.com>
date
Sat, 26 Apr 2003 17:36:52 +0000
changeset 5227
6b44f7901f94
parent 5205
242b8aa81328
child 5314
56ef6a09fb99
permissions
-rw-r--r--

[gaim-migrate @ 5597]
debug_printf -> gaim_debug

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
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4585
diff changeset
8 #include "gaim.h"
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
9 #include "multi.h"
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
10 #include "gtkplugin.h"
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
11 #include <sys/time.h>
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
12
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
13 #define IDLE_PLUGIN_ID "gtk-idle"
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
14
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
15 static struct gaim_connection *gc = NULL;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
16
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
17 static void set_idle(GtkWidget *button, GtkWidget *spinner) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
18 time_t t;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
19 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
20 if (!gc) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
21 return;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
22 }
5227
6b44f7901f94 [gaim-migrate @ 5597]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
23 gaim_debug(GAIM_DEBUG_INFO, "idle",
6b44f7901f94 [gaim-migrate @ 5597]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
24 "setting idle time for %s to %d\n", gc->username, tm);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
25 time(&t);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
26 t -= 60 * tm;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
27 gc->lastsent = t;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
28 serv_set_idle(gc, 60 * tm);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
29 gc->is_idle = 0;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
30 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
31
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
32 static void sel_gc(GtkWidget *opt, struct gaim_connection *g) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
33 gc = g;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
34 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
35
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
36 static void make_connect_menu(GtkWidget *box) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
37 GtkWidget *optmenu, *menu, *opt;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
38 GSList *c = connections;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
39 struct gaim_connection *g;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
40
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
41 optmenu = gtk_option_menu_new();
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
42 gtk_box_pack_start(GTK_BOX(box), optmenu, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
43
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
44 menu = gtk_menu_new();
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
45
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
46 while (c) {
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
47 g = (struct gaim_connection *)c->data;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
48 opt = gtk_menu_item_new_with_label(g->username);
4165
9d849f3a4dff [gaim-migrate @ 4394]
Christian Hammond <chipx86@chipx86.com>
parents: 4103
diff changeset
49 g_signal_connect(GTK_OBJECT(opt), "activate",
9d849f3a4dff [gaim-migrate @ 4394]
Christian Hammond <chipx86@chipx86.com>
parents: 4103
diff changeset
50 G_CALLBACK(sel_gc), g);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4608
diff changeset
51 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
52 gtk_widget_show(opt);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
53 c = g_slist_next(c);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
54 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
55
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
56 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu));
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
57 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
58 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
59
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
60 if (connections)
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
61 gc = connections->data;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
62 else
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
63 gc = NULL;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
64 }
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
65
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
66 static GtkWidget *
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
67 get_config_frame(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
68 {
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
69 GtkWidget *ret;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
70 GtkWidget *frame, *label;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
71 GtkWidget *vbox, *hbox;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
72 GtkAdjustment *adj;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
73 GtkWidget *spinner, *button;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
74
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
75 ret = gtk_vbox_new(FALSE, 18);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
76 gtk_container_set_border_width(GTK_CONTAINER(ret), 12);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
77
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
78 frame = make_frame(ret, _("Idle Time"));
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
79
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
80 vbox = gtk_vbox_new(FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
81 gtk_container_add(GTK_CONTAINER(frame), vbox);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
82
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
83 hbox = gtk_hbox_new(FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
84 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
85
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
86 label = gtk_label_new(_("Set"));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
87 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
88
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
89 make_connect_menu(hbox);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
90
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
91 label = gtk_label_new(_("idle for"));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
92 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
93
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
94 adj = (GtkAdjustment *)gtk_adjustment_new(10, 0, G_MAXINT, 1, 0, 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
95 spinner = gtk_spin_button_new(adj, 0, 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
96 gtk_box_pack_start(GTK_BOX(hbox), spinner, TRUE, TRUE, 0);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
97
4287
28045a1884e8 [gaim-migrate @ 4539]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4260
diff changeset
98 label = gtk_label_new(_("minutes."));
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
99 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
100
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
101 hbox = gtk_hbox_new(TRUE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
102 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
104 button = gtk_button_new_with_mnemonic(_("_Set"));
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
105 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
106 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(set_idle), spinner);
4103
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
107
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
108 gtk_widget_show_all(ret);
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
109
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
110 return ret;
a74e571fb3a4 [gaim-migrate @ 4318]
Ashaman TU
parents:
diff changeset
111 }
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
112
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
113 static GaimGtkPluginUiInfo ui_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
114 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
115 get_config_frame
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 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
119 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
120 2,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
121 GAIM_PLUGIN_STANDARD,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
122 GAIM_GTK_PLUGIN_TYPE,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
123 0,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
124 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
125 GAIM_PRIORITY_DEFAULT,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
126 IDLE_PLUGIN_ID,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
127 N_("I'dle Mak'er"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
128 VERSION,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
129 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
130 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
131 "Eric Warmenhoven &lt;eric@warmenhoven.org>",
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
132 WEBSITE,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
133 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
134 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
135 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
136 &ui_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
137 NULL
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
138 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
139
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
140 static void
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
141 __init_plugin(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
142 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
143 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
144
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4635
diff changeset
145 GAIM_INIT_PLUGIN(idle, __init_plugin, info);

mercurial