comparison plugins/chkmail.c @ 124:5f294f7c4f2e

[gaim-migrate @ 134] Whee committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Sun, 16 Apr 2000 02:01:48 +0000
parents 668727c82810
children b4cd83f1d0b8
comparison
equal deleted inserted replaced
123:f7a5f376f54e 124:5f294f7c4f2e
20 char mailhost[] = ""; 20 char mailhost[] = "";
21 int mailport = 110; 21 int mailport = 110;
22 22
23 static void *handle = NULL; 23 static void *handle = NULL;
24 extern GtkWidget *blist; 24 extern GtkWidget *blist;
25 GtkWidget *maily; 25 extern GtkWidget *buddies;
26 GtkWidget *vbox2;
27 GtkWidget *yo;
28 26
29 GList *tmp; 27 GList *tmp;
30 int lastnum = 0; 28 int lastnum = 0;
31 int orig = 0; 29 int orig = 0;
32 int mytimer; 30 int mytimer;
75 } 73 }
76 close(fd); 74 close(fd);
77 return 0; 75 return 0;
78 } 76 }
79 77
78 void destroy_mail_list()
79 {
80 GList *list;
81 GtkWidget *w;
82
83 list = GTK_TREE(buddies)->children;
84
85 while (list) {
86 w = (GtkWidget *)list->data;
87 if (!strcmp(GTK_LABEL(GTK_BIN(w)->child)->label, "Mail Server")) {
88 gtk_tree_remove_items(GTK_TREE(buddies), list);
89 if (!list)
90 break;
91 }
92 list = list->next;
93 }
94 }
95
96
97 void setup_mail_list()
98 {
99 GList *list;
100 GtkWidget *w;
101 GtkWidget *item;
102 GtkWidget *tree;
103 gchar *buf;
104
105 list = GTK_TREE(buddies)->children;
106
107 while (list) {
108 w = (GtkWidget *)list->data;
109 if (!strcmp(GTK_LABEL(GTK_BIN(w)->child)->label, "Mail Server")) {
110 gtk_tree_remove_items(GTK_TREE(buddies), list);
111 if (!list)
112 break;
113 }
114 list = list->next;
115 }
116
117 item = gtk_tree_item_new_with_label("Mail Server");
118 tree = gtk_tree_new();
119 gtk_widget_show(item);
120 gtk_widget_show(tree);
121 gtk_tree_append(GTK_TREE(buddies), item);
122 gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), tree);
123 gtk_tree_item_expand(GTK_TREE_ITEM(item));
124
125 buf = g_malloc(BUF_LONG);
126
127 g_snprintf(buf, BUF_LONG, "%s (%d/%d)", mailhost, lastnum - orig, orig);
128 item = gtk_tree_item_new_with_label(buf);
129 g_free(buf);
130
131 gtk_tree_append(GTK_TREE(tree), item);
132 gtk_widget_show(item);
133 }
134
80 void gaim_plugin_init(void *h) { 135 void gaim_plugin_init(void *h) {
81 handle = h; 136 handle = h;
82 tmp = gtk_container_children(GTK_CONTAINER(blist)); 137 tmp = gtk_container_children(GTK_CONTAINER(blist));
83 138
84 maily = gtk_label_new("You have no new email");
85 vbox2 = (GtkWidget *)tmp->data;
86
87 yo = gtk_frame_new(NULL);
88 gtk_frame_set_shadow_type(GTK_FRAME(yo), GTK_SHADOW_IN );
89 gtk_widget_show(yo);
90
91 gtk_box_pack_start(GTK_BOX(vbox2), yo, FALSE, FALSE, 5);
92 gtk_box_reorder_child(GTK_BOX(vbox2), yo, 2);
93 gtk_container_add(GTK_CONTAINER(yo), maily);
94
95 gtk_widget_show(maily);
96
97 orig = num_msgs(); 139 orig = num_msgs();
98 lastnum = orig; 140 lastnum = orig;
99 141
142 gaim_signal_connect(handle, event_blist_update, setup_mail_list, NULL);
143 setup_mail_list();
144
100 mytimer = gtk_timeout_add(30000, (GtkFunction)update_mail, NULL); 145 mytimer = gtk_timeout_add(30000, (GtkFunction)update_mail, NULL);
101 } 146 }
102 147
103 void update_mail () { 148 void update_mail () {
104 int newnum; 149 int newnum;
105 gchar *buf;
106 150
107 gtk_timeout_remove(mytimer); 151 gtk_timeout_remove(mytimer);
108 152
109 newnum = num_msgs(); 153 newnum = num_msgs();
110 154
111 buf = g_malloc(BUF_LONG);
112
113 if ( (newnum >= lastnum) && (newnum > 0)) { 155 if ( (newnum >= lastnum) && (newnum > 0)) {
114 g_snprintf(buf, BUF_LONG, "You have %d new e-mail(s)", newnum - orig); 156 newnum = newnum - orig;
115 } else { 157 } else {
116 g_snprintf(buf, BUF_LONG, "You have no new email"); 158 newnum = 0;
117 } 159 }
118
119 gtk_widget_destroy(maily);
120 maily = gtk_label_new(buf);
121 g_free(buf);
122
123 gtk_container_add(GTK_CONTAINER(yo), maily);
124
125 gtk_widget_show(maily);
126 160
127 if (newnum < lastnum) { 161 if (newnum < lastnum) {
128 orig = 0; 162 orig = 0;
129 } 163 }
130 164
131 lastnum = newnum; 165 lastnum = newnum;
132 mytimer = gtk_timeout_add(30000, (GtkFunction)update_mail, NULL); 166 mytimer = gtk_timeout_add(30000, (GtkFunction)update_mail, NULL);
167 setup_mail_list();
133 } 168 }
134 169
135 170
136 void gaim_plugin_remove() { 171 void gaim_plugin_remove() {
172 gtk_timeout_remove(mytimer);
173 destroy_mail_list();
137 handle = NULL; 174 handle = NULL;
138 gtk_widget_hide(maily);
139 gtk_widget_destroy(yo);
140 gtk_timeout_remove(mytimer);
141 } 175 }
142 176
143 char *name() { 177 char *name() {
144 return "Check Mail"; 178 return "Check Mail";
145 } 179 }