Fri, 16 Nov 2007 22:59:30 +0000
merge of '405f2512ec9ba0ce056847682e77f182d5cb3d80'
and '8c36410ff629675877439f6e5f32cd0e8842e40d'
| 5437 | 1 | /** |
| 2 | * @file gtknotify.c GTK+ Notification API | |
|
16254
eeb2bba4dc94
Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents:
16123
diff
changeset
|
3 | * @ingroup pidgin |
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
20113
diff
changeset
|
4 | */ |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
20113
diff
changeset
|
5 | |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
20113
diff
changeset
|
6 | /* pidgin |
| 5437 | 7 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
8 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 8046 | 9 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 10 | * source distribution. | |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
11 | * |
| 5437 | 12 | * This program is free software; you can redistribute it and/or modify |
| 13 | * it under the terms of the GNU General Public License as published by | |
| 14 | * the Free Software Foundation; either version 2 of the License, or | |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 | * GNU General Public License for more details. | |
| 21 | * | |
| 22 | * You should have received a copy of the GNU General Public License | |
| 23 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19832
diff
changeset
|
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 5437 | 25 | */ |
| 9791 | 26 | #include "internal.h" |
| 15577 | 27 | #include "pidgin.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
28 | |
| 7455 | 29 | #include <gdk/gdkkeysyms.h> |
| 30 | ||
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
31 | #include "connection.h" |
|
8284
c4af8a21d5d5
[gaim-migrate @ 9008]
Mark Doliner <markdoliner@pidgin.im>
parents:
8278
diff
changeset
|
32 | #include "debug.h" |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
33 | #include "prefs.h" |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15882
diff
changeset
|
34 | #include "pidginstock.h" |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
35 | #include "util.h" |
| 5437 | 36 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
37 | #include "gtkblist.h" |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
38 | #include "gtkimhtml.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
39 | #include "gtknotify.h" |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
40 | #include "gtkutils.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
41 | |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
42 | typedef struct |
|
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
43 | { |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
44 | GtkWidget *window; |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
45 | int count; |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
46 | } PidginUserInfo; |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
47 | |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
48 | typedef struct |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
49 | { |
| 15884 | 50 | PurpleAccount *account; |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
51 | char *url; |
|
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
52 | GtkWidget *label; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
53 | GtkTreeIter iter; |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
54 | int count; |
| 15882 | 55 | } PidginNotifyMailData; |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
56 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
57 | typedef struct |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
58 | { |
| 15884 | 59 | PurpleAccount *account; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
60 | GtkListStore *model; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
61 | GtkWidget *treeview; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
62 | GtkWidget *window; |
| 13641 | 63 | gpointer user_data; |
| 15884 | 64 | PurpleNotifySearchResults *results; |
| 13641 | 65 | |
| 15882 | 66 | } PidginNotifySearchResultsData; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
67 | |
| 11359 | 68 | typedef struct |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
69 | { |
| 15884 | 70 | PurpleNotifySearchButton *button; |
| 15882 | 71 | PidginNotifySearchResultsData *data; |
| 11359 | 72 | |
| 15882 | 73 | } PidginNotifySearchResultsButtonData; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
74 | |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
75 | enum |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
76 | { |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
77 | PIDGIN_MAIL_ICON, |
|
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
78 | PIDGIN_MAIL_TEXT, |
|
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
79 | PIDGIN_MAIL_DATA, |
|
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
80 | COLUMNS_PIDGIN_MAIL |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
81 | }; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
82 | |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
83 | typedef struct _PidginMailDialog PidginMailDialog; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
84 | |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
85 | struct _PidginMailDialog |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
86 | { |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
87 | GtkWidget *dialog; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
88 | GtkWidget *treeview; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
89 | GtkTreeStore *treemodel; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
90 | GtkLabel *label; |
|
13415
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
91 | GtkWidget *open_button; |
| 15246 | 92 | int total_count; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
93 | gboolean in_use; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
94 | }; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
95 | |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
96 | static PidginMailDialog *mail_dialog = NULL; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
97 | |
| 15884 | 98 | static void *pidgin_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed, |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
99 | const char **subjects, |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
100 | const char **froms, const char **tos, |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12227
diff
changeset
|
101 | const char **urls); |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
102 | |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
103 | static void |
|
6354
685303e0c013
[gaim-migrate @ 6853]
Christian Hammond <chipx86@chipx86.com>
parents:
6106
diff
changeset
|
104 | message_response_cb(GtkDialog *dialog, gint id, GtkWidget *widget) |
|
6104
cf3241926c4e
[gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
105 | { |
| 15884 | 106 | purple_notify_close(PURPLE_NOTIFY_MESSAGE, widget); |
|
6104
cf3241926c4e
[gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
107 | } |
|
cf3241926c4e
[gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
108 | |
|
cf3241926c4e
[gaim-migrate @ 6565]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
109 | static void |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
110 | email_response_cb(GtkDialog *dlg, gint id, PidginMailDialog *dialog) |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
111 | { |
| 15882 | 112 | PidginNotifyMailData *data = NULL; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
113 | GtkTreeIter iter; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
114 | |
|
10260
76253312081f
[gaim-migrate @ 11403]
Matthew A. Nicholson <therealman11@users.sourceforge.net>
parents:
10240
diff
changeset
|
115 | if (id == GTK_RESPONSE_YES) |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
116 | { |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
117 | GtkTreeSelection *selection; |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
118 | |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
119 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)); |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
120 | |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
121 | if (gtk_tree_selection_get_selected(selection, NULL, &iter)) |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
122 | { |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
123 | gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter, |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
124 | PIDGIN_MAIL_DATA, &data, -1); |
| 15884 | 125 | purple_notify_uri(NULL, data->url); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
126 | |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
127 | gtk_tree_store_remove(dialog->treemodel, &iter); |
| 15884 | 128 | purple_notify_close(PURPLE_NOTIFY_EMAILS, data); |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
129 | |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
130 | if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter)) |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
131 | return; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
132 | } |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
133 | else |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
134 | return; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
135 | } |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
136 | else |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
137 | { |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
138 | while (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter)) |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
139 | { |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
140 | gtk_tree_model_get(GTK_TREE_MODEL(dialog->treemodel), &iter, |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
141 | PIDGIN_MAIL_DATA, &data, -1); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
142 | |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
143 | if (id == GTK_RESPONSE_ACCEPT) |
| 15884 | 144 | purple_notify_uri(NULL, data->url); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
145 | |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
146 | gtk_tree_store_remove(dialog->treemodel, &iter); |
| 15884 | 147 | purple_notify_close(PURPLE_NOTIFY_EMAILS, data); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
148 | } |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
149 | } |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
150 | gtk_widget_destroy(dialog->dialog); |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
151 | g_free(dialog); |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
152 | mail_dialog = NULL; |
|
5519
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 | |
|
19431
99985a434ef8
Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents:
19222
diff
changeset
|
155 | static void email_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) { |
|
99985a434ef8
Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents:
19222
diff
changeset
|
156 | email_response_cb(GTK_DIALOG(mail_dialog->dialog), GTK_RESPONSE_YES, mail_dialog); |
|
99985a434ef8
Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents:
19222
diff
changeset
|
157 | } |
|
99985a434ef8
Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents:
19222
diff
changeset
|
158 | |
|
7007
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
159 | static void |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
160 | reset_mail_dialog(GtkDialog *dialog) |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
161 | { |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
162 | if (mail_dialog->in_use) |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
163 | return; |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
164 | gtk_widget_destroy(mail_dialog->dialog); |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
165 | g_free(mail_dialog); |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
166 | mail_dialog = NULL; |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
167 | } |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
168 | |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
169 | static void |
|
7007
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
170 | formatted_close_cb(GtkWidget *win, GdkEvent *event, void *user_data) |
|
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
171 | { |
| 15884 | 172 | purple_notify_close(PURPLE_NOTIFY_FORMATTED, win); |
|
7007
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
173 | } |
|
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
174 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
175 | static void |
| 15882 | 176 | searchresults_close_cb(PidginNotifySearchResultsData *data, GdkEvent *event, gpointer user_data) |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
177 | { |
| 15884 | 178 | purple_notify_close(PURPLE_NOTIFY_SEARCHRESULTS, data); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
179 | } |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
180 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
181 | static void |
| 15882 | 182 | searchresults_callback_wrapper_cb(GtkWidget *widget, PidginNotifySearchResultsButtonData *bd) |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
183 | { |
| 15882 | 184 | PidginNotifySearchResultsData *data = bd->data; |
| 11359 | 185 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
186 | GtkTreeSelection *selection; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
187 | GtkTreeModel *model; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
188 | GtkTreeIter iter; |
| 15884 | 189 | PurpleNotifySearchButton *button; |
| 11359 | 190 | GList *row = NULL; |
| 191 | gchar *str; | |
| 192 | int i; | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
193 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
194 | g_return_if_fail(data != NULL); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
195 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
196 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->treeview)); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
197 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
198 | if (gtk_tree_selection_get_selected(selection, &model, &iter)) |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
199 | { |
| 11359 | 200 | for (i = 1; i < gtk_tree_model_get_n_columns(GTK_TREE_MODEL(model)); i++) { |
| 201 | gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, i, &str, -1); | |
| 202 | row = g_list_append(row, str); | |
| 203 | } | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
204 | } |
| 11359 | 205 | |
| 206 | button = bd->button; | |
| 15884 | 207 | button->callback(purple_account_get_connection(data->account), row, data->user_data); |
|
14037
d034d4d2070e
[gaim-migrate @ 16533]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13641
diff
changeset
|
208 | g_list_foreach(row, (GFunc)g_free, NULL); |
|
d034d4d2070e
[gaim-migrate @ 16533]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13641
diff
changeset
|
209 | g_list_free(row); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
210 | } |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
211 | |
| 5437 | 212 | static void * |
| 15884 | 213 | pidgin_notify_message(PurpleNotifyMsgType type, const char *title, |
| 14865 | 214 | const char *primary, const char *secondary) |
| 5437 | 215 | { |
| 14865 | 216 | GtkWidget *dialog; |
| 217 | GtkWidget *hbox; | |
| 218 | GtkWidget *label; | |
| 219 | GtkWidget *img = NULL; | |
| 220 | char label_text[2048]; | |
| 221 | const char *icon_name = NULL; | |
| 222 | char *primary_esc, *secondary_esc; | |
| 5437 | 223 | |
| 14865 | 224 | switch (type) |
| 225 | { | |
| 15884 | 226 | case PURPLE_NOTIFY_MSG_ERROR: |
| 15497 | 227 | icon_name = PIDGIN_STOCK_DIALOG_ERROR; |
| 14865 | 228 | break; |
| 5437 | 229 | |
| 15884 | 230 | case PURPLE_NOTIFY_MSG_WARNING: |
| 15497 | 231 | icon_name = PIDGIN_STOCK_DIALOG_WARNING; |
| 14865 | 232 | break; |
| 5437 | 233 | |
| 15884 | 234 | case PURPLE_NOTIFY_MSG_INFO: |
| 15497 | 235 | icon_name = PIDGIN_STOCK_DIALOG_INFO; |
| 14865 | 236 | break; |
| 5437 | 237 | |
| 14865 | 238 | default: |
| 239 | icon_name = NULL; | |
| 240 | break; | |
| 241 | } | |
| 5437 | 242 | |
| 14865 | 243 | if (icon_name != NULL) |
| 244 | { | |
| 15497 | 245 | img = gtk_image_new_from_stock(icon_name, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); |
| 14865 | 246 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
| 247 | } | |
| 5437 | 248 | |
| 15882 | 249 | dialog = gtk_dialog_new_with_buttons(title ? title : PIDGIN_ALERT_TITLE, |
| 14865 | 250 | NULL, 0, GTK_STOCK_CLOSE, |
| 251 | GTK_RESPONSE_CLOSE, NULL); | |
| 252 | ||
| 253 | gtk_window_set_role(GTK_WINDOW(dialog), "notify_dialog"); | |
| 254 | ||
| 255 | g_signal_connect(G_OBJECT(dialog), "response", | |
| 256 | G_CALLBACK(message_response_cb), dialog); | |
| 257 | ||
| 15882 | 258 | gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER); |
| 14865 | 259 | gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
| 260 | gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); | |
| 15882 | 261 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER); |
| 262 | gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BOX_SPACE); | |
| 14865 | 263 | |
| 15882 | 264 | hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
| 14865 | 265 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
| 5437 | 266 | |
| 14865 | 267 | if (img != NULL) |
| 268 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 5437 | 269 | |
| 14865 | 270 | primary_esc = g_markup_escape_text(primary, -1); |
| 271 | secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; | |
| 272 | g_snprintf(label_text, sizeof(label_text), | |
|
20869
e2db8ce46cda
If there is no secondary text in a notify, avoid adding "\n\n" and creating
Richard Laager <rlaager@pidgin.im>
parents:
20791
diff
changeset
|
273 | "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", |
|
e2db8ce46cda
If there is no secondary text in a notify, avoid adding "\n\n" and creating
Richard Laager <rlaager@pidgin.im>
parents:
20791
diff
changeset
|
274 | primary_esc, (secondary ? "\n\n" : ""), |
|
e2db8ce46cda
If there is no secondary text in a notify, avoid adding "\n\n" and creating
Richard Laager <rlaager@pidgin.im>
parents:
20791
diff
changeset
|
275 | (secondary ? secondary_esc : "")); |
| 14865 | 276 | g_free(primary_esc); |
| 277 | g_free(secondary_esc); | |
| 5437 | 278 | |
| 14865 | 279 | label = gtk_label_new(NULL); |
| 5437 | 280 | |
| 14865 | 281 | gtk_label_set_markup(GTK_LABEL(label), label_text); |
| 282 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
|
19222
f0fa371d6752
Allow notification labels to be selectable (for copy-and-paste purposes). Fixes #563.
Daniel Atallah <datallah@pidgin.im>
parents:
18802
diff
changeset
|
283 | gtk_label_set_selectable(GTK_LABEL(label), TRUE); |
| 14865 | 284 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
| 285 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
| 5437 | 286 | |
| 14865 | 287 | gtk_widget_show_all(dialog); |
| 5437 | 288 | |
| 14865 | 289 | return dialog; |
| 5437 | 290 | } |
| 291 | ||
|
13415
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
292 | static void |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
293 | selection_changed_cb(GtkTreeSelection *sel, PidginMailDialog *dialog) |
|
13415
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
294 | { |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
295 | GtkTreeIter iter; |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
296 | GtkTreeModel *model; |
| 15882 | 297 | PidginNotifyMailData *data; |
|
13415
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
298 | gboolean active = TRUE; |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
299 | |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
300 | if (gtk_tree_selection_get_selected(sel, &model, &iter) == FALSE) |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
301 | active = FALSE; |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
302 | else |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
303 | { |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
304 | gtk_tree_model_get(model, &iter, PIDGIN_MAIL_DATA, &data, -1); |
|
13415
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
305 | if (data->url == NULL) |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
306 | active = FALSE; |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
307 | } |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
308 | |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
309 | gtk_widget_set_sensitive(dialog->open_button, active); |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
310 | } |
|
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
311 | |
| 5437 | 312 | static void * |
| 15884 | 313 | pidgin_notify_email(PurpleConnection *gc, const char *subject, const char *from, |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12227
diff
changeset
|
314 | const char *to, const char *url) |
| 5437 | 315 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
316 | return pidgin_notify_emails(gc, 1, (subject != NULL), |
|
5524
753be2126684
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
317 | (subject == NULL ? NULL : &subject), |
|
753be2126684
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
318 | (from == NULL ? NULL : &from), |
|
753be2126684
[gaim-migrate @ 5924]
Christian Hammond <chipx86@chipx86.com>
parents:
5519
diff
changeset
|
319 | (to == NULL ? NULL : &to), |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12227
diff
changeset
|
320 | (url == NULL ? NULL : &url)); |
| 5437 | 321 | } |
| 322 | ||
|
15789
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
323 | static int |
|
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
324 | mail_window_focus_cb(GtkWidget *widget, GdkEventFocus *focus, gpointer null) |
|
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
325 | { |
|
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
326 | pidgin_set_urgent(GTK_WINDOW(widget), FALSE); |
|
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
327 | return 0; |
|
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
328 | } |
|
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
329 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
330 | static GtkWidget * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
331 | pidgin_get_mail_dialog() |
| 5437 | 332 | { |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
333 | if (mail_dialog == NULL) { |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
334 | GtkWidget *dialog = NULL; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
335 | GtkWidget *label; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
336 | GtkWidget *sw; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
337 | GtkCellRenderer *rend; |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
338 | GtkTreeViewColumn *column; |
|
13415
c8090b1fe17a
[gaim-migrate @ 15789]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13414
diff
changeset
|
339 | GtkWidget *button = NULL; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
340 | GtkWidget *vbox = NULL; |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
341 | |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
342 | dialog = gtk_dialog_new_with_buttons(_("New Mail"), NULL, 0, |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
343 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
344 | NULL); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
345 | gtk_window_set_role(GTK_WINDOW(dialog), "new_mail_detailed"); |
|
15788
0a87bf1a7fb8
Set the URGENT hint for the mail window when new mails come in and the window is open.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15623
diff
changeset
|
346 | g_signal_connect(G_OBJECT(dialog), "focus-in-event", |
|
15789
f7026b5ebe55
Fix the last change.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15788
diff
changeset
|
347 | G_CALLBACK(mail_window_focus_cb), NULL); |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
348 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
349 | gtk_dialog_add_button(GTK_DIALOG(dialog), |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
350 | _("Open All Messages"), GTK_RESPONSE_ACCEPT); |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
351 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
352 | button = gtk_dialog_add_button(GTK_DIALOG(dialog), |
| 15570 | 353 | PIDGIN_STOCK_OPEN_MAIL, GTK_RESPONSE_YES); |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
354 | |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
355 | /* Setup the dialog */ |
| 15882 | 356 | gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BOX_SPACE); |
| 357 | gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BOX_SPACE); | |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
358 | gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); |
| 15882 | 359 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
360 | |
|
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
361 | /* Vertical box */ |
| 15225 | 362 | vbox = GTK_DIALOG(dialog)->vbox; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
363 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
364 | /* Golden ratio it up! */ |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
365 | gtk_widget_set_size_request(dialog, 550, 400); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
366 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
367 | sw = gtk_scrolled_window_new(NULL, NULL); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
368 | gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
369 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
370 | |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
371 | mail_dialog = g_new0(PidginMailDialog, 1); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
372 | mail_dialog->dialog = dialog; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
373 | mail_dialog->open_button = button; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
374 | |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
375 | mail_dialog->treemodel = gtk_tree_store_new(COLUMNS_PIDGIN_MAIL, |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
376 | GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
377 | mail_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(mail_dialog->treemodel)); |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
378 | gtk_tree_view_set_search_column(GTK_TREE_VIEW(mail_dialog->treeview), PIDGIN_MAIL_TEXT); |
|
15393
7221caac660c
[gaim-migrate @ 18123]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15389
diff
changeset
|
379 | gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(mail_dialog->treeview), |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
380 | pidgin_tree_view_search_equal_func, NULL, NULL); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
381 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
382 | g_signal_connect(G_OBJECT(dialog), "response", |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
383 | G_CALLBACK(email_response_cb), mail_dialog); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
384 | g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(mail_dialog->treeview))), |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
385 | "changed", G_CALLBACK(selection_changed_cb), mail_dialog); |
|
19431
99985a434ef8
Open emails by doubleclicking the row.
Daniel Atallah <datallah@pidgin.im>
parents:
19222
diff
changeset
|
386 | g_signal_connect(G_OBJECT(mail_dialog->treeview), "row-activated", G_CALLBACK(email_row_activated_cb), NULL); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
387 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
388 | gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(mail_dialog->treeview), FALSE); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
389 | gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(mail_dialog->treeview), TRUE); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
390 | gtk_container_add(GTK_CONTAINER(sw), mail_dialog->treeview); |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
391 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
392 | column = gtk_tree_view_column_new(); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
393 | gtk_tree_view_column_set_resizable(column, TRUE); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
394 | rend = gtk_cell_renderer_pixbuf_new(); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
395 | gtk_tree_view_column_pack_start(column, rend, FALSE); |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
396 | gtk_tree_view_column_set_attributes(column, rend, "pixbuf", PIDGIN_MAIL_ICON, NULL); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
397 | rend = gtk_cell_renderer_text_new(); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
398 | gtk_tree_view_column_pack_start(column, rend, TRUE); |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
399 | gtk_tree_view_column_set_attributes(column, rend, "markup", PIDGIN_MAIL_TEXT, NULL); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
400 | gtk_tree_view_append_column(GTK_TREE_VIEW(mail_dialog->treeview), column); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
401 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
402 | label = gtk_label_new(NULL); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
403 | gtk_label_set_markup(GTK_LABEL(label), _("<span weight=\"bold\" size=\"larger\">You have mail!</span>")); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
404 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
405 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
406 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
407 | gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
408 | } |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
409 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
410 | return mail_dialog->dialog; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
411 | } |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
412 | |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
413 | /* count == 0 means this is a detailed mail notification. |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
414 | * count > 0 mean non-detailed. |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
415 | */ |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
416 | static void * |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
417 | pidgin_notify_add_mail(GtkTreeStore *treemodel, PurpleAccount *account, char *notification, const char *url, int count, gboolean clear) |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
418 | { |
| 15882 | 419 | PidginNotifyMailData *data = NULL; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
420 | GtkTreeIter iter; |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
421 | GdkPixbuf *icon; |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
422 | gboolean new_n = TRUE; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
423 | |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
424 | if (count > 0 || clear) { |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
425 | /* Allow only one non-detailed email notification for each account */ |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
426 | if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(treemodel), &iter)) { |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
427 | gboolean advanced; |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
428 | do { |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
429 | advanced = FALSE; |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
430 | gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter, |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
431 | PIDGIN_MAIL_DATA, &data, -1); |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
432 | if (data->account == account) { |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
433 | if (clear) { |
|
20182
7b1f419ff73d
Fix building on very old gtk where gtk_tree_store_remove didn't return a
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20149
diff
changeset
|
434 | #if GTK_CHECK_VERSION(2,2,0) |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
435 | advanced = gtk_tree_store_remove(treemodel, &iter); |
|
20182
7b1f419ff73d
Fix building on very old gtk where gtk_tree_store_remove didn't return a
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20149
diff
changeset
|
436 | #else |
|
7b1f419ff73d
Fix building on very old gtk where gtk_tree_store_remove didn't return a
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20149
diff
changeset
|
437 | gtk_tree_store_remove(treemodel, &iter); |
|
7b1f419ff73d
Fix building on very old gtk where gtk_tree_store_remove didn't return a
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20149
diff
changeset
|
438 | advanced = (iter.stamp == 0) ? FALSE : TRUE; |
|
7b1f419ff73d
Fix building on very old gtk where gtk_tree_store_remove didn't return a
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20149
diff
changeset
|
439 | #endif |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
440 | purple_notify_close(PURPLE_NOTIFY_EMAILS, data); |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
441 | /* We're completely done if we've processed all entries */ |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
442 | if (!advanced) |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
443 | return NULL; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
444 | } else if (data->count > 0) { |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
445 | new_n = FALSE; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
446 | g_free(data->url); |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
447 | data->url = NULL; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
448 | mail_dialog->total_count -= data->count; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
449 | break; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
450 | } |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
451 | } |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
452 | } while (advanced || gtk_tree_model_iter_next(GTK_TREE_MODEL(treemodel), &iter)); |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
453 | } |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
454 | } |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
455 | |
|
20149
1c03148f1668
applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents:
20147
diff
changeset
|
456 | if (clear) |
|
1c03148f1668
applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents:
20147
diff
changeset
|
457 | return NULL; |
|
1c03148f1668
applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents:
20147
diff
changeset
|
458 | |
|
1c03148f1668
applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents:
20147
diff
changeset
|
459 | icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM); |
|
1c03148f1668
applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents:
20147
diff
changeset
|
460 | |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
461 | if (new_n) { |
| 15882 | 462 | data = g_new0(PidginNotifyMailData, 1); |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
463 | gtk_tree_store_append(treemodel, &iter, NULL); |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
464 | } |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
465 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
466 | if (url != NULL) |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
467 | data->url = g_strdup(url); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
468 | |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
469 | gtk_tree_store_set(treemodel, &iter, |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
470 | PIDGIN_MAIL_ICON, icon, |
|
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
471 | PIDGIN_MAIL_TEXT, notification, |
|
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
472 | PIDGIN_MAIL_DATA, data, |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
473 | -1); |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
474 | data->iter = iter; /* XXX: Do we use this for something? */ |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
475 | data->account = account; |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
476 | data->count = count; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
477 | gtk_tree_model_get(GTK_TREE_MODEL(treemodel), &iter, |
|
15880
d275b025481c
More Gaim to Pidgin changes
Sean Egan <seanegan@pidgin.im>
parents:
15789
diff
changeset
|
478 | PIDGIN_MAIL_DATA, &data, -1); |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
479 | if (icon) |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
480 | g_object_unref(icon); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
481 | return data; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
482 | } |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
483 | |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
484 | static void * |
| 15884 | 485 | pidgin_notify_emails(PurpleConnection *gc, size_t count, gboolean detailed, |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
486 | const char **subjects, const char **froms, |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
487 | const char **tos, const char **urls) |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
488 | { |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
489 | GtkWidget *dialog = NULL; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
490 | char *notification; |
| 15884 | 491 | PurpleAccount *account; |
| 15882 | 492 | PidginNotifyMailData *data = NULL; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
493 | |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
494 | /* Don't bother updating if there aren't new emails and we don't have any displayed currently */ |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
495 | if (count == 0 && mail_dialog == NULL) |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
496 | return NULL; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
497 | |
| 15884 | 498 | account = purple_connection_get_account(gc); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
499 | dialog = pidgin_get_mail_dialog(); /* This creates mail_dialog if necessary */ |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
500 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
501 | mail_dialog->total_count += count; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
502 | if (detailed) { |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
503 | while (count--) { |
|
13414
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
504 | char *to_text = NULL; |
|
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
505 | char *from_text = NULL; |
|
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
506 | char *subject_text = NULL; |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
507 | char *tmp; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
508 | gboolean first = TRUE; |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
509 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
510 | if (tos != NULL) { |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
511 | tmp = g_markup_escape_text(*tos, -1); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
512 | to_text = g_strdup_printf("<b>%s</b>: %s\n", _("Account"), tmp); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
513 | g_free(tmp); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
514 | first = FALSE; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
515 | tos++; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
516 | } |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
517 | if (froms != NULL) { |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
518 | tmp = g_markup_escape_text(*froms, -1); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
519 | from_text = g_strdup_printf("%s<b>%s</b>: %s\n", first ? "<br>" : "", _("Sender"), tmp); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
520 | g_free(tmp); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
521 | first = FALSE; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
522 | froms++; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
523 | } |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
524 | if (subjects != NULL) { |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
525 | tmp = g_markup_escape_text(*subjects, -1); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
526 | subject_text = g_strdup_printf("%s<b>%s</b>: %s", first ? "<br>" : "", _("Subject"), tmp); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
527 | g_free(tmp); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
528 | first = FALSE; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
529 | subjects++; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
530 | } |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
531 | #define SAFE(x) ((x) ? (x) : "") |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
532 | notification = g_strdup_printf("%s%s%s", SAFE(to_text), SAFE(from_text), SAFE(subject_text)); |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
533 | #undef SAFE |
|
13414
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
534 | g_free(to_text); |
|
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
535 | g_free(from_text); |
|
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
536 | g_free(subject_text); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
537 | |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
538 | data = pidgin_notify_add_mail(mail_dialog->treemodel, account, notification, urls ? *urls : NULL, 0, FALSE); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
539 | g_free(notification); |
|
13414
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
540 | |
|
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
541 | if (urls != NULL) |
|
eadfdb95f030
[gaim-migrate @ 15788]
Richard Laager <rlaager@pidgin.im>
parents:
13281
diff
changeset
|
542 | urls++; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
543 | } |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
544 | } else { |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
545 | if (count > 0) { |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
546 | notification = g_strdup_printf(ngettext("%s has %d new message.", |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
547 | "%s has %d new messages.", |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
548 | (int)count), |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
549 | *tos, (int)count); |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
550 | data = pidgin_notify_add_mail(mail_dialog->treemodel, account, notification, urls ? *urls : NULL, count, FALSE); |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
551 | g_free(notification); |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
552 | } else { |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
553 | GtkTreeIter iter; |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
554 | |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
555 | /* Clear out all mails for the account */ |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
556 | pidgin_notify_add_mail(mail_dialog->treemodel, account, NULL, NULL, 0, TRUE); |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
557 | |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
558 | if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mail_dialog->treemodel), &iter)) { |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
559 | /* There is no API to clear the headline specifically */ |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
560 | /* This will trigger reset_mail_dialog() */ |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
561 | pidgin_blist_set_headline(NULL, NULL, NULL, NULL, NULL); |
|
20149
1c03148f1668
applied changes from c0104c111e903cfec5d0a95e0ae9dafb72f0dcbf
Richard Laager <rlaager@pidgin.im>
parents:
20147
diff
changeset
|
562 | return NULL; |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
563 | } |
|
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
564 | } |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
565 | } |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
566 | |
| 15246 | 567 | if (!GTK_WIDGET_VISIBLE(dialog)) { |
| 15497 | 568 | GdkPixbuf *pixbuf = gtk_widget_render_icon(dialog, PIDGIN_STOCK_DIALOG_MAIL, |
| 569 | gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), NULL); | |
|
20650
b508ffcee51e
Remove 'You have' from 'You have N new e-mails' to take less room and make it more likely to fit on one line
Sean Egan <seanegan@pidgin.im>
parents:
20355
diff
changeset
|
570 | char *label_text = g_strdup_printf(ngettext("<b>%d new e-mail.</b>", |
|
b508ffcee51e
Remove 'You have' from 'You have N new e-mails' to take less room and make it more likely to fit on one line
Sean Egan <seanegan@pidgin.im>
parents:
20355
diff
changeset
|
571 | "<b>%d new e-mails.</b>", |
| 15246 | 572 | mail_dialog->total_count), mail_dialog->total_count); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
573 | mail_dialog->in_use = TRUE; /* So that _set_headline doesn't accidentally |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
574 | remove the notifications when replacing an |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
575 | old notification. */ |
|
20113
3bb2fec99650
applied changes from 4bb1d6cbfe69a2e7782336a7e6e93e438a8bdbfc
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
576 | pidgin_blist_set_headline(label_text, |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
577 | pixbuf, G_CALLBACK(gtk_widget_show_all), dialog, |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15275
diff
changeset
|
578 | (GDestroyNotify)reset_mail_dialog); |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
579 | mail_dialog->in_use = FALSE; |
|
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
580 | g_free(label_text); |
|
15395
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
581 | if (pixbuf) |
|
ce9f0fe6a77a
[gaim-migrate @ 18125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15393
diff
changeset
|
582 | g_object_unref(pixbuf); |
|
15788
0a87bf1a7fb8
Set the URGENT hint for the mail window when new mails come in and the window is open.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15623
diff
changeset
|
583 | } else if (!GTK_WIDGET_HAS_FOCUS(dialog)) |
|
0a87bf1a7fb8
Set the URGENT hint for the mail window when new mails come in and the window is open.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15623
diff
changeset
|
584 | pidgin_set_urgent(GTK_WINDOW(dialog), TRUE); |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
585 | |
|
15389
2427b3d24858
[gaim-migrate @ 18118]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15388
diff
changeset
|
586 | return NULL; |
| 5437 | 587 | } |
| 588 | ||
|
8337
07da3cefb9d3
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
589 | static gboolean |
|
10875
bd4a5904e395
[gaim-migrate @ 12566]
Daniel Atallah <datallah@pidgin.im>
parents:
10774
diff
changeset
|
590 | formatted_input_cb(GtkWidget *win, GdkEventKey *event, gpointer data) |
| 7455 | 591 | { |
|
8337
07da3cefb9d3
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
592 | if (event->keyval == GDK_Escape) |
|
07da3cefb9d3
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
593 | { |
| 15884 | 594 | purple_notify_close(PURPLE_NOTIFY_FORMATTED, win); |
|
8337
07da3cefb9d3
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
595 | |
| 7455 | 596 | return TRUE; |
| 597 | } | |
|
8337
07da3cefb9d3
[gaim-migrate @ 9061]
Christian Hammond <chipx86@chipx86.com>
parents:
8284
diff
changeset
|
598 | |
| 7455 | 599 | return FALSE; |
| 600 | } | |
| 601 | ||
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
602 | static GtkIMHtmlOptions |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
603 | notify_imhtml_options() |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
604 | { |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
605 | GtkIMHtmlOptions options = 0; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
606 | |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
607 | if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting")) |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
608 | options |= GTK_IMHTML_NO_COLOURS | GTK_IMHTML_NO_FONTS | GTK_IMHTML_NO_SIZES; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
609 | |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
610 | options |= GTK_IMHTML_NO_COMMENTS; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
611 | options |= GTK_IMHTML_NO_TITLE; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
612 | options |= GTK_IMHTML_NO_NEWLINE; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
613 | options |= GTK_IMHTML_NO_SCROLL; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
614 | return options; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
615 | } |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
616 | |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
617 | static void * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
618 | pidgin_notify_formatted(const char *title, const char *primary, |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12227
diff
changeset
|
619 | const char *secondary, const char *text) |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
620 | { |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
621 | GtkWidget *window; |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
622 | GtkWidget *vbox; |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
623 | GtkWidget *label; |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
624 | GtkWidget *button; |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
625 | GtkWidget *imhtml; |
|
10181
2425c3773266
[gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents:
10061
diff
changeset
|
626 | GtkWidget *frame; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
627 | char label_text[2048]; |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
628 | char *linked_text, *primary_esc, *secondary_esc; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
629 | |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
630 | window = gtk_dialog_new(); |
|
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
631 | gtk_window_set_title(GTK_WINDOW(window), title); |
|
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
632 | gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER); |
|
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
633 | gtk_window_set_resizable(GTK_WINDOW(window), TRUE); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
634 | |
|
7007
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
635 | g_signal_connect(G_OBJECT(window), "delete_event", |
|
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
636 | G_CALLBACK(formatted_close_cb), NULL); |
|
b687feec58a2
[gaim-migrate @ 7564]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
637 | |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
638 | /* Setup the main vbox */ |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
639 | vbox = GTK_DIALOG(window)->vbox; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
640 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
641 | /* Setup the descriptive label */ |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
642 | primary_esc = g_markup_escape_text(primary, -1); |
|
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
643 | secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
644 | g_snprintf(label_text, sizeof(label_text), |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
645 | "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
646 | primary_esc, |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
647 | (secondary ? "\n" : ""), |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
648 | (secondary ? secondary_esc : "")); |
|
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
649 | g_free(primary_esc); |
|
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
650 | g_free(secondary_esc); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
651 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
652 | label = gtk_label_new(NULL); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
653 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
654 | gtk_label_set_markup(GTK_LABEL(label), label_text); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
655 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
19222
f0fa371d6752
Allow notification labels to be selectable (for copy-and-paste purposes). Fixes #563.
Daniel Atallah <datallah@pidgin.im>
parents:
18802
diff
changeset
|
656 | gtk_label_set_selectable(GTK_LABEL(label), TRUE); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
657 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
658 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
659 | gtk_widget_show(label); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
660 | |
|
10181
2425c3773266
[gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents:
10061
diff
changeset
|
661 | /* Add the imhtml */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
662 | frame = pidgin_create_imhtml(FALSE, &imhtml, NULL, NULL); |
|
16259
73b7c796c8d3
I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@pidgin.im>
parents:
16254
diff
changeset
|
663 | gtk_widget_set_name(imhtml, "pidgin_notify_imhtml"); |
|
11723
75660ad6d18e
[gaim-migrate @ 14014]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11533
diff
changeset
|
664 | gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), |
|
75660ad6d18e
[gaim-migrate @ 14014]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11533
diff
changeset
|
665 | gtk_imhtml_get_format_functions(GTK_IMHTML(imhtml)) | GTK_IMHTML_IMAGE); |
|
10181
2425c3773266
[gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents:
10061
diff
changeset
|
666 | gtk_widget_set_size_request(imhtml, 300, 250); |
|
2425c3773266
[gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents:
10061
diff
changeset
|
667 | gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
|
2425c3773266
[gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents:
10061
diff
changeset
|
668 | gtk_widget_show(frame); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
669 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
670 | /* Add the Close button. */ |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
671 | button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); |
|
19222
f0fa371d6752
Allow notification labels to be selectable (for copy-and-paste purposes). Fixes #563.
Daniel Atallah <datallah@pidgin.im>
parents:
18802
diff
changeset
|
672 | gtk_widget_grab_focus(button); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
673 | |
| 6872 | 674 | g_signal_connect_swapped(G_OBJECT(button), "clicked", |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
675 | G_CALLBACK(gtk_widget_destroy), window); |
| 7455 | 676 | g_signal_connect(G_OBJECT(window), "key_press_event", |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
677 | G_CALLBACK(formatted_input_cb), NULL); |
| 7455 | 678 | |
|
8882
e1f85917a765
[gaim-migrate @ 9651]
Mark Doliner <markdoliner@pidgin.im>
parents:
8523
diff
changeset
|
679 | /* Make sure URLs are clickable */ |
| 15884 | 680 | linked_text = purple_markup_linkify(text); |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
681 | gtk_imhtml_append_text(GTK_IMHTML(imhtml), linked_text, notify_imhtml_options()); |
|
8882
e1f85917a765
[gaim-migrate @ 9651]
Mark Doliner <markdoliner@pidgin.im>
parents:
8523
diff
changeset
|
682 | g_free(linked_text); |
| 7078 | 683 | |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
684 | g_object_set_data(G_OBJECT(window), "info-widget", imhtml); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
685 | |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
686 | /* Show the window */ |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
687 | gtk_widget_show(window); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
688 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
689 | return window; |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
690 | } |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
691 | |
| 11359 | 692 | static void |
| 15884 | 693 | pidgin_notify_searchresults_new_rows(PurpleConnection *gc, PurpleNotifySearchResults *results, |
| 13641 | 694 | void *data_) |
| 11359 | 695 | { |
| 15882 | 696 | PidginNotifySearchResultsData *data = data_; |
| 11359 | 697 | GtkListStore *model = data->model; |
| 698 | GtkTreeIter iter; | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12911
diff
changeset
|
699 | GdkPixbuf *pixbuf; |
| 12257 | 700 | guint col_num; |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
701 | GList *row, *column; |
|
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
702 | guint n; |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12911
diff
changeset
|
703 | |
| 11359 | 704 | gtk_list_store_clear(data->model); |
| 705 | ||
| 15884 | 706 | pixbuf = pidgin_create_prpl_icon(purple_connection_get_account(gc), 0.5); |
| 11359 | 707 | |
| 708 | /* +1 is for the automagically created Status column. */ | |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
709 | col_num = g_list_length(results->columns) + 1; |
| 11359 | 710 | |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
711 | for (row = results->rows; row != NULL; row = row->next) { |
| 11359 | 712 | |
| 713 | gtk_list_store_append(model, &iter); | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12911
diff
changeset
|
714 | gtk_list_store_set(model, &iter, 0, pixbuf, -1); |
| 11359 | 715 | |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
716 | n = 1; |
|
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
717 | for (column = row->data; column != NULL; column = column->next) { |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12477
diff
changeset
|
718 | GValue v; |
| 11359 | 719 | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12477
diff
changeset
|
720 | v.g_type = 0; |
| 11359 | 721 | g_value_init(&v, G_TYPE_STRING); |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
722 | g_value_set_string(&v, column->data); |
|
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
723 | gtk_list_store_set_value(model, &iter, n, &v); |
|
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
724 | n++; |
| 11359 | 725 | } |
| 726 | } | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12911
diff
changeset
|
727 | |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12911
diff
changeset
|
728 | if (pixbuf != NULL) |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
12911
diff
changeset
|
729 | g_object_unref(pixbuf); |
| 11359 | 730 | } |
| 731 | ||
| 9797 | 732 | static void * |
| 15884 | 733 | pidgin_notify_searchresults(PurpleConnection *gc, const char *title, |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
734 | const char *primary, const char *secondary, |
| 15884 | 735 | PurpleNotifySearchResults *results, gpointer user_data) |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
736 | { |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
737 | GtkWidget *window; |
| 11359 | 738 | GtkWidget *treeview; |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
739 | GtkWidget *close_button; |
| 11359 | 740 | GType *col_types; |
| 741 | GtkListStore *model; | |
| 742 | GtkCellRenderer *renderer; | |
| 12257 | 743 | guint col_num; |
|
20980
1599801ecbae
Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20791
diff
changeset
|
744 | GList *columniter; |
| 12257 | 745 | guint i; |
| 11359 | 746 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
747 | GtkWidget *vbox; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
748 | GtkWidget *label; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
749 | GtkWidget *sw; |
| 15882 | 750 | PidginNotifySearchResultsData *data; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
751 | char *label_text; |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
752 | char *primary_esc, *secondary_esc; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
753 | |
| 12257 | 754 | g_return_val_if_fail(gc != NULL, NULL); |
| 755 | g_return_val_if_fail(results != NULL, NULL); | |
| 756 | ||
| 15882 | 757 | data = g_malloc(sizeof(PidginNotifySearchResultsData)); |
| 13641 | 758 | data->user_data = user_data; |
|
14038
3b7740b778ad
[gaim-migrate @ 16534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14037
diff
changeset
|
759 | data->results = results; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
760 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
761 | /* Create the window */ |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
762 | window = gtk_dialog_new(); |
|
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
763 | gtk_window_set_title(GTK_WINDOW(window), title ? title :_("Search Results")); |
|
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
764 | gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER); |
|
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
765 | gtk_window_set_resizable(GTK_WINDOW(window), TRUE); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
766 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
767 | g_signal_connect_swapped(G_OBJECT(window), "delete_event", |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
768 | G_CALLBACK(searchresults_close_cb), data); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
769 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
770 | /* Setup the main vbox */ |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
771 | vbox = GTK_DIALOG(window)->vbox; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
772 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
773 | /* Setup the descriptive label */ |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
774 | primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL; |
|
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
775 | secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
776 | label_text = g_strdup_printf( |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
777 | "<span weight=\"bold\" size=\"larger\">%s</span>%s%s", |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
778 | (primary ? primary_esc : ""), |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
779 | (primary && secondary ? "\n" : ""), |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
780 | (secondary ? secondary_esc : "")); |
|
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
781 | g_free(primary_esc); |
|
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10750
diff
changeset
|
782 | g_free(secondary_esc); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
783 | label = gtk_label_new(NULL); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
784 | gtk_label_set_markup(GTK_LABEL(label), label_text); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
785 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
786 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
787 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
788 | gtk_widget_show(label); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
789 | g_free(label_text); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
790 | |
| 11359 | 791 | /* +1 is for the automagically created Status column. */ |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
792 | col_num = g_list_length(results->columns) + 1; |
| 11359 | 793 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
794 | /* Setup the list model */ |
| 11359 | 795 | col_types = g_new0(GType, col_num); |
| 796 | ||
| 797 | /* There always is this first column. */ | |
| 798 | col_types[0] = GDK_TYPE_PIXBUF; | |
| 799 | for (i = 1; i < col_num; i++) { | |
| 800 | col_types[i] = G_TYPE_STRING; | |
| 801 | } | |
| 802 | model = gtk_list_store_newv(col_num, col_types); | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
803 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
804 | /* Setup the scrolled window containing the treeview */ |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
805 | sw = gtk_scrolled_window_new(NULL, NULL); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
806 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
807 | GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
808 | gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
809 | GTK_SHADOW_IN); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
810 | gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
811 | gtk_widget_show(sw); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
812 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
813 | /* Setup the treeview */ |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
814 | treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
815 | gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); |
| 11359 | 816 | gtk_widget_set_size_request(treeview, 500, 400); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
817 | gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
818 | GTK_SELECTION_SINGLE); |
| 11359 | 819 | gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), TRUE); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
820 | gtk_container_add(GTK_CONTAINER(sw), treeview); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
821 | gtk_widget_show(treeview); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
822 | |
| 11359 | 823 | renderer = gtk_cell_renderer_pixbuf_new(); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
824 | gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), |
| 11359 | 825 | -1, "", renderer, "pixbuf", 0, NULL); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
826 | |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
827 | i = 1; |
|
20980
1599801ecbae
Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20791
diff
changeset
|
828 | for (columniter = results->columns; columniter != NULL; columniter = columniter->next) { |
|
1599801ecbae
Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20791
diff
changeset
|
829 | PurpleNotifySearchColumn *column = columniter->data; |
| 11359 | 830 | renderer = gtk_cell_renderer_text_new(); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
831 | |
| 11359 | 832 | gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, |
|
20980
1599801ecbae
Fix pidgin_notify_searchresults to use the actual title for column headers,
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20791
diff
changeset
|
833 | column->title, renderer, "text", i, NULL); |
|
20355
dacdf6087e16
Access search results directly instead of going through the API because
Mark Doliner <markdoliner@pidgin.im>
parents:
20330
diff
changeset
|
834 | i++; |
| 11359 | 835 | } |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
836 | |
| 12257 | 837 | for (i = 0; i < g_list_length(results->buttons); i++) { |
| 15884 | 838 | PurpleNotifySearchButton *b = g_list_nth_data(results->buttons, i); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
839 | GtkWidget *button = NULL; |
| 11359 | 840 | switch (b->type) { |
| 15884 | 841 | case PURPLE_NOTIFY_BUTTON_LABELED: |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
842 | if(b->label) { |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
843 | button = gtk_button_new_with_label(b->label); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
844 | } else { |
|
19832
84b69b21672b
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19546
diff
changeset
|
845 | purple_debug_warning("gtknotify", "Missing button label\n"); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
846 | } |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
847 | break; |
| 15884 | 848 | case PURPLE_NOTIFY_BUTTON_CONTINUE: |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
849 | button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_GO_FORWARD, GTK_RESPONSE_NONE); |
| 11359 | 850 | break; |
| 15884 | 851 | case PURPLE_NOTIFY_BUTTON_ADD: |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
852 | button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_ADD, GTK_RESPONSE_NONE); |
| 11359 | 853 | break; |
| 15884 | 854 | case PURPLE_NOTIFY_BUTTON_INFO: |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
855 | button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_TOOLBAR_USER_INFO, GTK_RESPONSE_NONE); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
856 | break; |
| 15884 | 857 | case PURPLE_NOTIFY_BUTTON_IM: |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
858 | button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, GTK_RESPONSE_NONE); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
859 | break; |
| 15884 | 860 | case PURPLE_NOTIFY_BUTTON_JOIN: |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
861 | button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_CHAT, GTK_RESPONSE_NONE); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
862 | break; |
| 15884 | 863 | case PURPLE_NOTIFY_BUTTON_INVITE: |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
864 | button = gtk_dialog_add_button(GTK_DIALOG(window), PIDGIN_STOCK_INVITE, GTK_RESPONSE_NONE); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
865 | break; |
| 11359 | 866 | default: |
| 15884 | 867 | purple_debug_warning("gtknotify", "Incorrect button type: %d\n", b->type); |
| 11359 | 868 | } |
| 869 | if (button != NULL) { | |
| 15882 | 870 | PidginNotifySearchResultsButtonData *bd; |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
871 | |
| 15882 | 872 | bd = g_new0(PidginNotifySearchResultsButtonData, 1); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
873 | bd->button = b; |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
874 | bd->data = data; |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
875 | |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
876 | g_signal_connect(G_OBJECT(button), "clicked", |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
877 | G_CALLBACK(searchresults_callback_wrapper_cb), bd); |
|
14038
3b7740b778ad
[gaim-migrate @ 16534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14037
diff
changeset
|
878 | g_signal_connect_swapped(G_OBJECT(button), "destroy", G_CALLBACK(g_free), bd); |
| 11359 | 879 | } |
| 880 | } | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
881 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
882 | /* Add the Close button */ |
|
19546
b7a8a86af65a
Use GtkDialog more often. Thanks nix_nix. Fixes #2618
Sean Egan <seanegan@pidgin.im>
parents:
19431
diff
changeset
|
883 | close_button = gtk_dialog_add_button(GTK_DIALOG(window), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
884 | |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
885 | g_signal_connect_swapped(G_OBJECT(close_button), "clicked", |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
886 | G_CALLBACK(searchresults_close_cb), data); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12600
diff
changeset
|
887 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
888 | data->account = gc->account; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
889 | data->model = model; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
890 | data->treeview = treeview; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
891 | data->window = window; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
892 | |
| 11359 | 893 | /* Insert rows. */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
894 | pidgin_notify_searchresults_new_rows(gc, results, data); |
| 11359 | 895 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
896 | /* Show the window */ |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
897 | gtk_widget_show(window); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
898 | return data; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
899 | } |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
900 | |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
901 | /** Xerox'ed from Finch! How the tables have turned!! ;) **/ |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
902 | /** User information. **/ |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
903 | static GHashTable *userinfo; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
904 | |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
905 | static char * |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
906 | userinfo_hash(PurpleAccount *account, const char *who) |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
907 | { |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
908 | char key[256]; |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
909 | snprintf(key, sizeof(key), "%s - %s", purple_account_get_username(account), purple_normalize(account, who)); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
910 | return g_utf8_strup(key, -1); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
911 | } |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
912 | |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
913 | static void |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
914 | remove_userinfo(GtkWidget *widget, gpointer key) |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
915 | { |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
916 | PidginUserInfo *pinfo = g_hash_table_lookup(userinfo, key); |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
917 | |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
918 | while (pinfo->count--) |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
919 | purple_notify_close(PURPLE_NOTIFY_USERINFO, widget); |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
920 | |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
921 | g_hash_table_remove(userinfo, key); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
922 | } |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
923 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
924 | static void * |
| 15884 | 925 | pidgin_notify_userinfo(PurpleConnection *gc, const char *who, |
| 926 | PurpleNotifyUserInfo *user_info) | |
| 9797 | 927 | { |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
928 | char *info; |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11359
diff
changeset
|
929 | void *ui_handle; |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
930 | char *key = userinfo_hash(purple_connection_get_account(gc), who); |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
931 | PidginUserInfo *pinfo = NULL; |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
932 | |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
933 | if (!userinfo) { |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
934 | userinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
935 | } |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11359
diff
changeset
|
936 | |
| 15884 | 937 | info = purple_notify_user_info_get_text_with_newline(user_info, "<br />"); |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
938 | pinfo = g_hash_table_lookup(userinfo, key); |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
939 | if (pinfo != NULL) { |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
940 | GtkIMHtml *imhtml = g_object_get_data(G_OBJECT(pinfo->window), "info-widget"); |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
941 | char *linked_text = purple_markup_linkify(info); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
942 | gtk_imhtml_clear(imhtml); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
943 | gtk_imhtml_append_text(imhtml, linked_text, notify_imhtml_options()); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
944 | g_free(linked_text); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
945 | g_free(key); |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
946 | ui_handle = pinfo->window; |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
947 | pinfo->count++; |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
948 | } else { |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
949 | char *primary = g_strdup_printf(_("Info for %s"), who); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
950 | ui_handle = pidgin_notify_formatted(_("Buddy Information"), primary, NULL, info); |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
951 | g_signal_handlers_disconnect_by_func(G_OBJECT(ui_handle), G_CALLBACK(formatted_close_cb), NULL); |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
952 | g_signal_connect(G_OBJECT(ui_handle), "destroy", G_CALLBACK(remove_userinfo), key); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
953 | g_free(primary); |
|
17728
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
954 | pinfo = g_new0(PidginUserInfo, 1); |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
955 | pinfo->window = ui_handle; |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
956 | pinfo->count = 1; |
|
323b1481c2bc
sadrul's fix for the userinfo notify crash on disconnect that was caused by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17027
diff
changeset
|
957 | g_hash_table_insert(userinfo, key, pinfo); |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16752
diff
changeset
|
958 | } |
|
15206
70520a610969
[gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents:
14865
diff
changeset
|
959 | g_free(info); |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11359
diff
changeset
|
960 | return ui_handle; |
| 9797 | 961 | } |
| 962 | ||
| 5437 | 963 | static void |
| 15884 | 964 | pidgin_close_notify(PurpleNotifyType type, void *ui_handle) |
| 5437 | 965 | { |
| 15884 | 966 | if (type == PURPLE_NOTIFY_EMAIL || type == PURPLE_NOTIFY_EMAILS) |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
967 | { |
| 15882 | 968 | PidginNotifyMailData *data = (PidginNotifyMailData *)ui_handle; |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
969 | |
|
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
970 | g_free(data->url); |
|
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
971 | g_free(data); |
|
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
972 | } |
| 15884 | 973 | else if (type == PURPLE_NOTIFY_SEARCHRESULTS) |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
974 | { |
| 15882 | 975 | PidginNotifySearchResultsData *data = (PidginNotifySearchResultsData *)ui_handle; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
976 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
977 | gtk_widget_destroy(data->window); |
| 15884 | 978 | purple_notify_searchresults_free(data->results); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
979 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
980 | g_free(data); |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10297
diff
changeset
|
981 | } |
|
10750
455f5dc6e2f2
[gaim-migrate @ 12353]
Daniel Atallah <datallah@pidgin.im>
parents:
10732
diff
changeset
|
982 | else if (ui_handle != NULL) |
|
5519
5ac50d7f3689
[gaim-migrate @ 5919]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
983 | gtk_widget_destroy(GTK_WIDGET(ui_handle)); |
| 5437 | 984 | } |
| 985 | ||
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
986 | #ifndef _WIN32 |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
987 | static gint |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
988 | uri_command(const char *command, gboolean sync) |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
989 | { |
|
13520
f89ab3c41f4b
[gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13415
diff
changeset
|
990 | gchar *tmp; |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
991 | GError *error = NULL; |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
992 | gint ret = 0; |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
993 | |
| 15884 | 994 | purple_debug_misc("gtknotify", "Executing %s\n", command); |
|
8278
5fecd24d863c
[gaim-migrate @ 9002]
Mark Doliner <markdoliner@pidgin.im>
parents:
8277
diff
changeset
|
995 | |
| 15884 | 996 | if (!purple_program_is_valid(command)) |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
997 | { |
|
13540
3c709ce41cfe
[gaim-migrate @ 15916]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
998 | tmp = g_strdup_printf(_("The browser command \"%s\" is invalid."), |
|
13520
f89ab3c41f4b
[gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13415
diff
changeset
|
999 | command ? command : "(none)"); |
| 15884 | 1000 | purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1001 | g_free(tmp); |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1002 | |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1003 | } |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1004 | else if (sync) |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1005 | { |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1006 | gint status; |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1007 | |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1008 | if (!g_spawn_command_line_sync(command, NULL, NULL, &status, &error)) |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1009 | { |
|
13540
3c709ce41cfe
[gaim-migrate @ 15916]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
1010 | tmp = g_strdup_printf(_("Error launching \"%s\": %s"), |
|
13520
f89ab3c41f4b
[gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13415
diff
changeset
|
1011 | command, error->message); |
| 15884 | 1012 | purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1013 | g_free(tmp); |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1014 | g_error_free(error); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1015 | } |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1016 | else |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1017 | ret = status; |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1018 | } |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1019 | else |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1020 | { |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1021 | if (!g_spawn_command_line_async(command, &error)) |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1022 | { |
|
13540
3c709ce41cfe
[gaim-migrate @ 15916]
Richard Laager <rlaager@pidgin.im>
parents:
13520
diff
changeset
|
1023 | tmp = g_strdup_printf(_("Error launching \"%s\": %s"), |
|
13520
f89ab3c41f4b
[gaim-migrate @ 15895]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13415
diff
changeset
|
1024 | command, error->message); |
| 15884 | 1025 | purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp); |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1026 | g_free(tmp); |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1027 | g_error_free(error); |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1028 | } |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1029 | } |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1030 | |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1031 | return ret; |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1032 | } |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1033 | #endif /* _WIN32 */ |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1034 | |
| 7136 | 1035 | static void * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1036 | pidgin_notify_uri(const char *uri) |
| 7136 | 1037 | { |
| 1038 | #ifndef _WIN32 | |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1039 | char *escaped = g_shell_quote(uri); |
| 7136 | 1040 | char *command = NULL; |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1041 | char *remote_command = NULL; |
| 7136 | 1042 | const char *web_browser; |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1043 | int place; |
| 7136 | 1044 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15931
diff
changeset
|
1045 | web_browser = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser"); |
|
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15931
diff
changeset
|
1046 | place = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/browsers/place"); |
| 7136 | 1047 | |
| 10060 | 1048 | /* if they are running gnome, use the gnome web browser */ |
| 15884 | 1049 | if (purple_running_gnome() == TRUE) |
| 10060 | 1050 | { |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1051 | command = g_strdup_printf("gnome-open %s", escaped); |
|
10061
2833056ea11c
[gaim-migrate @ 11033]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10060
diff
changeset
|
1052 | } |
| 15884 | 1053 | else if (purple_running_osx() == TRUE) |
|
14709
9b6f1cc24c6a
[gaim-migrate @ 17393]
Evan Schoenberg <evands@pidgin.im>
parents:
14676
diff
changeset
|
1054 | { |
|
9b6f1cc24c6a
[gaim-migrate @ 17393]
Evan Schoenberg <evands@pidgin.im>
parents:
14676
diff
changeset
|
1055 | command = g_strdup_printf("open %s", escaped); |
|
9b6f1cc24c6a
[gaim-migrate @ 17393]
Evan Schoenberg <evands@pidgin.im>
parents:
14676
diff
changeset
|
1056 | } |
| 10060 | 1057 | else if (!strcmp(web_browser, "epiphany") || |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1058 | !strcmp(web_browser, "galeon")) |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1059 | { |
| 15568 | 1060 | if (place == PIDGIN_BROWSER_NEW_WINDOW) |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1061 | command = g_strdup_printf("%s -w %s", web_browser, escaped); |
| 15568 | 1062 | else if (place == PIDGIN_BROWSER_NEW_TAB) |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1063 | command = g_strdup_printf("%s -n %s", web_browser, escaped); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1064 | else |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1065 | command = g_strdup_printf("%s %s", web_browser, escaped); |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1066 | } |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1067 | else if (!strcmp(web_browser, "gnome-open")) |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1068 | { |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1069 | command = g_strdup_printf("gnome-open %s", escaped); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1070 | } |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1071 | else if (!strcmp(web_browser, "kfmclient")) |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1072 | { |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1073 | command = g_strdup_printf("kfmclient openURL %s", escaped); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1074 | /* |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1075 | * Does Konqueror have options to open in new tab |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1076 | * and/or current window? |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1077 | */ |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1078 | } |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1079 | else if (!strcmp(web_browser, "mozilla") || |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1080 | !strcmp(web_browser, "mozilla-firebird") || |
|
14676
70f04fbec17b
[gaim-migrate @ 17342]
Hendrik-Jan Heins <hjheins@gmail.com>
parents:
14636
diff
changeset
|
1081 | !strcmp(web_browser, "firefox") || |
|
70f04fbec17b
[gaim-migrate @ 17342]
Hendrik-Jan Heins <hjheins@gmail.com>
parents:
14636
diff
changeset
|
1082 | !strcmp(web_browser, "seamonkey")) |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1083 | { |
|
9399
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1084 | char *args = ""; |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1085 | |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1086 | command = g_strdup_printf("%s %s", web_browser, escaped); |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1087 | |
|
9399
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1088 | /* |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1089 | * Firefox 0.9 and higher require a "-a firefox" option when |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1090 | * using -remote commands. This breaks older versions of |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1091 | * mozilla. So we include this other handly little string |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1092 | * when calling firefox. If the API for remote calls changes |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1093 | * any more in firefox then firefox should probably be split |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1094 | * apart from mozilla-firebird and mozilla... but this is good |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1095 | * for now. |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1096 | */ |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1097 | if (!strcmp(web_browser, "firefox")) |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1098 | args = "-a firefox"; |
|
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1099 | |
| 15568 | 1100 | if (place == PIDGIN_BROWSER_NEW_WINDOW) |
|
9399
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1101 | remote_command = g_strdup_printf("%s %s -remote " |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1102 | "openURL(%s,new-window)", |
|
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1103 | web_browser, args, escaped); |
| 15568 | 1104 | else if (place == PIDGIN_BROWSER_NEW_TAB) |
|
9399
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1105 | remote_command = g_strdup_printf("%s %s -remote " |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1106 | "openURL(%s,new-tab)", |
|
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1107 | web_browser, args, escaped); |
| 15568 | 1108 | else if (place == PIDGIN_BROWSER_CURRENT) |
|
9399
aeb9f3ace003
[gaim-migrate @ 10213]
Mark Doliner <markdoliner@pidgin.im>
parents:
9393
diff
changeset
|
1109 | remote_command = g_strdup_printf("%s %s -remote " |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1110 | "openURL(%s)", |
|
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1111 | web_browser, args, escaped); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1112 | } |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1113 | else if (!strcmp(web_browser, "netscape")) |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1114 | { |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1115 | command = g_strdup_printf("netscape %s", escaped); |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1116 | |
| 15568 | 1117 | if (place == PIDGIN_BROWSER_NEW_WINDOW) |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1118 | { |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1119 | remote_command = g_strdup_printf("netscape -remote " |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1120 | "openURL(%s,new-window)", |
|
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1121 | escaped); |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1122 | } |
| 15568 | 1123 | else if (place == PIDGIN_BROWSER_CURRENT) |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1124 | { |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1125 | remote_command = g_strdup_printf("netscape -remote " |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1126 | "openURL(%s)", escaped); |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1127 | } |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1128 | } |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1129 | else if (!strcmp(web_browser, "opera")) |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1130 | { |
| 15568 | 1131 | if (place == PIDGIN_BROWSER_NEW_WINDOW) |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1132 | command = g_strdup_printf("opera -newwindow %s", escaped); |
| 15568 | 1133 | else if (place == PIDGIN_BROWSER_NEW_TAB) |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1134 | command = g_strdup_printf("opera -newpage %s", escaped); |
| 15568 | 1135 | else if (place == PIDGIN_BROWSER_CURRENT) |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1136 | { |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1137 | remote_command = g_strdup_printf("opera -remote " |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1138 | "openURL(%s)", escaped); |
|
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1139 | command = g_strdup_printf("opera %s", escaped); |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1140 | } |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1141 | else |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1142 | command = g_strdup_printf("opera %s", escaped); |
|
9405
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1143 | |
|
3413b3694435
[gaim-migrate @ 10219]
Mark Doliner <markdoliner@pidgin.im>
parents:
9399
diff
changeset
|
1144 | } |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1145 | else if (!strcmp(web_browser, "custom")) |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1146 | { |
| 7136 | 1147 | const char *web_command; |
| 1148 | ||
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15931
diff
changeset
|
1149 | web_command = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/browsers/command"); |
| 7136 | 1150 | |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1151 | if (web_command == NULL || *web_command == '\0') |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1152 | { |
| 15884 | 1153 | purple_notify_error(NULL, NULL, _("Unable to open URL"), |
| 7136 | 1154 | _("The 'Manual' browser command has been " |
| 1155 | "chosen, but no command has been set.")); | |
| 1156 | return NULL; | |
| 1157 | } | |
| 1158 | ||
| 1159 | if (strstr(web_command, "%s")) | |
| 15884 | 1160 | command = purple_strreplace(web_command, "%s", escaped); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1161 | else |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1162 | { |
| 7136 | 1163 | /* |
| 1164 | * There is no "%s" in the browser command. Assume the user | |
| 1165 | * wanted the URL tacked on to the end of the command. | |
| 1166 | */ | |
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1167 | command = g_strdup_printf("%s %s", web_command, escaped); |
| 7136 | 1168 | } |
| 1169 | } | |
| 1170 | ||
|
12477
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1171 | g_free(escaped); |
|
9328971aff14
[gaim-migrate @ 14788]
Richard Laager <rlaager@pidgin.im>
parents:
12257
diff
changeset
|
1172 | |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1173 | if (remote_command != NULL) |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1174 | { |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1175 | /* try the remote command first */ |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1176 | if (uri_command(remote_command, TRUE) != 0) |
|
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1177 | uri_command(command, FALSE); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1178 | |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1179 | g_free(remote_command); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1180 | |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1181 | } |
|
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1182 | else |
|
8272
c1e38e0ec1d5
[gaim-migrate @ 8996]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8267
diff
changeset
|
1183 | uri_command(command, FALSE); |
| 7136 | 1184 | |
| 1185 | g_free(command); | |
| 1186 | ||
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1187 | #else /* !_WIN32 */ |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15570
diff
changeset
|
1188 | winpidgin_notify_uri(uri); |
|
8338
15352ef157f9
[gaim-migrate @ 9062]
Christian Hammond <chipx86@chipx86.com>
parents:
8337
diff
changeset
|
1189 | #endif /* !_WIN32 */ |
| 7136 | 1190 | |
| 1191 | return NULL; | |
| 1192 | } | |
| 1193 | ||
| 15884 | 1194 | static PurpleNotifyUiOps ops = |
| 5437 | 1195 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1196 | pidgin_notify_message, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1197 | pidgin_notify_email, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1198 | pidgin_notify_emails, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1199 | pidgin_notify_formatted, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1200 | pidgin_notify_searchresults, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1201 | pidgin_notify_searchresults_new_rows, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1202 | pidgin_notify_userinfo, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1203 | pidgin_notify_uri, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16259
diff
changeset
|
1204 | pidgin_close_notify, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16259
diff
changeset
|
1205 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16259
diff
changeset
|
1206 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16259
diff
changeset
|
1207 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16259
diff
changeset
|
1208 | NULL |
| 5437 | 1209 | }; |
| 1210 | ||
| 15884 | 1211 | PurpleNotifyUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15497
diff
changeset
|
1212 | pidgin_notify_get_ui_ops(void) |
| 5437 | 1213 | { |
| 1214 | return &ops; | |
| 1215 | } |