src/gtknotify.c

Sat, 12 Jul 2003 19:08:19 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sat, 12 Jul 2003 19:08:19 +0000
changeset 6101
c3762fa398c4
parent 5872
754c63f29b77
child 6104
cf3241926c4e
permissions
-rw-r--r--

[gaim-migrate @ 6560]
This should fix some icon uploading looping.

Sean, the problem was that, when adding the md5 sum to ssi, the code was
checking if it existed by looking for an item named "0", but it was
actually adding an item named "1." So for accounts with no icon info yet,
Gaim would end up getting in a loop and spiraling into oblivion, only far
less dramatic.

5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file gtknotify.c GTK+ Notification API
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 * @ingroup gtkui
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * gaim
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org>
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * (at your option) any later version.
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * GNU General Public License for more details.
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
23 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
24
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
25 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
26 #include "connection.h"
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
27 #include "stock.h"
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
29 #include "gtknotify.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
30
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
31 #include "ui.h"
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
32
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
33 typedef struct
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
34 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5543
diff changeset
35 GaimConnection *gc;
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
36 char *url;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
37 GtkWidget *dialog;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
38 GtkWidget *label;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
39
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
40 } GaimNotifyMailData;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
41
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
42 static void *gaim_gtk_notify_emails(size_t count, gboolean detailed,
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
43 const char **subjects,
5476
6f863ea68018 [gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents: 5437
diff changeset
44 const char **froms, const char **tos,
6f863ea68018 [gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents: 5437
diff changeset
45 const char **urls, GCallback cb,
6f863ea68018 [gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents: 5437
diff changeset
46 void *user_data);
6f863ea68018 [gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents: 5437
diff changeset
47
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
48 static void
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
49 email_response_cb(GtkDialog *dialog, gint id, GaimNotifyMailData *data)
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
50 {
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
51 if (id == 0)
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
52 open_url(NULL, data->url);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
53
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
54 gaim_notify_close(GAIM_NOTIFY_EMAILS, data);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
55 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
56
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57 static void *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
58 gaim_gtk_notify_message(GaimNotifyMsgType type, const char *title,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 const char *primary, const char *secondary,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60 GCallback cb, void *user_data)
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61 {
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62 GtkWidget *dialog;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63 GtkWidget *hbox;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64 GtkWidget *label;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 GtkWidget *img = NULL;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 char label_text[2048];
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 const char *icon_name = NULL;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69 switch (type) {
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 case GAIM_NOTIFY_MSG_ERROR:
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 icon_name = GAIM_STOCK_DIALOG_ERROR;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 break;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 case GAIM_NOTIFY_MSG_WARNING:
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 icon_name = GAIM_STOCK_DIALOG_WARNING;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 break;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 case GAIM_NOTIFY_MSG_INFO:
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 icon_name = GAIM_STOCK_DIALOG_INFO;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 break;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 default:
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 icon_name = NULL;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 break;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 if (icon_name != NULL) {
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_DIALOG);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 dialog = gtk_dialog_new_with_buttons("", NULL, 0,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 NULL);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 g_signal_connect(G_OBJECT(dialog), "response",
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 G_CALLBACK(gtk_widget_destroy), NULL);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 gtk_container_set_border_width(GTK_CONTAINER(dialog), 6);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), 12);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), 6);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
103
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104 hbox = gtk_hbox_new(FALSE, 12);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
106
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107 if (img != NULL)
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 g_snprintf(label_text, sizeof(label_text),
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 primary, (secondary ? secondary : ""));
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 label = gtk_label_new(NULL);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116 gtk_label_set_markup(GTK_LABEL(label), label_text);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
120
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
121 gtk_widget_show_all(dialog);
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
122
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123 return dialog;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
126 static void *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
127 gaim_gtk_notify_email(const char *subject, const char *from,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
128 const char *to, const char *url,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129 GCallback cb, void *user_data)
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130 {
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
131 return gaim_gtk_notify_emails(1, TRUE,
5524
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
132 (subject == NULL ? NULL : &subject),
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
133 (from == NULL ? NULL : &from),
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
134 (to == NULL ? NULL : &to),
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
135 (url == NULL ? NULL : &url),
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
136 cb, user_data);
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
138
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 static void *
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
140 gaim_gtk_notify_emails(size_t count, gboolean detailed,
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
141 const char **subjects, const char **froms,
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
142 const char **tos, const char **urls,
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
143 GCallback cb, void *user_data)
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
144 {
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
145 GaimNotifyMailData *data;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
146 GtkWidget *dialog;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
147 GtkWidget *vbox;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
148 GtkWidget *hbox;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
149 GtkWidget *label;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
150 GtkWidget *img;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
151 char *detail_text;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
152 char *label_text;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
153
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
154 data = g_new0(GaimNotifyMailData, 1);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
155
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
156 data->url = g_strdup(urls[0]);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
157
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
158 /* Create the dialog. */
5524
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
159 data->dialog = dialog = gtk_dialog_new();
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
160
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
161 gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, 1);
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
162
753be2126684 [gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents: 5519
diff changeset
163 if (urls != NULL)
5536
cc9d6de98103 [gaim-migrate @ 5936]
Christian Hammond <chipx86@chipx86.com>
parents: 5524
diff changeset
164 gtk_dialog_add_button(GTK_DIALOG(dialog), GAIM_STOCK_OPEN_MAIL, 0);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
165
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
166 g_signal_connect(G_OBJECT(dialog), "response",
5794
ebdbb7dc6658 [gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents: 5563
diff changeset
167 G_CALLBACK(email_response_cb), data);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
168
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
169 /* Setup the dialog */
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
170 gtk_container_set_border_width(GTK_CONTAINER(dialog), 6);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
171 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), 6);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
172 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
173 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
174 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), 12);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
175
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
176 /* Setup the main horizontal box */
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
177 hbox = gtk_hbox_new(FALSE, 12);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
178 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
179
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
180 /* Dialog icon. */
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
181 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_INFO,
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
182 GTK_ICON_SIZE_DIALOG);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
183 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
184 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
185
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
186 /* Vertical box */
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
187 vbox = gtk_vbox_new(FALSE, 12);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
188
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
189 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
190
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
191 /* Descriptive label */
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
192 detail_text = g_strdup_printf(
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
193 ngettext("%s has %d new message.", "%s has %d new messages.", count),
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
194 *tos, count);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
195
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
196 if (count == 1) {
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
197 char *from_text = NULL, *subject_text = NULL;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
198
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
199 if (froms != NULL) {
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
200 from_text = g_strdup_printf(
5543
430899d22ca4 [gaim-migrate @ 5944]
Claudio Satriano <satriano@na.infn.it>
parents: 5537
diff changeset
201 _("<span weight=\"bold\">From:</span> %s\n"), *froms);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
202 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
203
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
204 if (subjects != NULL) {
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
205 subject_text = g_strdup_printf(
5543
430899d22ca4 [gaim-migrate @ 5944]
Claudio Satriano <satriano@na.infn.it>
parents: 5537
diff changeset
206 _("<span weight=\"bold\">Subject:</span> %s\n"), *subjects);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
207 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
208
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
209 label_text = g_strdup_printf(
5543
430899d22ca4 [gaim-migrate @ 5944]
Claudio Satriano <satriano@na.infn.it>
parents: 5537
diff changeset
210 _("<span weight=\"bold\" size=\"larger\">You have mail!</span>"
430899d22ca4 [gaim-migrate @ 5944]
Claudio Satriano <satriano@na.infn.it>
parents: 5537
diff changeset
211 "\n\n%s%s%s%s"),
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
212 detail_text,
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
213 (from_text == NULL && subject_text == NULL ? "" : "\n\n"),
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
214 (from_text == NULL ? "" : from_text),
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
215 (subject_text == NULL ? "" : subject_text));
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
216
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
217 if (from_text != NULL)
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
218 g_free(from_text);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
219
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
220 if (subject_text != NULL)
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
221 g_free(subject_text);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
222 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
223 else {
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
224 label_text = g_strdup_printf(
5543
430899d22ca4 [gaim-migrate @ 5944]
Claudio Satriano <satriano@na.infn.it>
parents: 5537
diff changeset
225 _("<span weight=\"bold\" size=\"larger\">You have mail!</span>"
430899d22ca4 [gaim-migrate @ 5944]
Claudio Satriano <satriano@na.infn.it>
parents: 5537
diff changeset
226 "\n\n%s"), detail_text);
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
227 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
228
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
229 g_free(detail_text);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
230
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
231 label = gtk_label_new(NULL);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
232
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
233 gtk_label_set_markup(GTK_LABEL(label), label_text);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
234 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
235 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
236 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
237
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
238 g_free(label_text);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
239
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
240 /* Show everything. */
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
241 gtk_widget_show_all(dialog);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
242
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
243 return data;
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
244 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
245
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
246 static void
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
247 gaim_gtk_close_notify(GaimNotifyType type, void *ui_handle)
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
248 {
5519
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
249 if (type == GAIM_NOTIFY_EMAIL || type == GAIM_NOTIFY_EMAILS) {
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
250 GaimNotifyMailData *data = (GaimNotifyMailData *)ui_handle;
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
251
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
252 gtk_widget_destroy(data->dialog);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
253
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
254 g_free(data->url);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
255 g_free(data);
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
256 }
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
257 else
5ac50d7f3689 [gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents: 5476
diff changeset
258 gtk_widget_destroy(GTK_WIDGET(ui_handle));
5437
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
259 }
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
260
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
261 static GaimNotifyUiOps ops =
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
262 {
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
263 gaim_gtk_notify_message,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
264 gaim_gtk_notify_email,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
265 gaim_gtk_notify_emails,
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
266 gaim_gtk_close_notify
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
267 };
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
268
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
269 GaimNotifyUiOps *
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
270 gaim_get_gtk_notify_ui_ops(void)
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 {
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 return &ops;
4bd5c5d271e6 [gaim-migrate @ 5819]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 }

mercurial