pidgin/gtkblist.c

Thu, 22 Feb 2007 20:01:17 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Thu, 22 Feb 2007 20:01:17 +0000
changeset 15739
d2fd54545624
parent 15692
ecda27df58b9
child 15769
813f36d31f6c
permissions
-rw-r--r--

remove old tray icon stock items

5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
10297
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10288
diff changeset
2 * @file gtkblist.c GTK+ BuddyList API
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10288
diff changeset
3 * @ingroup gtkui
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10288
diff changeset
4 *
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * gaim
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8040
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8040
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8040
diff changeset
9 * source distribution.
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * (at your option) any later version.
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * GNU General Public License for more details.
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9778
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
27 #include "pidgin.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
28
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
29 #include "account.h"
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
30 #include "connection.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
31 #include "core.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
32 #include "debug.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
33 #include "notify.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
34 #include "prpl.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
35 #include "prefs.h"
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
36 #include "plugin.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
37 #include "request.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
38 #include "signals.h"
14253
b63ebf84c42b This is a hand-crafted commit to migrate across subversion revisions
Ethan Blanton <elb@pidgin.im>
parents: 14239
diff changeset
39 #include "gaimstock.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
40 #include "util.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
41
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
42 #include "gtkaccount.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
43 #include "gtkblist.h"
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
44 #include "gtkcellrendererexpander.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
45 #include "gtkconv.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
46 #include "gtkdebug.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9686
diff changeset
47 #include "gtkdialogs.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
48 #include "gtkft.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
49 #include "gtklog.h"
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
50 #include "gtkmenutray.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
51 #include "gtkpounce.h"
11740
2b605228ec11 [gaim-migrate @ 14031]
Sean Egan <seanegan@pidgin.im>
parents: 11732
diff changeset
52 #include "gtkplugin.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
53 #include "gtkprefs.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
54 #include "gtkprivacy.h"
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8089
diff changeset
55 #include "gtkroomlist.h"
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
56 #include "gtkstatusbox.h"
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
57 #include "gtkscrollbook.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
58 #include "gtkutils.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
59
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60 #include <gdk/gdkkeysyms.h>
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61 #include <gtk/gtk.h>
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
62 #include <gdk/gdk.h>
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
63
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
64 #define HEADLINE_CLOSE_SIZE 12
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
65
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
66 typedef struct
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
67 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
68 GaimAccount *account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
69
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
70 GtkWidget *window;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
71 GtkWidget *combo;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
72 GtkWidget *entry;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
73 GtkWidget *entry_for_alias;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
74 GtkWidget *account_box;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
75
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
76 } PidginAddBuddyData;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
77
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
78 typedef struct
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
79 {
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
80 GaimAccount *account;
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
81 gchar *default_chat_name;
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
82
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
83 GtkWidget *window;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
84 GtkWidget *account_menu;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
85 GtkWidget *alias_entry;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
86 GtkWidget *group_combo;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
87 GtkWidget *entries_box;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
88 GtkSizeGroup *sg;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
89
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
90 GList *entries;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
91
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
92 } PidginAddChatData;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
93
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
94 typedef struct
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
95 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
96 GaimAccount *account;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
97
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
98 GtkWidget *window;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
99 GtkWidget *account_menu;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
100 GtkWidget *entries_box;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
101 GtkSizeGroup *sg;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
102
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
103 GList *entries;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
104 } PidginJoinChatData;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
105
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
106
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
107 static GtkWidget *accountmenu = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
109 static guint visibility_manager_count = 0;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
110 static gboolean gtk_blist_obscured = FALSE;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
111
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
112 static GList *pidgin_blist_sort_methods = NULL;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
113 static struct pidgin_blist_sort_method *current_sort_method = NULL;
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
114 static void sort_method_none(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
115
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
116 /* The functions we use for sorting aren't available in gtk 2.0.x, and
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
117 * segfault in 2.2.0. 2.2.1 is known to work, so I'll require that */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
118 #if GTK_CHECK_VERSION(2,2,1)
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
119 static void sort_method_alphabetical(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
120 static void sort_method_status(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
121 static void sort_method_log(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
122 #endif
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
123 static PidginBuddyList *gtkblist = NULL;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
124
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
125 static gboolean pidgin_blist_refresh_timer(GaimBuddyList *list);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
126 static void pidgin_blist_update_buddy(GaimBuddyList *list, GaimBlistNode *node, gboolean statusChange);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
127 static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
128 static void pidgin_blist_update(GaimBuddyList *list, GaimBlistNode *node);
15621
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
129 static void pidgin_blist_update_group(GaimBuddyList *list, GaimBlistNode *node);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
130 static void pidgin_blist_update_contact(GaimBuddyList *list, GaimBlistNode *node);
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
131 static char *gaim_get_tooltip_text(GaimBlistNode *node, gboolean full);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
132 static const char *item_factory_translate_func (const char *path, gpointer func_data);
5273
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
133 static gboolean get_iter_from_node(GaimBlistNode *node, GtkTreeIter *iter);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
134 static void redo_buddy_list(GaimBuddyList *list, gboolean remove, gboolean rerender);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
135 static void pidgin_blist_collapse_contact_cb(GtkWidget *w, GaimBlistNode *node);
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
136 static char *gaim_get_group_title(GaimBlistNode *gnode, gboolean expanded);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
137
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
138 static void pidgin_blist_tooltip_destroy(void);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
139
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
140 struct _pidgin_blist_node {
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
141 GtkTreeRowReference *row;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
142 gboolean contact_expanded;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
143 gboolean recent_signonoff;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
144 gint recent_signonoff_timer;
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
145 };
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
146
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
147 static char dim_grey_string[8] = "";
10144
22c7584a403d [gaim-migrate @ 11216]
Mark Doliner <markdoliner@pidgin.im>
parents: 10129
diff changeset
148 static char *dim_grey()
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
149 {
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
150 if (!gtkblist)
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
151 return "dim grey";
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
152 if (!dim_grey_string[0]) {
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
153 GtkStyle *style = gtk_widget_get_style(gtkblist->treeview);
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
154 snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
155 style->text_aa[GTK_STATE_NORMAL].red >> 8,
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
156 style->text_aa[GTK_STATE_NORMAL].green >> 8,
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
157 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
158 }
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
159 return dim_grey_string;
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
160 }
10144
22c7584a403d [gaim-migrate @ 11216]
Mark Doliner <markdoliner@pidgin.im>
parents: 10129
diff changeset
161
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
162 /***************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
163 * Callbacks *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
164 ***************************************************/
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
165 static gboolean gtk_blist_visibility_cb(GtkWidget *w, GdkEventVisibility *event, gpointer data)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
166 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
167 if (event->state == GDK_VISIBILITY_FULLY_OBSCURED)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
168 gtk_blist_obscured = TRUE;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
169 else if (gtk_blist_obscured) {
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
170 gtk_blist_obscured = FALSE;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
171 pidgin_blist_refresh_timer(gaim_get_blist());
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
172 }
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
173
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
174 /* continue to handle event normally */
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
175 return FALSE;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
176 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
177
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
178 static gboolean gtk_blist_window_state_cb(GtkWidget *w, GdkEventWindowState *event, gpointer data)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
179 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
180 if(event->changed_mask & GDK_WINDOW_STATE_WITHDRAWN) {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
181 if(event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
182 gaim_prefs_set_bool("/gaim/gtk/blist/list_visible", FALSE);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
183 else {
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
184 gaim_prefs_set_bool("/gaim/gtk/blist/list_visible", TRUE);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
185 pidgin_blist_refresh_timer(gaim_get_blist());
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
186 }
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
187 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
188
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
189 if(event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
190 if(event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
191 gaim_prefs_set_bool("/gaim/gtk/blist/list_maximized", TRUE);
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
192 else
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
193 gaim_prefs_set_bool("/gaim/gtk/blist/list_maximized", FALSE);
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
194 }
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
195
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
196 /* Refresh gtkblist if un-iconifying */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
197 if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED){
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
198 if (!(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
199 pidgin_blist_refresh_timer(gaim_get_blist());
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
200 }
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
201
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
202 return FALSE;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
203 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205 static gboolean gtk_blist_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 {
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
207 if(visibility_manager_count)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
208 gaim_blist_set_visible(FALSE);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
209 else
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
210 gaim_core_quit();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212 /* we handle everything, event should not propogate further */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 return TRUE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
216 static gboolean gtk_blist_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
217 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
218 /* unfortunately GdkEventConfigure ignores the window gravity, but *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219 * the only way we have of setting the position doesn't. we have to *
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
220 * call get_position because it does pay attention to the gravity. *
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
221 * this is inefficient and I agree it sucks, but it's more likely *
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
222 * to work correctly. - Robot101 */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
223 gint x, y;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
224
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
225 /* check for visibility because when we aren't visible, this will *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
226 * give us bogus (0,0) coordinates. - xOr */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
227 if (GTK_WIDGET_VISIBLE(w))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
228 gtk_window_get_position(GTK_WINDOW(w), &x, &y);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
229 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
230 return FALSE; /* carry on normally */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
231
13768
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
232 #ifdef _WIN32
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
233 /* Workaround for GTK+ bug # 169811 - "configure_event" is fired
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
234 * when the window is being maximized */
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
235 if (gdk_window_get_state(w->window)
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
236 & GDK_WINDOW_STATE_MAXIMIZED) {
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
237 return FALSE;
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
238 }
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
239 #endif
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
240
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
241 /* don't save if nothing changed */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
242 if (x == gaim_prefs_get_int("/gaim/gtk/blist/x") &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
243 y == gaim_prefs_get_int("/gaim/gtk/blist/y") &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
244 event->width == gaim_prefs_get_int("/gaim/gtk/blist/width") &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
245 event->height == gaim_prefs_get_int("/gaim/gtk/blist/height")) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
246
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
247 return FALSE; /* carry on normally */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
248 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
249
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
250 /* don't save off-screen positioning */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
251 if (x + event->width < 0 ||
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
252 y + event->height < 0 ||
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
253 x > gdk_screen_width() ||
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
254 y > gdk_screen_height()) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
255
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
256 return FALSE; /* carry on normally */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
257 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
258
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
259 /* ignore changes when maximized */
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
260 if(gaim_prefs_get_bool("/gaim/gtk/blist/list_maximized"))
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
261 return FALSE;
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
262
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
263 /* store the position */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
264 gaim_prefs_set_int("/gaim/gtk/blist/x", x);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
265 gaim_prefs_set_int("/gaim/gtk/blist/y", y);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
266 gaim_prefs_set_int("/gaim/gtk/blist/width", event->width);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
267 gaim_prefs_set_int("/gaim/gtk/blist/height", event->height);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
268
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
269 gtk_widget_set_size_request(gtkblist->headline_label,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
270 gaim_prefs_get_int("/gaim/gtk/blist/width")-25,-1);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 /* continue to handle event normally */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
274
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
275 static void gtk_blist_menu_info_cb(GtkWidget *w, GaimBuddy *b)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
276 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277 serv_get_info(b->account->gc, b->name);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
280 static void gtk_blist_menu_im_cb(GtkWidget *w, GaimBuddy *b)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
282 pidgindialogs_im_with_user(b->account, b->name);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
285 static void gtk_blist_menu_send_file_cb(GtkWidget *w, GaimBuddy *b)
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
286 {
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
287 serv_send_file(b->account->gc, b->name, NULL);
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
288 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
289
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
290 static void gtk_blist_menu_autojoin_cb(GtkWidget *w, GaimChat *chat)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
291 {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
292 gaim_blist_node_set_bool((GaimBlistNode*)chat, "gtk-autojoin",
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
293 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
294 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
295
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
296 static void gtk_blist_join_chat(GaimChat *chat)
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
297 {
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
298 GaimConversation *conv;
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
299
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
300 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT,
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
301 gaim_chat_get_name(chat),
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
302 chat->account);
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
303
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
304 if (conv != NULL)
15670
25536d2aca5c Let's use the core function instead of using the uiops function directly when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15648
diff changeset
305 gaim_conversation_present(conv);
12592
5e1ce1a49ddb [gaim-migrate @ 14922]
Richard Laager <rlaager@pidgin.im>
parents: 12589
diff changeset
306
5e1ce1a49ddb [gaim-migrate @ 14922]
Richard Laager <rlaager@pidgin.im>
parents: 12589
diff changeset
307 serv_join_chat(chat->account->gc, chat->components);
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
308 }
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
309
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
310 static void gtk_blist_menu_join_cb(GtkWidget *w, GaimChat *chat)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 {
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
312 gtk_blist_join_chat(chat);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
313 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
314
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
315 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1,
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
316 char *arg2, gpointer nada)
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
317 {
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
318 GtkTreeIter iter;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
319 GtkTreePath *path;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
320 GValue val;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
321 GaimBlistNode *node;
14526
272b75278ff1 [gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14518
diff changeset
322 GaimGroup *dest;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
323
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
324 path = gtk_tree_path_new_from_string (arg1);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
325 gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
326 gtk_tree_path_free (path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
327 val.g_type = 0;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
328 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
329 node = g_value_get_pointer(&val);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
330 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
331 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
332
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
333 switch (node->type)
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
334 {
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
335 case GAIM_BLIST_CONTACT_NODE:
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
336 {
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
337 GaimContact *contact = (GaimContact *)node;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
338 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
339
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
340 if (contact->alias || gtknode->contact_expanded)
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
341 gaim_blist_alias_contact(contact, arg2);
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
342 else
12478
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
343 {
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
344 GaimBuddy *buddy = gaim_contact_get_priority_buddy(contact);
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
345 gaim_blist_alias_buddy(buddy, arg2);
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
346 serv_alias_buddy(buddy);
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
347 }
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
348 }
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
349 break;
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
350
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
351 case GAIM_BLIST_BUDDY_NODE:
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
352 gaim_blist_alias_buddy((GaimBuddy*)node, arg2);
12478
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
353 serv_alias_buddy((GaimBuddy *)node);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
354 break;
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
355 case GAIM_BLIST_GROUP_NODE:
14526
272b75278ff1 [gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14518
diff changeset
356 dest = gaim_find_group(arg2);
272b75278ff1 [gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14518
diff changeset
357 if (dest != NULL && strcmp(arg2, ((GaimGroup*) node)->name)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
358 pidgindialogs_merge_groups((GaimGroup*) node, arg2);
14526
272b75278ff1 [gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14518
diff changeset
359 } else
272b75278ff1 [gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14518
diff changeset
360 gaim_blist_rename_group((GaimGroup*)node, arg2);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
361 break;
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
362 case GAIM_BLIST_CHAT_NODE:
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
363 gaim_blist_alias_chat((GaimChat*)node, arg2);
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
364 break;
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
365 default:
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
366 break;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
367 }
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
368 }
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
369
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
370 static void gtk_blist_menu_alias_cb(GtkWidget *w, GaimBlistNode *node)
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
371 {
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
372 GtkTreeIter iter;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
373 GtkTreePath *path;
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
374 const char *text = NULL;
13510
6b9acc4e1e79 [gaim-migrate @ 15885]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13479
diff changeset
375 char *esc;
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
376
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
377 if (!(get_iter_from_node(node, &iter))) {
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
378 /* This is either a bug, or the buddy is in a collapsed contact */
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
379 node = node->parent;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
380 if (!get_iter_from_node(node, &iter))
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
381 /* Now it's definitely a bug */
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
382 return;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
383 }
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
384
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
385 switch (node->type) {
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
386 case GAIM_BLIST_BUDDY_NODE:
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
387 text = gaim_buddy_get_alias((GaimBuddy *)node);
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
388 break;
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
389 case GAIM_BLIST_CONTACT_NODE:
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
390 text = gaim_contact_get_alias((GaimContact *)node);
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
391 break;
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
392 case GAIM_BLIST_GROUP_NODE:
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
393 text = ((GaimGroup *)node)->name;
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
394 break;
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
395 case GAIM_BLIST_CHAT_NODE:
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
396 text = gaim_chat_get_name((GaimChat *)node);
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
397 break;
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
398 default:
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
399 g_return_if_reached();
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
400 }
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
401
13510
6b9acc4e1e79 [gaim-migrate @ 15885]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13479
diff changeset
402 esc = g_markup_escape_text(text, -1);
6b9acc4e1e79 [gaim-migrate @ 15885]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13479
diff changeset
403 gtk_tree_store_set(gtkblist->treemodel, &iter, NAME_COLUMN, esc, -1);
6b9acc4e1e79 [gaim-migrate @ 15885]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13479
diff changeset
404 g_free(esc);
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
405
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
406 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
407 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
408 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
409 gtk_widget_grab_focus(gtkblist->treeview);
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
410 #if GTK_CHECK_VERSION(2,2,0)
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
411 gtk_tree_view_set_cursor_on_cell(GTK_TREE_VIEW(gtkblist->treeview), path,
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
412 gtkblist->text_column, gtkblist->text_rend, TRUE);
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
413 #else
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
414 gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkblist->treeview), path, gtkblist->text_column, TRUE);
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
415 #endif
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
416 gtk_tree_path_free(path);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
419 static void gtk_blist_menu_bp_cb(GtkWidget *w, GaimBuddy *b)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
421 pidgin_pounce_editor_show(b->account, b->name, NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
422 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
424 static void gtk_blist_menu_showlog_cb(GtkWidget *w, GaimBlistNode *node)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
425 {
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
426 GaimLogType type;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
427 GaimAccount *account;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
428 char *name = NULL;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
429
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
430 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
431
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
432 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
433 GaimBuddy *b = (GaimBuddy*) node;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
434 type = GAIM_LOG_IM;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
435 name = g_strdup(b->name);
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
436 account = b->account;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
437 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
438 GaimChat *c = (GaimChat*) node;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
439 GaimPluginProtocolInfo *prpl_info = NULL;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
440 type = GAIM_LOG_CHAT;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
441 account = c->account;
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
442 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(account)));
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
443 if (prpl_info && prpl_info->get_chat_name) {
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
444 name = prpl_info->get_chat_name(c->components);
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
445 }
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
446 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
447 pidgin_log_show_contact((GaimContact *)node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
448 pidgin_clear_cursor(gtkblist->window);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
449 return;
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
450 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
451 pidgin_clear_cursor(gtkblist->window);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
452
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
453 /* This callback should not have been registered for a node
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
454 * that doesn't match the type of one of the blocks above. */
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
455 g_return_if_reached();
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
456 }
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
457
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
458 if (name && account) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
459 pidgin_log_show(type, name, account);
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
460 g_free(name);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
461
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
462 pidgin_clear_cursor(gtkblist->window);
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
463 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
464 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
465
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
466 static void gtk_blist_show_systemlog_cb()
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
467 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
468 pidgin_syslog_show();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
469 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
470
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
471 static void gtk_blist_show_onlinehelp_cb()
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
472 {
10240
09342bc554d9 [gaim-migrate @ 11377]
Herman Bloggs <herman@bluedigits.com>
parents: 10229
diff changeset
473 gaim_notify_uri(NULL, GAIM_WEBSITE "documentation.php");
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
474 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
476 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
477 do_join_chat(PidginJoinChatData *data)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
478 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
479 if (data)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
480 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
481 GHashTable *components =
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
482 g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
483 GList *tmp;
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
484 GaimChat *chat;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
485
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
486 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
487 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
488 if (g_object_get_data(tmp->data, "is_spin"))
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
489 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
490 g_hash_table_replace(components,
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
491 g_strdup(g_object_get_data(tmp->data, "identifier")),
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
492 g_strdup_printf("%d",
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
493 gtk_spin_button_get_value_as_int(tmp->data)));
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
494 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
495 else
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
496 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
497 g_hash_table_replace(components,
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
498 g_strdup(g_object_get_data(tmp->data, "identifier")),
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
499 g_strdup(gtk_entry_get_text(tmp->data)));
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
500 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
501 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
502
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
503 chat = gaim_chat_new(data->account, NULL, components);
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
504 gtk_blist_join_chat(chat);
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
505 gaim_blist_remove_chat(chat);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
506 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
507 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
508
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
509 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
510 do_joinchat(GtkWidget *dialog, int id, PidginJoinChatData *info)
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
511 {
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
512 switch(id)
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
513 {
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
514 case GTK_RESPONSE_OK:
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
515 do_join_chat(info);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
516
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
517 break;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
518 }
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
519
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
520 gtk_widget_destroy(GTK_WIDGET(dialog));
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
521 g_list_free(info->entries);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
522 g_free(info);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
523 }
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
524
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
525 /*
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
526 * Check the values of all the text entry boxes. If any required input
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
527 * strings are empty then don't allow the user to click on "OK."
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
528 */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
529 static void
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
530 joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
531 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
532 PidginJoinChatData *data;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
533 GList *tmp;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
534 const char *text;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
535 gboolean required;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
536 gboolean sensitive = TRUE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
537
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
538 data = user_data;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
539
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
540 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
541 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
542 if (!g_object_get_data(tmp->data, "is_spin"))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
543 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
544 required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
545 text = gtk_entry_get_text(tmp->data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
546 if (required && (*text == '\0'))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
547 sensitive = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
548 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
549 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
550
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
551 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
552 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
553
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
554 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
555 pidgin_blist_update_privacy_cb(GaimBuddy *buddy)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
556 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
557 pidgin_blist_update_buddy(gaim_get_blist(), (GaimBlistNode*)(buddy), TRUE);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
558 }
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
559
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
560 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
561 rebuild_joinchat_entries(PidginJoinChatData *data)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
562 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
563 GaimConnection *gc;
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
564 GList *list = NULL, *tmp;
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
565 GHashTable *defaults = NULL;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
566 struct proto_chat_entry *pce;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
567 gboolean focus = TRUE;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
568
10127
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
569 g_return_if_fail(data->account != NULL);
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
570
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
571 gc = gaim_account_get_connection(data->account);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
572
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
573 while ((tmp = gtk_container_get_children(GTK_CONTAINER(data->entries_box))))
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
574 gtk_widget_destroy(tmp->data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
575
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
576 g_list_free(data->entries);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
577 data->entries = NULL;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
578
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
579 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
9959
e80396496a78 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
580 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
581
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
582 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
583 defaults = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, NULL);
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
584
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
585 for (tmp = list; tmp; tmp = tmp->next)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
586 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
587 GtkWidget *label;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
588 GtkWidget *rowbox;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
589 GtkWidget *input;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
590
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
591 pce = tmp->data;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
592
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
593 rowbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
594 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
595
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
596 label = gtk_label_new_with_mnemonic(pce->label);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
597 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
598 gtk_size_group_add_widget(data->sg, label);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
599 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
600
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
601 if (pce->is_int)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
602 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
603 GtkObject *adjust;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
604 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
605 1, 10, 10);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
606 input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
607 gtk_widget_set_size_request(input, 50, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
608 gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
609 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
610 else
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
611 {
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
612 char *value;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
613 input = gtk_entry_new();
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
614 gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
615 value = g_hash_table_lookup(defaults, pce->identifier);
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
616 if (value != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
617 gtk_entry_set_text(GTK_ENTRY(input), value);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
618 if (pce->secret)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
619 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
620 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15386
diff changeset
621 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15386
diff changeset
622 gtk_entry_set_invisible_char(GTK_ENTRY(input), GAIM_INVISIBLE_CHAR);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
623 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
624 gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
625 g_signal_connect(G_OBJECT(input), "changed",
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
626 G_CALLBACK(joinchat_set_sensitive_if_input_cb), data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
627 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
628
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
629 /* Do the following for any type of input widget */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
630 if (focus)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
631 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
632 gtk_widget_grab_focus(input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
633 focus = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
634 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
635 gtk_label_set_mnemonic_widget(GTK_LABEL(label), input);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
636 pidgin_set_accessible_label(input, label);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
637 g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
638 g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
639 g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
640 data->entries = g_list_append(data->entries, input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
641
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
642 g_free(pce);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
643 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
644
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
645 g_list_free(list);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
646 g_hash_table_destroy(defaults);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
647
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
648 /* Set whether the "OK" button should be clickable initially */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
649 joinchat_set_sensitive_if_input_cb(NULL, data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
650
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
651 gtk_widget_show_all(data->entries_box);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
652 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
653
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
654 static void
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
655 joinchat_select_account_cb(GObject *w, GaimAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
656 PidginJoinChatData *data)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
657 {
13560
bc440f376ffb [gaim-migrate @ 15938]
Etan Reisner <deryni@pidgin.im>
parents: 13546
diff changeset
658 data->account = account;
bc440f376ffb [gaim-migrate @ 15938]
Etan Reisner <deryni@pidgin.im>
parents: 13546
diff changeset
659 rebuild_joinchat_entries(data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
660 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
661
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
662 static gboolean
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
663 chat_account_filter_func(GaimAccount *account)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
664 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
665 GaimConnection *gc = gaim_account_get_connection(account);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
666 GaimPluginProtocolInfo *prpl_info = NULL;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
667
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
668 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
669
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
670 return (prpl_info->chat_info != NULL);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
671 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
672
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
673 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
674 pidgin_blist_joinchat_is_showable()
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
675 {
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
676 GList *c;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
677 GaimConnection *gc;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
678
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
679 for (c = gaim_connections_get_all(); c != NULL; c = c->next) {
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
680 gc = c->data;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
681
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
682 if (chat_account_filter_func(gaim_connection_get_account(gc)))
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
683 return TRUE;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
684 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
685
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
686 return FALSE;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
687 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
688
8305
5a6d1168a8b3 [gaim-migrate @ 9029]
Christian Hammond <chipx86@chipx86.com>
parents: 8303
diff changeset
689 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
690 pidgin_blist_joinchat_show(void)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
691 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
692 GtkWidget *hbox, *vbox;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
693 GtkWidget *rowbox;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
694 GtkWidget *label;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
695 PidginBuddyList *gtkblist;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
696 GtkWidget *img = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
697 PidginJoinChatData *data = NULL;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
698
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
699 gtkblist = PIDGIN_BLIST(gaim_get_blist());
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
700 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
701 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
702 data = g_new0(PidginJoinChatData, 1);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
703
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
704 data->window = gtk_dialog_new_with_buttons(_("Join a Chat"),
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
705 NULL, GTK_DIALOG_NO_SEPARATOR,
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
706 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
707 PIDGIN_STOCK_CHAT, GTK_RESPONSE_OK, NULL);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
708 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
709 gtk_container_set_border_width(GTK_CONTAINER(data->window), GAIM_HIG_BOX_SPACE);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
710 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
711 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
712 gtk_container_set_border_width(
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
713 GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
714 gtk_window_set_role(GTK_WINDOW(data->window), "join_chat");
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
715
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
716 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
717 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
718 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
719 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
720
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
721 vbox = gtk_vbox_new(FALSE, 5);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
722 gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
723 gtk_container_add(GTK_CONTAINER(hbox), vbox);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
724
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
725 label = gtk_label_new(_("Please enter the appropriate information "
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
726 "about the chat you would like to join.\n"));
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
727 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
728 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
729 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
730
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
731 rowbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
732 gtk_box_pack_start(GTK_BOX(vbox), rowbox, TRUE, TRUE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
733
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
734 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
735
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
736 label = gtk_label_new_with_mnemonic(_("_Account:"));
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
737 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
738 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
739 gtk_size_group_add_widget(data->sg, label);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
740
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
741 data->account_menu = pidgin_account_option_menu_new(NULL, FALSE,
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
742 G_CALLBACK(joinchat_select_account_cb),
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
743 chat_account_filter_func, data);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
744 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
745 gtk_label_set_mnemonic_widget(GTK_LABEL(label),
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
746 GTK_WIDGET(data->account_menu));
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
747 pidgin_set_accessible_label (data->account_menu, label);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
748
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
749 data->entries_box = gtk_vbox_new(FALSE, 5);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
750 gtk_container_add(GTK_CONTAINER(vbox), data->entries_box);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
751 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
752
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
753 data->account = pidgin_account_option_menu_get_selected(data->account_menu);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
754
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
755 rebuild_joinchat_entries(data);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
756
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
757 g_signal_connect(G_OBJECT(data->window), "response",
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
758 G_CALLBACK(do_joinchat), data);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
759
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
760 g_object_unref(data->sg);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
761
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
762 gtk_widget_show_all(data->window);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
763 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
764
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
765 static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
766 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
767 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
768
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
769 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
770 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
771
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
772 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
773
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
774 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
775 char *title;
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
776
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
777 title = gaim_get_group_title(node, TRUE);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
778
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
779 gtk_tree_store_set(gtkblist->treemodel, iter,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
780 NAME_COLUMN, title,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
781 -1);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
782
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
783 g_free(title);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
784
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
785 gaim_blist_node_set_bool(node, "collapsed", FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
786 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
787 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
788
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
789 static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
790 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
791 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
792
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
793 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
794 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
795
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
796 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
797
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
798 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
799 char *title;
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
800
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
801 title = gaim_get_group_title(node, FALSE);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
802
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
803 gtk_tree_store_set(gtkblist->treemodel, iter,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
804 NAME_COLUMN, title,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
805 -1);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
806
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
807 g_free(title);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
808
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
809 gaim_blist_node_set_bool(node, "collapsed", TRUE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
810 } else if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
811 pidgin_blist_collapse_contact_cb(NULL, node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
812 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
813 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
814
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
815 static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
816 GaimBlistNode *node;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
817 GtkTreeIter iter;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
818 GValue val;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
819
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
820 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
821
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
822 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
823 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
824 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
825
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
826 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
827 GaimBuddy *buddy;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
828
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
829 if(GAIM_BLIST_NODE_IS_CONTACT(node))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
830 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
831 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
832 buddy = (GaimBuddy*)node;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
833
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
834 pidgindialogs_im_with_user(buddy->account, buddy->name);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
835 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
836 gtk_blist_join_chat((GaimChat *)node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
837 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
838 /* if (gtk_tree_view_row_expanded(tv, path))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
839 gtk_tree_view_collapse_row(tv, path);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
840 else
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
841 gtk_tree_view_expand_row(tv,path,FALSE);*/
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
842 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
843 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
844
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
845 static void pidgin_blist_add_chat_cb()
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
846 {
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
847 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
848 GtkTreeIter iter;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
849 GaimBlistNode *node;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
850
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
851 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
852 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
853 if (GAIM_BLIST_NODE_IS_BUDDY(node))
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
854 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent->parent, NULL, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
855 if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node))
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
856 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent, NULL, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
857 else if (GAIM_BLIST_NODE_IS_GROUP(node))
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
858 gaim_blist_request_add_chat(NULL, (GaimGroup*)node, NULL, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
859 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
860 else {
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
861 gaim_blist_request_add_chat(NULL, NULL, NULL, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
862 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
863 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
864
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
865 static void pidgin_blist_add_buddy_cb()
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
866 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
867 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
868 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
869 GaimBlistNode *node;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
870
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
871 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
872 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
873 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
874 gaim_blist_request_add_buddy(NULL, NULL, ((GaimGroup*)node->parent->parent)->name,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
875 NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
876 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
877 || GAIM_BLIST_NODE_IS_CHAT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
878 gaim_blist_request_add_buddy(NULL, NULL, ((GaimGroup*)node->parent)->name, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
879 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
880 gaim_blist_request_add_buddy(NULL, NULL, ((GaimGroup*)node)->name, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
881 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
882 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
883 else {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
884 gaim_blist_request_add_buddy(NULL, NULL, NULL, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
885 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
886 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
887
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
888 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
889 pidgin_blist_remove_cb (GtkWidget *w, GaimBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
890 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
891 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
892 pidgindialogs_remove_buddy((GaimBuddy*)node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
893 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
894 pidgindialogs_remove_chat((GaimChat*)node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
895 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
896 pidgindialogs_remove_group((GaimGroup*)node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
897 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
898 pidgindialogs_remove_contact((GaimContact*)node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
899 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
900 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
901
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
902 struct _expand {
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
903 GtkTreeView *treeview;
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
904 GtkTreePath *path;
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
905 GaimBlistNode *node;
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
906 };
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
907
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
908 static gboolean
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
909 scroll_to_expanded_cell(gpointer data)
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
910 {
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
911 struct _expand *ex = data;
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
912 gtk_tree_view_scroll_to_cell(ex->treeview, ex->path, NULL, FALSE, 0, 0);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
913 pidgin_blist_update_contact(NULL, ex->node);
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
914
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
915 gtk_tree_path_free(ex->path);
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
916 g_free(ex);
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
917
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
918 return FALSE;
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
919 }
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
920
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
921 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
922 pidgin_blist_expand_contact_cb(GtkWidget *w, GaimBlistNode *node)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
923 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
924 struct _pidgin_blist_node *gtknode;
9632
e295aa712589 [gaim-migrate @ 10476]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
925 GtkTreeIter iter, parent;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
926 GaimBlistNode *bnode;
10325
9bb530214bae [gaim-migrate @ 11532]
Mark Doliner <markdoliner@pidgin.im>
parents: 10320
diff changeset
927 GtkTreePath *path;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
928
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
929 if(!GAIM_BLIST_NODE_IS_CONTACT(node))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
930 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
931
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
932 gtknode = (struct _pidgin_blist_node *)node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
933
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
934 gtknode->contact_expanded = TRUE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
935
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
936 for(bnode = node->child; bnode; bnode = bnode->next) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
937 pidgin_blist_update(NULL, bnode);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
938 }
10353
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
939
9632
e295aa712589 [gaim-migrate @ 10476]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
940 /* This ensures that the bottom buddy is visible, i.e. not scrolled off the alignment */
14748
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
941 if (get_iter_from_node(node, &parent)) {
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
942 struct _expand *ex = g_new0(struct _expand, 1);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
943
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
944 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(gtkblist->treemodel), &iter, &parent,
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
945 gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &parent) -1);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
946 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
947
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
948 /* Let the treeview draw so it knows where to scroll */
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
949 ex->treeview = GTK_TREE_VIEW(gtkblist->treeview);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
950 ex->path = path;
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
951 ex->node = node->child;
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
952 g_idle_add(scroll_to_expanded_cell, ex);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
953 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
954 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
955
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
956 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
957 pidgin_blist_collapse_contact_cb(GtkWidget *w, GaimBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
958 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
959 GaimBlistNode *bnode;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
960 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
961
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
962 if(!GAIM_BLIST_NODE_IS_CONTACT(node))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
963 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
964
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
965 gtknode = (struct _pidgin_blist_node *)node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
966
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
967 gtknode->contact_expanded = FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
968
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
969 for(bnode = node->child; bnode; bnode = bnode->next) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
970 pidgin_blist_update(NULL, bnode);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
971 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
972 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
973
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
974 static void
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
975 toggle_privacy(GtkWidget *widget, GaimBlistNode *node)
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
976 {
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
977 GaimBuddy *buddy;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
978 GaimAccount *account;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
979 gboolean permitted;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
980 const char *name;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
981
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
982 if (!GAIM_BLIST_NODE_IS_BUDDY(node))
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
983 return;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
984
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
985 buddy = (GaimBuddy *)node;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
986 account = gaim_buddy_get_account(buddy);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
987 name = gaim_buddy_get_name(buddy);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
988
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
989 permitted = gaim_privacy_check(account, name);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
990
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
991 /* XXX: Perhaps ask whether to restore the previous lists where appropirate? */
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
992
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
993 if (permitted)
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
994 gaim_privacy_deny(account, name, FALSE, FALSE);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
995 else
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
996 gaim_privacy_allow(account, name, FALSE, FALSE);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
997
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
998 pidgin_blist_update(gaim_get_blist(), node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
999 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1000
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1001 void pidgin_append_blist_node_privacy_menu(GtkWidget *menu, GaimBlistNode *node)
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1002 {
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1003 GaimBuddy *buddy = (GaimBuddy *)node;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1004 GaimAccount *account;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1005 gboolean permitted;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1006
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1007 account = gaim_buddy_get_account(buddy);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1008 permitted = gaim_privacy_check(account, gaim_buddy_get_name(buddy));
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1009
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1010 pidgin_new_item_from_stock(menu, permitted ? _("_Block") : _("Un_block"),
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1011 PIDGIN_STOCK_BLOCK, G_CALLBACK(toggle_privacy),
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1012 node, 0 ,0, NULL);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1013 }
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1014
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1015 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1016 pidgin_append_blist_node_proto_menu(GtkWidget *menu, GaimConnection *gc,
10662
e2dd08f1a92d [gaim-migrate @ 12199]
Etan Reisner <deryni@pidgin.im>
parents: 10643
diff changeset
1017 GaimBlistNode *node)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1018 {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1019 GList *l, *ll;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1020 GaimPluginProtocolInfo *prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1021
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1022 if(!prpl_info || !prpl_info->blist_node_menu)
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1023 return;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1024
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1025 for(l = ll = prpl_info->blist_node_menu(node); l; l = l->next) {
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12883
diff changeset
1026 GaimMenuAction *act = (GaimMenuAction *) l->data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1027 pidgin_append_menu_action(menu, act, node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1028 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1029 g_list_free(ll);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1030 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1031
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1032 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1033 pidgin_append_blist_node_extended_menu(GtkWidget *menu, GaimBlistNode *node)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1034 {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1035 GList *l, *ll;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1036
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1037 for(l = ll = gaim_blist_node_get_extended_menu(node); l; l = l->next) {
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12883
diff changeset
1038 GaimMenuAction *act = (GaimMenuAction *) l->data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1039 pidgin_append_menu_action(menu, act, node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1040 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1041 g_list_free(ll);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1042 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1043
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1044 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1045 pidgin_blist_make_buddy_menu(GtkWidget *menu, GaimBuddy *buddy, gboolean sub) {
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1046 GaimPluginProtocolInfo *prpl_info;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1047 GaimContact *contact;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1048 gboolean contact_expanded = FALSE;
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1049
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1050 g_return_if_fail(menu);
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1051 g_return_if_fail(buddy);
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1052
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1053 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1054
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1055 contact = gaim_buddy_get_contact(buddy);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1056 if (contact) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1057 contact_expanded = ((struct _pidgin_blist_node *)(((GaimBlistNode*)contact)->ui_data))->contact_expanded;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1058 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1059
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1060 if (prpl_info && prpl_info->get_info) {
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1061 pidgin_new_item_from_stock(menu, _("Get _Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1062 G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1063 }
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1064 pidgin_new_item_from_stock(menu, _("I_M"), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1065 G_CALLBACK(gtk_blist_menu_im_cb), buddy, 0, 0, NULL);
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
1066 if (prpl_info && prpl_info->send_file) {
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1067 if (!prpl_info->can_receive_file ||
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1068 prpl_info->can_receive_file(buddy->account->gc, buddy->name))
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1069 {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1070 pidgin_new_item_from_stock(menu, _("_Send File"),
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1071 PIDGIN_STOCK_FILE_TRANSFER,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1072 G_CALLBACK(gtk_blist_menu_send_file_cb),
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1073 buddy, 0, 0, NULL);
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
1074 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
1075 }
12024
5a87b77fcc3c [gaim-migrate @ 14317]
Sean Egan <seanegan@pidgin.im>
parents: 12016
diff changeset
1076
15622
024584b350fb context menu cleanup
Sean Egan <seanegan@pidgin.im>
parents: 15621
diff changeset
1077 pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1078 G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1079
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1080 if(((GaimBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1081 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1082 G_CALLBACK(gtk_blist_menu_showlog_cb),
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1083 contact, 0, 0, NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1084 } else if (!sub) {
15622
024584b350fb context menu cleanup
Sean Egan <seanegan@pidgin.im>
parents: 15621
diff changeset
1085 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1086 G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1087 }
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1088
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1089
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1090 pidgin_append_blist_node_proto_menu(menu, buddy->account->gc,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1091 (GaimBlistNode *)buddy);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1092 pidgin_append_blist_node_extended_menu(menu, (GaimBlistNode *)buddy);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1093
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
1094 if (((GaimBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1095 pidgin_separator(menu);
15622
024584b350fb context menu cleanup
Sean Egan <seanegan@pidgin.im>
parents: 15621
diff changeset
1096 pidgin_append_blist_node_privacy_menu(menu, (GaimBlistNode *)buddy);
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1097 pidgin_new_item_from_stock(menu, _("Alias..."), PIDGIN_STOCK_ALIAS,
9925
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1098 G_CALLBACK(gtk_blist_menu_alias_cb),
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1099 contact, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1100 pidgin_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1101 G_CALLBACK(pidgin_blist_remove_cb),
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1102 contact, 0, 0, NULL);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
1103 } else if (!sub || contact_expanded) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1104 pidgin_separator(menu);
15622
024584b350fb context menu cleanup
Sean Egan <seanegan@pidgin.im>
parents: 15621
diff changeset
1105 pidgin_append_blist_node_privacy_menu(menu, (GaimBlistNode *)buddy);
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1106 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
9925
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1107 G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1108 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1109 G_CALLBACK(pidgin_blist_remove_cb), buddy,
9925
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1110 0, 0, NULL);
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1111 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1112 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1113
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1114 static gboolean
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1115 gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1116 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1117 GValue val;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1118 GtkTreeIter iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1119 GtkTreeSelection *sel;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1120
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1121 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1122 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1123 return FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1124
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1125 val.g_type = 0;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1126 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1127 NODE_COLUMN, &val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1128 node = g_value_get_pointer(&val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1129
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1130 if(event->state & GDK_CONTROL_MASK &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1131 (event->keyval == 'o' || event->keyval == 'O')) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1132 GaimBuddy *buddy;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1133
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1134 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1135 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1136 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1137 buddy = (GaimBuddy*)node;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1138 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1139 return FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1140 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1141 if(buddy)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1142 serv_get_info(buddy->account->gc, buddy->name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1143 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1144
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1145 return FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1146 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1147
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1148 static GtkWidget *
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1149 create_group_menu (GaimBlistNode *node, GaimGroup *g)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1150 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1151 GtkWidget *menu;
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
1152 GtkWidget *item;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1153
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1154 menu = gtk_menu_new();
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1155 pidgin_new_item_from_stock(menu, _("Add a _Buddy"), GTK_STOCK_ADD,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1156 G_CALLBACK(pidgin_blist_add_buddy_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1157 item = pidgin_new_item_from_stock(menu, _("Add a C_hat"), GTK_STOCK_ADD,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1158 G_CALLBACK(pidgin_blist_add_chat_cb), node, 0, 0, NULL);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1159 gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable());
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1160 pidgin_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1161 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1162 pidgin_new_item_from_stock(menu, _("_Rename"), NULL,
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
1163 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1164
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1165 pidgin_append_blist_node_extended_menu(menu, node);
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1166
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1167 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1168 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1169
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1170
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1171 static GtkWidget *
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1172 create_chat_menu(GaimBlistNode *node, GaimChat *c) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1173 GtkWidget *menu;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1174 gboolean autojoin;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1175
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1176 menu = gtk_menu_new();
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1177 autojoin = (gaim_blist_node_get_bool(node, "gtk-autojoin") ||
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1178 (gaim_blist_node_get_string(node, "gtk-autojoin") != NULL));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1179
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1180 pidgin_new_item_from_stock(menu, _("_Join"), PIDGIN_STOCK_CHAT,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1181 G_CALLBACK(gtk_blist_menu_join_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1182 pidgin_new_check_item(menu, _("Auto-Join"),
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1183 G_CALLBACK(gtk_blist_menu_autojoin_cb), node, autojoin);
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1184 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
1185 G_CALLBACK(gtk_blist_menu_showlog_cb), node, 0, 0, NULL);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1186
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1187 pidgin_append_blist_node_proto_menu(menu, c->account->gc, node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1188 pidgin_append_blist_node_extended_menu(menu, node);
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1189
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1190 pidgin_separator(menu);
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1191
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1192 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1193 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1194 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1195 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1196
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1197 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1198 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1199
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1200 static GtkWidget *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1201 create_contact_menu (GaimBlistNode *node)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1202 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1203 GtkWidget *menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1204
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1205 menu = gtk_menu_new();
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1206
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1207 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1208 G_CALLBACK(gtk_blist_menu_showlog_cb),
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1209 node, 0, 0, NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1210
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1211 pidgin_separator(menu);
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1212
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1213 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1214 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1215 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1216 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1217
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1218 pidgin_separator(menu);
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1219
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1220 pidgin_new_item_from_stock(menu, _("_Collapse"), GTK_STOCK_ZOOM_OUT,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1221 G_CALLBACK(pidgin_blist_collapse_contact_cb),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1222 node, 0, 0, NULL);
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1223
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1224 pidgin_append_blist_node_extended_menu(menu, node);
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1225
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1226 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1227 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1228
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1229 static GtkWidget *
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1230 create_buddy_menu(GaimBlistNode *node, GaimBuddy *b) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1231 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1232 GtkWidget *menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1233 GtkWidget *menuitem;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1234 gboolean show_offline = gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies");
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1235
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1236 menu = gtk_menu_new();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1237 pidgin_blist_make_buddy_menu(menu, b, FALSE);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1238
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1239 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1240 pidgin_separator(menu);
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1241
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1242 if(gtknode->contact_expanded) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1243 pidgin_new_item_from_stock(menu, _("_Collapse"),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1244 GTK_STOCK_ZOOM_OUT,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1245 G_CALLBACK(pidgin_blist_collapse_contact_cb),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1246 node, 0, 0, NULL);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1247 } else {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1248 pidgin_new_item_from_stock(menu, _("_Expand"),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1249 GTK_STOCK_ZOOM_IN,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1250 G_CALLBACK(pidgin_blist_expand_contact_cb), node,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1251 0, 0, NULL);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1252 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1253 if(node->child->next) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1254 GaimBlistNode *bnode;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1255
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1256 for(bnode = node->child; bnode; bnode = bnode->next) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1257 GaimBuddy *buddy = (GaimBuddy*)bnode;
9340
d9a87f3abbdf [gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9337
diff changeset
1258 GdkPixbuf *buf;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1259 GtkWidget *submenu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1260 GtkWidget *image;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1261
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1262 if(buddy == b)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1263 continue;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1264 if(!buddy->account->gc)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1265 continue;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1266 if(!show_offline && !GAIM_BUDDY_IS_ONLINE(buddy))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1267 continue;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1268
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1269 menuitem = gtk_image_menu_item_new_with_label(buddy->name);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1270 buf = pidgin_create_prpl_icon(buddy->account,PIDGIN_PRPL_ICON_SMALL);
9340
d9a87f3abbdf [gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9337
diff changeset
1271 image = gtk_image_new_from_pixbuf(buf);
d9a87f3abbdf [gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9337
diff changeset
1272 g_object_unref(G_OBJECT(buf));
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1273 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1274 image);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1275 gtk_widget_show(image);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1276 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1277 gtk_widget_show(menuitem);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1278
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1279 submenu = gtk_menu_new();
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1280 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1281 gtk_widget_show(submenu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1282
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1283 pidgin_blist_make_buddy_menu(submenu, buddy, TRUE);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1284 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1285 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1286 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1287 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1288 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1289
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1290 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1291 pidgin_blist_show_context_menu(GaimBlistNode *node,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1292 GtkMenuPositionFunc func,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1293 GtkWidget *tv,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1294 guint button,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1295 guint32 time)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1296 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1297 struct _pidgin_blist_node *gtknode;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1298 GtkWidget *menu = NULL;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1299 gboolean handled = FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1300
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1301 gtknode = (struct _pidgin_blist_node *)node->ui_data;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1302
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1303 /* Create a menu based on the thing we right-clicked on */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1304 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1305 GaimGroup *g = (GaimGroup *)node;
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1306
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1307 menu = create_group_menu(node, g);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1308 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1309 GaimChat *c = (GaimChat *)node;
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1310
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1311 menu = create_chat_menu(node, c);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1312 } else if ((GAIM_BLIST_NODE_IS_CONTACT(node)) && (gtknode->contact_expanded)) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1313 menu = create_contact_menu(node);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1314 } else if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1315 GaimBuddy *b;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1316
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1317 if (GAIM_BLIST_NODE_IS_CONTACT(node))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1318 b = gaim_contact_get_priority_buddy((GaimContact*)node);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1319 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1320 b = (GaimBuddy *)node;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1321
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1322 menu = create_buddy_menu(node, b);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1323 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1324
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1325 #ifdef _WIN32
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1326 /* Unhook the tooltip-timeout since we don't want a tooltip
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1327 * to appear and obscure the context menu we are about to show
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1328 This is a workaround for GTK+ bug 107320. */
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1329 if (gtkblist->timeout) {
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1330 g_source_remove(gtkblist->timeout);
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1331 gtkblist->timeout = 0;
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1332 }
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1333 #endif
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1334
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1335 /* Now display the menu */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1336 if (menu != NULL) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1337 gtk_widget_show_all(menu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1338 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, func, tv, button, time);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1339 handled = TRUE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1340 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1341
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1342 return handled;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1343 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1344
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1345 static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1346 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1347 GtkTreePath *path;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1348 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1349 GValue val;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1350 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1351 GtkTreeSelection *sel;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1352 GaimPlugin *prpl = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1353 GaimPluginProtocolInfo *prpl_info = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1354 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1355 gboolean handled = FALSE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1356
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1357 /* Here we figure out which node was clicked */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1358 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL))
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1359 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1360 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1361 val.g_type = 0;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1362 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1363 node = g_value_get_pointer(&val);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1364 gtknode = (struct _pidgin_blist_node *)node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1365
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1366 /* Right click draws a context menu */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1367 if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1368 handled = pidgin_blist_show_context_menu(node, NULL, tv, 3, event->time);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1369
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1370 /* CTRL+middle click expands or collapse a contact */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1371 } else if ((event->button == 2) && (event->type == GDK_BUTTON_PRESS) &&
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1372 (event->state & GDK_CONTROL_MASK) && (GAIM_BLIST_NODE_IS_CONTACT(node))) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1373 if (gtknode->contact_expanded)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1374 pidgin_blist_collapse_contact_cb(NULL, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1375 else
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1376 pidgin_blist_expand_contact_cb(NULL, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1377 handled = TRUE;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1378
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1379 /* Double middle click gets info */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1380 } else if ((event->button == 2) && (event->type == GDK_2BUTTON_PRESS) &&
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1381 ((GAIM_BLIST_NODE_IS_CONTACT(node)) || (GAIM_BLIST_NODE_IS_BUDDY(node)))) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1382 GaimBuddy *b;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1383 if(GAIM_BLIST_NODE_IS_CONTACT(node))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1384 b = gaim_contact_get_priority_buddy((GaimContact*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1385 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1386 b = (GaimBuddy *)node;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1387
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
1388 prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1389 if (prpl != NULL)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1390 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1391
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1392 if (prpl && prpl_info->get_info)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1393 serv_get_info(b->account->gc, b->name);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1394 handled = TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1395 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1396
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1397 #if (1)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1398 /*
10814
7e17cb56b019 [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10780
diff changeset
1399 * This code only exists because GTK+ doesn't work. If we return
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1400 * FALSE here, as would be normal the event propoagates down and
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1401 * somehow gets interpreted as the start of a drag event.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1402 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1403 * Um, isn't it _normal_ to return TRUE here? Since the event
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1404 * was handled? --Mark
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1405 */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1406 if(handled) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1407 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1408 gtk_tree_selection_select_path(sel, path);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1409 gtk_tree_path_free(path);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1410 return TRUE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1411 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1412 #endif
7753
f3f9394afe6d [gaim-migrate @ 8398]
Ethan Blanton <elb@pidgin.im>
parents: 7737
diff changeset
1413 gtk_tree_path_free(path);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1414
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1415 return FALSE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1416 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1417
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1418 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1419 pidgin_blist_popup_menu_cb(GtkWidget *tv, void *user_data)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1420 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1421 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1422 GValue val;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1423 GtkTreeIter iter;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1424 GtkTreeSelection *sel;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1425 gboolean handled = FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1426
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1427 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1428 if (!gtk_tree_selection_get_selected(sel, NULL, &iter))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1429 return FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1430
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1431 val.g_type = 0;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1432 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel),
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1433 &iter, NODE_COLUMN, &val);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1434 node = g_value_get_pointer(&val);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1435
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1436 /* Shift+F10 draws a context menu */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1437 handled = pidgin_blist_show_context_menu(node, pidgin_treeview_popup_menu_position_func, tv, 0, GDK_CURRENT_TIME);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1438
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1439 return handled;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1440 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1441
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1442 static void pidgin_blist_buddy_details_cb(gpointer data, guint action, GtkWidget *item)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1443 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1444 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1445
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
1446 gaim_prefs_set_bool("/gaim/gtk/blist/show_buddy_icons",
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
1447 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1448
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1449 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1450 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1451
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1452 static void pidgin_blist_show_idle_time_cb(gpointer data, guint action, GtkWidget *item)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1453 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1454 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1455
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1456 gaim_prefs_set_bool("/gaim/gtk/blist/show_idle_time",
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1457 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1458
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1459 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1460 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1461
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1462 static void pidgin_blist_show_empty_groups_cb(gpointer data, guint action, GtkWidget *item)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1463 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1464 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1465
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1466 gaim_prefs_set_bool("/gaim/gtk/blist/show_empty_groups",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1467 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1468
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1469 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1470 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1471
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1472 static void pidgin_blist_edit_mode_cb(gpointer callback_data, guint callback_action,
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1473 GtkWidget *checkitem)
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1474 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1475 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1476
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1477 gaim_prefs_set_bool("/gaim/gtk/blist/show_offline_buddies",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1478 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem)));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1479
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1480 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1481 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1482
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1483 static void pidgin_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item)
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1484 {
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1485 gaim_prefs_set_bool("/gaim/gtk/sound/mute", GTK_CHECK_MENU_ITEM(item)->active);
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1486 }
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1487
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1488 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1489 pidgin_blist_mute_pref_cb(const char *name, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1490 gconstpointer value, gpointer data)
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1491 {
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1492 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(gtkblist->ift,
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1493 N_("/Tools/Mute Sounds"))), (gboolean)GPOINTER_TO_INT(value));
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1494 }
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1495
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1496 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1497 pidgin_blist_sound_method_pref_cb(const char *name, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1498 gconstpointer value, gpointer data)
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1499 {
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1500 gboolean sensitive = TRUE;
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1501
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1502 if(!strcmp(value, "none"))
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1503 sensitive = FALSE;
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1504
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1505 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), sensitive);
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1506 }
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1507
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1508 static void
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1509 add_buddies_from_vcard(const char *prpl_id, GaimGroup *group, GList *list,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1510 const char *alias)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1511 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1512 GList *l;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1513 GaimAccount *account = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1514 GaimConnection *gc;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1515
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1516 if (list == NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1517 return;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1518
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1519 for (l = gaim_connections_get_all(); l != NULL; l = l->next)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1520 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1521 gc = (GaimConnection *)l->data;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1522 account = gaim_connection_get_account(gc);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1523
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1524 if (!strcmp(gaim_account_get_protocol_id(account), prpl_id))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1525 break;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1526
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1527 account = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1528 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1529
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1530 if (account != NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1531 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1532 for (l = list; l != NULL; l = l->next)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1533 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1534 gaim_blist_request_add_buddy(account, l->data,
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1535 (group ? group->name : NULL),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1536 alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1537 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1538 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1539
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1540 g_list_foreach(list, (GFunc)g_free, NULL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1541 g_list_free(list);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1542 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1543
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1544 static gboolean
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1545 parse_vcard(const char *vcard, GaimGroup *group)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1546 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1547 char *temp_vcard;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1548 char *s, *c;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1549 char *alias = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1550 GList *aims = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1551 GList *icqs = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1552 GList *yahoos = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1553 GList *msns = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1554 GList *jabbers = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1555
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1556 s = temp_vcard = g_strdup(vcard);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1557
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1558 while (*s != '\0' && strncmp(s, "END:vCard", strlen("END:vCard")))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1559 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1560 char *field, *value;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1561
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1562 field = s;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1563
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1564 /* Grab the field */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1565 while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ':')
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1566 s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1567
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1568 if (*s == '\r') s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1569 if (*s == '\n')
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1570 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1571 s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1572 continue;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1573 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1574
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1575 if (*s != '\0') *s++ = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1576
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1577 if ((c = strchr(field, ';')) != NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1578 *c = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1579
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1580 /* Proceed to the end of the line */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1581 value = s;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1582
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1583 while (*s != '\r' && *s != '\n' && *s != '\0')
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1584 s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1585
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1586 if (*s == '\r') *s++ = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1587 if (*s == '\n') *s++ = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1588
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1589 /* We only want to worry about a few fields here. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1590 if (!strcmp(field, "FN"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1591 alias = g_strdup(value);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1592 else if (!strcmp(field, "X-AIM") || !strcmp(field, "X-ICQ") ||
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1593 !strcmp(field, "X-YAHOO") || !strcmp(field, "X-MSN") ||
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1594 !strcmp(field, "X-JABBER"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1595 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1596 char **values = g_strsplit(value, ":", 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1597 char **im;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1598
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1599 for (im = values; *im != NULL; im++)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1600 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1601 if (!strcmp(field, "X-AIM"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1602 aims = g_list_append(aims, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1603 else if (!strcmp(field, "X-ICQ"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1604 icqs = g_list_append(icqs, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1605 else if (!strcmp(field, "X-YAHOO"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1606 yahoos = g_list_append(yahoos, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1607 else if (!strcmp(field, "X-MSN"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1608 msns = g_list_append(msns, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1609 else if (!strcmp(field, "X-JABBER"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1610 jabbers = g_list_append(jabbers, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1611 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1612
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1613 g_strfreev(values);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1614 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1615 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1616
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1617 g_free(temp_vcard);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1618
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1619 if (aims == NULL && icqs == NULL && yahoos == NULL &&
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1620 msns == NULL && jabbers == NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1621 {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1622 g_free(alias);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1623
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1624 return FALSE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1625 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1626
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1627 add_buddies_from_vcard("prpl-oscar", group, aims, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1628 add_buddies_from_vcard("prpl-oscar", group, icqs, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1629 add_buddies_from_vcard("prpl-yahoo", group, yahoos, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1630 add_buddies_from_vcard("prpl-msn", group, msns, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1631 add_buddies_from_vcard("prpl-jabber", group, jabbers, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1632
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1633 g_free(alias);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1634
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1635 return TRUE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1636 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1637
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1638 #ifdef _WIN32
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1639 static void pidgin_blist_drag_begin(GtkWidget *widget,
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1640 GdkDragContext *drag_context, gpointer user_data)
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1641 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1642 pidgin_blist_tooltip_destroy();
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1643
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1644
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1645 /* Unhook the tooltip-timeout since we don't want a tooltip
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1646 * to appear and obscure the dragging operation.
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1647 * This is a workaround for GTK+ bug 107320. */
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1648 if (gtkblist->timeout) {
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1649 g_source_remove(gtkblist->timeout);
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1650 gtkblist->timeout = 0;
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1651 }
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1652 }
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1653 #endif
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1654
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1655 static void pidgin_blist_drag_data_get_cb(GtkWidget *widget,
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1656 GdkDragContext *dc,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1657 GtkSelectionData *data,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1658 guint info,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1659 guint time,
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1660 gpointer null)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661 {
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1662
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1663 if (data->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1664 {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1665 GtkTreeRowReference *ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row");
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1666 GtkTreePath *sourcerow = gtk_tree_row_reference_get_path(ref);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1667 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1668 GaimBlistNode *node = NULL;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1669 GValue val;
5273
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1670 if(!sourcerow)
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1671 return;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, sourcerow);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1673 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1674 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1675 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1676 gtk_selection_data_set (data,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1677 gdk_atom_intern ("GAIM_BLIST_NODE", FALSE),
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1678 8, /* bits */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1679 (void*)&node,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 sizeof (node));
5273
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1681
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1682 gtk_tree_path_free(sourcerow);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1684 else if (data->target == gdk_atom_intern("application/x-im-contact", FALSE))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1685 {
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1686 GtkTreeRowReference *ref;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1687 GtkTreePath *sourcerow;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1688 GtkTreeIter iter;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1689 GaimBlistNode *node = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1690 GaimBuddy *buddy;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1691 GaimConnection *gc;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1692 GValue val;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1693 GString *str;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1694 const char *protocol;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1695
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1696 ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row");
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1697 sourcerow = gtk_tree_row_reference_get_path(ref);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1698
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1699 if (!sourcerow)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1700 return;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1701
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1702 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1703 sourcerow);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1704 val.g_type = 0;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1705 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1706 NODE_COLUMN, &val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1707
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1708 node = g_value_get_pointer(&val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1709
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1710 if (GAIM_BLIST_NODE_IS_CONTACT(node))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1711 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1712 buddy = gaim_contact_get_priority_buddy((GaimContact *)node);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1713 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1714 else if (!GAIM_BLIST_NODE_IS_BUDDY(node))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1715 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1716 gtk_tree_path_free(sourcerow);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1717 return;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1718 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1719 else
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1720 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1721 buddy = (GaimBuddy *)node;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1722 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1723
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1724 gc = gaim_account_get_connection(buddy->account);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1725
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1726 if (gc == NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1727 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1728 gtk_tree_path_free(sourcerow);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1729 return;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1730 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1731
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1732 protocol =
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1733 GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->list_icon(buddy->account,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1734 buddy);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1735
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1736 str = g_string_new(NULL);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1737 g_string_printf(str,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1738 "MIME-Version: 1.0\r\n"
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1739 "Content-Type: application/x-im-contact\r\n"
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1740 "X-IM-Protocol: %s\r\n"
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1741 "X-IM-Username: %s\r\n",
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1742 protocol,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1743 buddy->name);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1744
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1745 if (buddy->alias != NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1746 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1747 g_string_append_printf(str,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1748 "X-IM-Alias: %s\r\n",
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1749 buddy->alias);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1750 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1751
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
1752 g_string_append(str, "\r\n");
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1753
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1754 gtk_selection_data_set(data,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1755 gdk_atom_intern("application/x-im-contact", FALSE),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1756 8, /* bits */
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1757 (const guchar *)str->str,
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1758 strlen(str->str) + 1);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1759
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1760 g_string_free(str, TRUE);
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1761 gtk_tree_path_free(sourcerow);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1762 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1763 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1764
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1765 static void pidgin_blist_drag_data_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 GtkSelectionData *sd, guint info, guint t)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1767 {
13834
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1768 if (gtkblist->drag_timeout) {
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1769 g_source_remove(gtkblist->drag_timeout);
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1770 gtkblist->drag_timeout = 0;
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1771 }
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1772
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE) && sd->data) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 GaimBlistNode *n = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775 GtkTreePath *path = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776 GtkTreeViewDropPosition position;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777 memcpy(&n, sd->data, sizeof(n));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778 if(gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), x, y, &path, &position)) {
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1779 /* if we're here, I think it means the drop is ok */
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7636
diff changeset
1780 GtkTreeIter iter;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1782 GValue val;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1783 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1784
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1785 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1786 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1787 val.g_type = 0;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1788 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1789 &iter, NODE_COLUMN, &val);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790 node = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1791 gtknode = node->ui_data;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1792
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1793 if (GAIM_BLIST_NODE_IS_CONTACT(n)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1794 GaimContact *c = (GaimContact*)n;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1795 if (GAIM_BLIST_NODE_IS_CONTACT(node) && gtknode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1796 gaim_blist_merge_contact(c, node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1797 } else if (GAIM_BLIST_NODE_IS_CONTACT(node) ||
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1798 GAIM_BLIST_NODE_IS_CHAT(node)) {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 switch(position) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 case GTK_TREE_VIEW_DROP_AFTER:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1802 gaim_blist_add_contact(c, (GaimGroup*)node->parent,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1803 node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1804 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1805 case GTK_TREE_VIEW_DROP_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1806 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1807 gaim_blist_add_contact(c, (GaimGroup*)node->parent,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1808 node->prev);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1809 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1810 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1811 } else if(GAIM_BLIST_NODE_IS_GROUP(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1812 gaim_blist_add_contact(c, (GaimGroup*)node, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1813 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1814 gaim_blist_merge_contact(c, node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1815 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1816 } else if (GAIM_BLIST_NODE_IS_BUDDY(n)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1817 GaimBuddy *b = (GaimBuddy*)n;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1818 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1819 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1820 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1821 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1822 gaim_blist_add_buddy(b, (GaimContact*)node->parent,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1823 (GaimGroup*)node->parent->parent, node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1824 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1825 case GTK_TREE_VIEW_DROP_BEFORE:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1827 gaim_blist_add_buddy(b, (GaimContact*)node->parent,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1828 (GaimGroup*)node->parent->parent,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1829 node->prev);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1831 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1832 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1833 gaim_blist_add_buddy(b, NULL, (GaimGroup*)node->parent,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1834 NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1835 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1836 gaim_blist_add_buddy(b, NULL, (GaimGroup*)node, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1837 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1838 if(gtknode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1839 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1840 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1841 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1842 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1843 gaim_blist_add_buddy(b, (GaimContact*)node,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1844 (GaimGroup*)node->parent, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1845 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1846 case GTK_TREE_VIEW_DROP_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1847 gaim_blist_add_buddy(b, NULL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1848 (GaimGroup*)node->parent, node->prev);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1849 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1850 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1851 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1852 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1853 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1854 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1855 gaim_blist_add_buddy(b, NULL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1856 (GaimGroup*)node->parent, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1857 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1858 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1859 case GTK_TREE_VIEW_DROP_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1860 gaim_blist_add_buddy(b, NULL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1861 (GaimGroup*)node->parent, node->prev);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1862 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1863 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1864 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1866 } else if (GAIM_BLIST_NODE_IS_CHAT(n)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1867 GaimChat *chat = (GaimChat *)n;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1868 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1869 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1870 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1871 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1872 case GTK_TREE_VIEW_DROP_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1873 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1874 gaim_blist_add_chat(chat,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1875 (GaimGroup*)node->parent->parent,
13543
25f9c386270c [gaim-migrate @ 15919]
Daniel Atallah <datallah@pidgin.im>
parents: 13541
diff changeset
1876 node->parent);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1877 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1878 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1879 } else if(GAIM_BLIST_NODE_IS_CONTACT(node) ||
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1880 GAIM_BLIST_NODE_IS_CHAT(node)) {
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1881 switch(position) {
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1882 case GTK_TREE_VIEW_DROP_AFTER:
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1883 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1884 gaim_blist_add_chat(chat, (GaimGroup*)node->parent, node);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1885 break;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1886 case GTK_TREE_VIEW_DROP_BEFORE:
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1887 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1888 gaim_blist_add_chat(chat, (GaimGroup*)node->parent, node->prev);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1889 break;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1890 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1891 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1892 gaim_blist_add_chat(chat, (GaimGroup*)node, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1893 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1894 } else if (GAIM_BLIST_NODE_IS_GROUP(n)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1895 GaimGroup *g = (GaimGroup*)n;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1896 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1897 switch (position) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1898 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1899 case GTK_TREE_VIEW_DROP_AFTER:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1900 gaim_blist_add_group(g, node);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1901 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1902 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1903 case GTK_TREE_VIEW_DROP_BEFORE:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1904 gaim_blist_add_group(g, node->prev);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1905 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1906 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1907 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1908 gaim_blist_add_group(g, node->parent->parent);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1909 } else if(GAIM_BLIST_NODE_IS_CONTACT(node) ||
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1910 GAIM_BLIST_NODE_IS_CHAT(node)) {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1911 gaim_blist_add_group(g, node->parent);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1912 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1913 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1914
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1915 gtk_tree_path_free(path);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1916 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1917 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1918 }
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1919 else if (sd->target == gdk_atom_intern("application/x-im-contact",
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1920 FALSE) && sd->data)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1921 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1922 GaimGroup *group = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1923 GtkTreePath *path = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1924 GtkTreeViewDropPosition position;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7706
diff changeset
1925 GaimAccount *account;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1926 char *protocol = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1927 char *username = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1928 char *alias = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1929
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1930 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1931 x, y, &path, &position))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1932 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1933 GtkTreeIter iter;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1934 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1935 GValue val;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1936
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1937 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1938 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1939 val.g_type = 0;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1940 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1941 &iter, NODE_COLUMN, &val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1942 node = g_value_get_pointer(&val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1943
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1944 if (GAIM_BLIST_NODE_IS_BUDDY(node))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1945 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1946 group = (GaimGroup *)node->parent->parent;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1947 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1948 else if (GAIM_BLIST_NODE_IS_CHAT(node) ||
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1949 GAIM_BLIST_NODE_IS_CONTACT(node))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1950 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1951 group = (GaimGroup *)node->parent;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1952 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1953 else if (GAIM_BLIST_NODE_IS_GROUP(node))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1954 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1955 group = (GaimGroup *)node;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1956 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1957 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1958
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1959 if (pidgin_parse_x_im_contact((const char *)sd->data, FALSE, &account,
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7706
diff changeset
1960 &protocol, &username, &alias))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1961 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1962 if (account == NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1963 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1964 gaim_notify_error(NULL, NULL,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1965 _("You are not currently signed on with an account that "
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1966 "can add that buddy."), NULL);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1967 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1968 else
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1969 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1970 gaim_blist_request_add_buddy(account, username,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1971 (group ? group->name : NULL),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1972 alias);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1973 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1974 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1975
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1976 g_free(username);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1977 g_free(protocol);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1978 g_free(alias);
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1979
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1980 if (path != NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1981 gtk_tree_path_free(path);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1982
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1983 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1984 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1985 else if (sd->target == gdk_atom_intern("text/x-vcard", FALSE) && sd->data)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1986 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1987 gboolean result;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1988 GaimGroup *group = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1989 GtkTreePath *path = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1990 GtkTreeViewDropPosition position;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1991
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1992 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1993 x, y, &path, &position))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1994 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1995 GtkTreeIter iter;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1996 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1997 GValue val;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1998
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1999 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2000 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2001 val.g_type = 0;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2002 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2003 &iter, NODE_COLUMN, &val);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2004 node = g_value_get_pointer(&val);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2005
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2006 if (GAIM_BLIST_NODE_IS_BUDDY(node))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2007 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2008 group = (GaimGroup *)node->parent->parent;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2009 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2010 else if (GAIM_BLIST_NODE_IS_CHAT(node) ||
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2011 GAIM_BLIST_NODE_IS_CONTACT(node))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2012 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2013 group = (GaimGroup *)node->parent;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2014 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2015 else if (GAIM_BLIST_NODE_IS_GROUP(node))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2016 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2017 group = (GaimGroup *)node;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2018 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2019 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2020
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11134
diff changeset
2021 result = parse_vcard((const gchar *)sd->data, group);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2022
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2023 gtk_drag_finish(dc, result, (dc->action == GDK_ACTION_MOVE), t);
9525
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9498
diff changeset
2024 } else if (sd->target == gdk_atom_intern("text/uri-list", FALSE) && sd->data) {
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2025 GtkTreePath *path = NULL;
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2026 GtkTreeViewDropPosition position;
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2027
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2028 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
2029 x, y, &path, &position))
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2030 {
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2031 GtkTreeIter iter;
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2032 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2033 GValue val;
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2034
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2035 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2036 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2037 val.g_type = 0;
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2038 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2039 &iter, NODE_COLUMN, &val);
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2040 node = g_value_get_pointer(&val);
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2041
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2042 if (GAIM_BLIST_NODE_IS_BUDDY(node) || GAIM_BLIST_NODE_IS_CONTACT(node)) {
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2043 GaimBuddy *b = GAIM_BLIST_NODE_IS_BUDDY(node) ? (GaimBuddy*)node : gaim_contact_get_priority_buddy((GaimContact*)node);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
2044 pidgin_dnd_file_manage(sd, b->account, b->name);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10222
diff changeset
2045 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10222
diff changeset
2046 } else {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10222
diff changeset
2047 gtk_drag_finish(dc, FALSE, FALSE, t);
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2048 }
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2049 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2050 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2051 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2052
15552
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2053 /* Altered from do_colorshift in gnome-panel */
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2054 static void
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2055 do_alphashift (GdkPixbuf *dest, GdkPixbuf *src, int shift)
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2056 {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2057 gint i, j;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2058 gint width, height, has_alpha, srcrowstride, destrowstride;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2059 guchar *target_pixels;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2060 guchar *original_pixels;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2061 guchar *pixsrc;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2062 guchar *pixdest;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2063 int val;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2064 guchar a;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2065
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2066 has_alpha = gdk_pixbuf_get_has_alpha (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2067 if (!has_alpha)
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2068 return;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2069
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2070 width = gdk_pixbuf_get_width (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2071 height = gdk_pixbuf_get_height (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2072 srcrowstride = gdk_pixbuf_get_rowstride (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2073 destrowstride = gdk_pixbuf_get_rowstride (dest);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2074 target_pixels = gdk_pixbuf_get_pixels (dest);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2075 original_pixels = gdk_pixbuf_get_pixels (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2076
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2077 for (i = 0; i < height; i++) {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2078 pixdest = target_pixels + i*destrowstride;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2079 pixsrc = original_pixels + i*srcrowstride;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2080 for (j = 0; j < width; j++) {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2081 *(pixdest++) = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2082 *(pixdest++) = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2083 *(pixdest++) = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2084 a = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2085 val = a - shift;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2086 *(pixdest++) = CLAMP(val, 0, 255);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2087 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2088 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2089 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2090
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2091
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2092 static GdkPixbuf *pidgin_blist_get_buddy_icon(GaimBlistNode *node,
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2093 gboolean scaled, gboolean greyed, gboolean custom)
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2094 {
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2095 GdkPixbuf *buf, *ret = NULL;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2096 GdkPixbufLoader *loader;
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2097 GaimBuddyIcon *icon;
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2098 const guchar *data = NULL;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11134
diff changeset
2099 gsize len;
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2100 GaimBuddy *buddy = NULL;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2101 GaimChat *chat = NULL;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2102 GaimAccount *account = NULL;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2103 GaimPluginProtocolInfo *prpl_info = NULL;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2104
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2105 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2106 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2107 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2108 buddy = (GaimBuddy*)node;
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2109 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2110 chat = (GaimChat*)node;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2111 } else {
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2112 return NULL;
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2113 }
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2114
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2115 if(buddy != NULL)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2116 account = gaim_buddy_get_account(buddy);
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2117 else if(chat != NULL)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2118 account = chat->account;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2119
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2120 if(account && account->gc)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2121 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2122
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2123 #if 0
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2124 if (!gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"))
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2125 return NULL;
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2126 #endif
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2127
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2128 if (custom) {
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2129 const char *file = gaim_blist_node_get_string((GaimBlistNode*)gaim_buddy_get_contact(buddy),
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2130 "custom_buddy_icon");
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2131 if (file && *file) {
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2132 char *contents;
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2133 GError *err = NULL;
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2134 if (!g_file_get_contents(file, &contents, &len, &err)) {
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2135 gaim_debug_info("custom -icon", "Could not open custom-icon %s for %s\n",
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2136 file, gaim_buddy_get_name(buddy), err->message);
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2137 g_error_free(err);
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2138 } else
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2139 data = (const guchar*)contents;
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2140 }
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2141 }
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2142
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2143 if (data == NULL) {
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2144 if(buddy != NULL) {
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2145 if (!(icon = gaim_buddy_get_icon(buddy)))
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2146 if (!(icon = gaim_buddy_icons_find(buddy->account, buddy->name))) /* Not sure I like this...*/
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2147 return NULL;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2148 data = gaim_buddy_icon_get_data(icon, &len);
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2149 }
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2150 custom = FALSE; /* We are not using the custom icon */
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2151 }
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2152
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2153 if(data == NULL)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2154 return NULL;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2155
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2156 loader = gdk_pixbuf_loader_new();
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2157 gdk_pixbuf_loader_write(loader, data, len, NULL);
12601
be19ef28e2ce [gaim-migrate @ 14935]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
2158 gdk_pixbuf_loader_close(loader, NULL);
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2159 buf = gdk_pixbuf_loader_get_pixbuf(loader);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2160 if (buf)
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2161 g_object_ref(G_OBJECT(buf));
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2162 g_object_unref(G_OBJECT(loader));
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2163
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2164 if (custom)
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2165 g_free((void*)data);
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2166 if (buf) {
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2167 int orig_width, orig_height;
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2168 int scale_width, scale_height;
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2169
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2170 if (greyed) {
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2171 GaimPresence *presence = gaim_buddy_get_presence(buddy);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2172 if (!GAIM_BUDDY_IS_ONLINE(buddy))
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2173 gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.0, FALSE);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2174 if (gaim_presence_is_idle(presence))
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2175 gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.25, FALSE);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2176 }
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2177
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2178 /* i'd use the pidgin_buddy_icon_get_scale_size() thing,
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2179 * but it won't tell me the original size, which I need for scaling
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2180 * purposes */
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2181 scale_width = orig_width = gdk_pixbuf_get_width(buf);
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2182 scale_height = orig_height = gdk_pixbuf_get_height(buf);
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2183
15284
98e8f9912107 [gaim-migrate @ 18012]
Mark Doliner <markdoliner@pidgin.im>
parents: 15282
diff changeset
2184 if (prpl_info && prpl_info->icon_spec.scale_rules & GAIM_ICON_SCALE_DISPLAY)
98e8f9912107 [gaim-migrate @ 18012]
Mark Doliner <markdoliner@pidgin.im>
parents: 15282
diff changeset
2185 gaim_buddy_icon_get_scale_size(&prpl_info->icon_spec, &scale_width, &scale_height);
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2186
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2187 if (scaled) {
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2188 if(scale_height > scale_width) {
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2189 scale_width = 32.0 * (double)scale_width / (double)scale_height;
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2190 scale_height = 32;
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2191 } else {
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2192 scale_height = 32.0 * (double)scale_height / (double)scale_width;
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2193 scale_width = 32;
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2194 }
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2195
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2196 ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2197 gdk_pixbuf_fill(ret, 0x00000000);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2198 gdk_pixbuf_scale(buf, ret, (32-scale_width)/2, (32-scale_height)/2, scale_width, scale_height, (32-scale_width)/2, (32-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR);
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2199 } else {
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2200 ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR);
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2201 }
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2202 g_object_unref(G_OBJECT(buf));
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2203 }
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2204
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2205 return ret;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2206 }
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2207 /* # - Status Icon
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2208 * P - Protocol Icon
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2209 * A - Buddy Icon
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2210 * [ - SMALL_SPACE
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2211 * = - LARGE_SPACE
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2212 * +--- STATUS_SIZE +--- td->avatar_width
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2213 * | +-- td->name_width |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2214 * +----+ +-------+ +---------+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2215 * | | | | | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2216 * +-------------------------------------------+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2217 * | [ = [ |--- TOOLTIP_BORDER
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2218 *name_height --+-| ######[BuddyName = PP [ AAAAAAAAAAA |--+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2219 * | | ######[ = PP [ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2220 * STATUS SIZE -| | ######[[[[[[[[[[[[[[[[[[[[[ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2221 * +--+-| ######[Account: So-and-so [ AAAAAAAAAAA | |-- td->avatar_height
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2222 * | | [Idle: 4h 15m [ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2223 * height --+ | [Foo: Bar, Baz [ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2224 * | | [Status: Awesome [ AAAAAAAAAAA |--+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2225 * +----| [Stop: Hammer Time [ |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2226 * | [ [ |--- TOOLTIP_BORDER
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2227 * +-------------------------------------------+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2228 * | | | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2229 * | +----------------+ |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2230 * | | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2231 * | +-- td->width |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2232 * | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2233 * +---- TOOLTIP_BORDER +---- TOOLTIP_BORDER
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2234 *
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2235 *
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2236 */
15606
a070ac7366f8 Perhaps a 22px icon is better in the tooltip
Sean Egan <seanegan@pidgin.im>
parents: 15588
diff changeset
2237 #define STATUS_SIZE 22
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2238 #define TOOLTIP_BORDER 12
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2239 #define SMALL_SPACE 6
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2240 #define LARGE_SPACE 12
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2241 #define PRPL_SIZE 16
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2242 struct tooltip_data {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2243 PangoLayout *layout;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2244 PangoLayout *name_layout;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2245 GdkPixbuf *prpl_icon;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2246 GdkPixbuf *status_icon;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2247 GdkPixbuf *avatar;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2248 gboolean avatar_is_prpl_icon;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2249 int avatar_width;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2250 int avatar_height;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2251 int name_height;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2252 int name_width;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2253 int width;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2254 int height;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2255 };
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2256
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2257 static struct tooltip_data * create_tip_for_node(GaimBlistNode *node, gboolean full)
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2258 {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2259 char *tooltip_text = NULL;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2260 struct tooltip_data *td = g_new0(struct tooltip_data, 1);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2261 GaimAccount *account = NULL;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2262 char *tmp, *node_name;
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2263
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2264 if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2265 account = ((GaimBuddy*)(node))->account;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2266 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2267 account = ((GaimChat*)(node))->account;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2268 }
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2269
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2270 td->status_icon = pidgin_blist_get_status_icon(node, PIDGIN_STATUS_ICON_LARGE);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2271 td->avatar = pidgin_blist_get_buddy_icon(node, !full, FALSE, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2272 td->prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2273 tooltip_text = gaim_get_tooltip_text(node, full);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2274 td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2275 td->name_layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2276
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2277 if (GAIM_BLIST_NODE_IS_BUDDY(node))
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2278 tmp = g_markup_escape_text(gaim_buddy_get_name((GaimBuddy*)node), -1);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2279 else
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2280 tmp = g_markup_escape_text(gaim_chat_get_name((GaimChat*)node), -1);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2281 node_name = g_strdup_printf("<span size='x-large' weight='bold'>%s</span>", tmp);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2282
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2283 pango_layout_set_markup(td->layout, tooltip_text, -1);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2284 pango_layout_set_wrap(td->layout, PANGO_WRAP_WORD);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2285 pango_layout_set_width(td->layout, 300000);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2286
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2287 pango_layout_get_size (td->layout, &td->width, &td->height);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2288 td->width = PANGO_PIXELS(td->width);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2289 td->height = PANGO_PIXELS(td->height);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2290
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2291 pango_layout_set_markup(td->name_layout, node_name, -1);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2292 pango_layout_set_wrap(td->name_layout, PANGO_WRAP_WORD);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2293 pango_layout_set_width(td->name_layout, 300000);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2294
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2295 pango_layout_get_size (td->name_layout, &td->name_width, &td->name_height);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2296 td->name_width = PANGO_PIXELS(td->name_width) + SMALL_SPACE + PRPL_SIZE;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2297 td->name_height = MAX(PANGO_PIXELS(td->name_height), PRPL_SIZE + SMALL_SPACE);
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2298 #if 0 /* PRPL Icon as avatar */
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2299 if(!td->avatar && full) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2300 td->avatar = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_LARGE);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2301 td->avatar_is_prpl_icon = TRUE;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2302 }
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2303 #endif
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2304 td->avatar_width = gdk_pixbuf_get_width(td->avatar);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2305 td->avatar_height = gdk_pixbuf_get_height(td->avatar);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2306
15550
d710f85e6d0e A small memory leak in the tooltip.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15546
diff changeset
2307 g_free(node_name);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2308 g_free(tooltip_text);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2309 return td;
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2310 }
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2311
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2312 static void pidgin_blist_paint_tip(GtkWidget *widget, GdkEventExpose *event, GaimBlistNode *node)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2313 {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2314 GtkStyle *style;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2315 int current_height, max_width;
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2316 int max_text_width;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2317 int max_avatar_width;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2318 GList *l;
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2319 int prpl_col = 0;
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2320 GtkTextDirection dir = gtk_widget_get_direction(widget);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2321
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2322 if(gtkblist->tooltipdata == NULL)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2323 return;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2324
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2325 style = gtkblist->tipwindow->style;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2326 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2327 NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2328
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2329 max_text_width = 0;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2330 max_avatar_width = 0;
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2331
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2332 for(l = gtkblist->tooltipdata; l; l = l->next)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2333 {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2334 struct tooltip_data *td = l->data;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2335
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2336 max_text_width = MAX(max_text_width,
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2337 MAX(td->width, td->name_width));
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2338 max_avatar_width = MAX(max_avatar_width, td->avatar_width);
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2339 }
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2340
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2341 max_width = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width + SMALL_SPACE + max_avatar_width + TOOLTIP_BORDER;
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2342 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2343 prpl_col = TOOLTIP_BORDER + max_avatar_width + SMALL_SPACE;
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2344 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2345 prpl_col = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width - PRPL_SIZE;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2346
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2347 current_height = 12;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2348 for(l = gtkblist->tooltipdata; l; l = l->next)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2349 {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2350 struct tooltip_data *td = l->data;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2351
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
2352 if (td->avatar && pidgin_gdk_pixbuf_is_opaque(td->avatar))
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2353 {
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2354 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2355 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2356 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2357 TOOLTIP_BORDER -1, current_height -1, td->avatar_width +2, td->avatar_height + 2);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2358 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2359 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2360 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2361 max_width - (td->avatar_width+ TOOLTIP_BORDER)-1,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2362 current_height-1,td->avatar_width+2, td->avatar_height+2);
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2363 }
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2364
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2365 #if GTK_CHECK_VERSION(2,2,0)
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2366 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2367 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2368 0, 0, max_width - TOOLTIP_BORDER - STATUS_SIZE, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2369 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2370 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2371 0, 0, TOOLTIP_BORDER, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2372 if(td->avatar)
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2373 {
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2374 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2375 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2376 td->avatar, 0, 0, TOOLTIP_BORDER, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2377 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2378 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2379 td->avatar, 0, 0, max_width - (td->avatar_width + TOOLTIP_BORDER),
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2380 current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2381 }
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2382
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2383 if (!td->avatar_is_prpl_icon)
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2384 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->prpl_icon,
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2385 0, 0,
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2386 prpl_col,
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2387 current_height + ((td->name_height / 2) - (PRPL_SIZE / 2)),
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2388 -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2389
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2390 #else
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2391 gdk_pixbuf_render_to_drawable(td->status_icon, GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, 12, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2392 if(td->avatar)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2393 gdk_pixbuf_render_to_drawable(td->avatar,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2394 GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0,
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2395 max_width - (td->avatar_width + TOOLTIP_BORDER),
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2396 current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2397 #endif
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2398 if (dir == GTK_TEXT_DIR_RTL) {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2399 gtk_paint_layout(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2400 NULL, gtkblist->tipwindow, "tooltip",
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2401 max_width -(TOOLTIP_BORDER + STATUS_SIZE +SMALL_SPACE) - PANGO_PIXELS(300000),
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2402 current_height, td->name_layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2403 } else {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2404 gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2405 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2406 TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE, current_height, td->name_layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2407 }
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2408 if (dir != GTK_TEXT_DIR_RTL) {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2409 gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2410 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2411 TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE, current_height + td->name_height, td->layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2412 } else {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2413 gtk_paint_layout(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2414 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2415 max_width - (TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE) - PANGO_PIXELS(300000),
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2416 current_height + td->name_height,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2417 td->layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2418 }
15539
b204042fba24 fix overlapping in tooltips w/ large avatars
Nathan Walp <nwalp@pidgin.im>
parents: 15526
diff changeset
2419
b204042fba24 fix overlapping in tooltips w/ large avatars
Nathan Walp <nwalp@pidgin.im>
parents: 15526
diff changeset
2420 current_height += MAX(td->name_height + td->height, td->avatar_height) + TOOLTIP_BORDER;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2421 }
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2422 }
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2423
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2424
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2425 static void pidgin_blist_tooltip_destroy()
8254
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2426 {
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2427 while(gtkblist->tooltipdata) {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2428 struct tooltip_data *td = gtkblist->tooltipdata->data;
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2429
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2430 if(td->avatar)
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2431 g_object_unref(td->avatar);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2432 if(td->status_icon)
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2433 g_object_unref(td->status_icon);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2434 if(td->prpl_icon)
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2435 g_object_unref(td->prpl_icon);
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2436 g_object_unref(td->layout);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2437 g_object_unref(td->name_layout);
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2438 g_free(td);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2439 gtkblist->tooltipdata = g_list_delete_link(gtkblist->tooltipdata, gtkblist->tooltipdata);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2440 }
11636
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2441
8254
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2442 if (gtkblist->tipwindow == NULL)
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2443 return;
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2444
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2445 gtk_widget_destroy(gtkblist->tipwindow);
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2446 gtkblist->tipwindow = NULL;
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2447 }
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2448
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2449 static gboolean pidgin_blist_expand_timeout(GtkWidget *tv)
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2450 {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2451 GtkTreePath *path;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2452 GtkTreeIter iter;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2453 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2454 GValue val;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2455 struct _pidgin_blist_node *gtknode;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2456
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2457 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2458 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2459 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2460 val.g_type = 0;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2461 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2462 node = g_value_get_pointer(&val);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2463
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2464 if(!GAIM_BLIST_NODE_IS_CONTACT(node)) {
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2465 gtk_tree_path_free(path);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2466 return FALSE;
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2467 }
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2468
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2469 gtknode = node->ui_data;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2470
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2471 if (!gtknode->contact_expanded) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2472 GtkTreeIter i;
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2473
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2474 pidgin_blist_expand_contact_cb(NULL, node);
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2475
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2476 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->contact_rect);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2477 gdk_drawable_get_size(GDK_DRAWABLE(tv->window), &(gtkblist->contact_rect.width), NULL);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2478 gtkblist->mouseover_contact = node;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2479 gtk_tree_path_down (path);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2480 while (gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &i, path)) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2481 GdkRectangle rect;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2482 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2483 gtkblist->contact_rect.height += rect.height;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2484 gtk_tree_path_next(path);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2485 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2486 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2487 gtk_tree_path_free(path);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2488 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2489 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2490
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2491 static gboolean buddy_is_displayable(GaimBuddy *buddy)
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2492 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2493 struct _pidgin_blist_node *gtknode;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2494
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2495 if(!buddy)
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2496 return FALSE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2497
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2498 gtknode = ((GaimBlistNode*)buddy)->ui_data;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2499
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2500 return (gaim_account_is_connected(buddy->account) &&
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2501 (gaim_presence_is_online(buddy->presence) ||
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2502 (gtknode && gtknode->recent_signonoff) ||
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2503 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies") ||
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2504 gaim_blist_node_get_bool((GaimBlistNode*)buddy, "show_offline")));
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2505 }
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2506
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2507 static gboolean pidgin_blist_tooltip_timeout(GtkWidget *tv)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2508 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2509 GtkTreePath *path;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2510 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2511 GaimBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2512 GValue val;
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2513 int scr_w, scr_h, w, h, x, y;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2514 #if GTK_CHECK_VERSION(2,2,0)
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2515 int mon_num;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2516 GdkScreen *screen = NULL;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2517 #endif
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2518 gboolean tooltip_top = FALSE;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2519 struct _pidgin_blist_node *gtknode;
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2520 GdkRectangle mon_size;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2521
11636
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2522 /*
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2523 * Attempt to free the previous tooltip. I have a feeling
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2524 * this is never needed... but just in case.
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2525 */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2526 pidgin_blist_tooltip_destroy();
11636
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2527
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2528 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2529 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2530 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2531 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2532 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2533 node = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2534
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2535 gtk_tree_path_free(path);
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2536
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2537 gtkblist->tipwindow = gtk_window_new(GTK_WINDOW_POPUP);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2538
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2539 if(GAIM_BLIST_NODE_IS_CHAT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) {
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2540 struct tooltip_data *td = create_tip_for_node(node, TRUE);
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2541 gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td);
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2542 w = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE +
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2543 MAX(td->width, td->name_width) + SMALL_SPACE + td->avatar_width + TOOLTIP_BORDER;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2544 h = TOOLTIP_BORDER + MAX(td->height + td->name_height, MAX(STATUS_SIZE, td->avatar_height))
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2545 + TOOLTIP_BORDER;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2546 } else if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2547 GaimBlistNode *child;
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2548 GaimBuddy *b = gaim_contact_get_priority_buddy((GaimContact *)node);
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2549 int max_text_width = 0;
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2550 int max_avatar_width = 0;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2551 w = h = 0;
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2552
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2553 for(child = node->child; child; child = child->next)
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2554 {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2555 if(GAIM_BLIST_NODE_IS_BUDDY(child) && buddy_is_displayable((GaimBuddy*)child)) {
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2556 struct tooltip_data *td = create_tip_for_node(child, (b == (GaimBuddy*)child));
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2557 if (b == (GaimBuddy *)child) {
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2558 gtkblist->tooltipdata = g_list_prepend(gtkblist->tooltipdata, td);
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2559 } else {
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2560 gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td);
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2561 }
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2562 max_text_width = MAX(max_text_width, MAX(td->width, td->name_width));
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2563 max_avatar_width = MAX(max_avatar_width, td->avatar_width);
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2564 h += MAX(TOOLTIP_BORDER + MAX(STATUS_SIZE,td->avatar_height) + TOOLTIP_BORDER,
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2565 TOOLTIP_BORDER + td->height + td->name_height + TOOLTIP_BORDER);
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2566 }
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2567 }
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2568 w = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width + SMALL_SPACE + max_avatar_width + TOOLTIP_BORDER;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2569 } else {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2570 gtk_widget_destroy(gtkblist->tipwindow);
11892
88eba6864684 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2571 gtkblist->tipwindow = NULL;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2572 return FALSE;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2573 }
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2574
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2575 if (gtkblist->tooltipdata == NULL) {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2576 gtk_widget_destroy(gtkblist->tipwindow);
11892
88eba6864684 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2577 gtkblist->tipwindow = NULL;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2578 return FALSE;
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2579 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2580
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2581 gtknode = node->ui_data;
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2582
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2583 gtk_widget_set_app_paintable(gtkblist->tipwindow, TRUE);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2584 gtk_window_set_resizable(GTK_WINDOW(gtkblist->tipwindow), FALSE);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2585 gtk_widget_set_name(gtkblist->tipwindow, "gtk-tooltips");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2586 g_signal_connect(G_OBJECT(gtkblist->tipwindow), "expose_event",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2587 G_CALLBACK(pidgin_blist_paint_tip), NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2588 gtk_widget_ensure_style (gtkblist->tipwindow);
7837
edc688e327dc [gaim-migrate @ 8490]
Nathan Walp <nwalp@pidgin.im>
parents: 7811
diff changeset
2589
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2590
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2591 #if GTK_CHECK_VERSION(2,2,0)
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2592 gdk_display_get_pointer(gdk_display_get_default(), &screen, &x, &y, NULL);
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2593 mon_num = gdk_screen_get_monitor_at_point(screen, x, y);
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2594 gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size);
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2595
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2596 scr_w = mon_size.width + mon_size.x;
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2597 scr_h = mon_size.height + mon_size.y;
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2598 #else
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2599 scr_w = gdk_screen_width();
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2600 scr_h = gdk_screen_height();
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2601 gdk_window_get_pointer(NULL, &x, &y, NULL);
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2602 mon_size.x = 0;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2603 mon_size.y = 0;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2604 #endif
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2605
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2606 #if GTK_CHECK_VERSION(2,2,0)
10046
7e9175ee9b63 [gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents: 10036
diff changeset
2607 if (w > mon_size.width)
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2608 w = mon_size.width - 10;
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2609
10046
7e9175ee9b63 [gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents: 10036
diff changeset
2610 if (h > mon_size.height)
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2611 h = mon_size.height - 10;
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2612 #endif
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2613
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2614 if (GTK_WIDGET_NO_WINDOW(gtkblist->window))
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2615 y+=gtkblist->window->allocation.y;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2616
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2617 x -= ((w >> 1) + 4);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2618
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2619 if ((y + h + 4) > scr_h || tooltip_top)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2620 y = y - h - 5;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2621 else
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2622 y = y + 6;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2623
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2624 if (y < mon_size.y)
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2625 y = mon_size.y;
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2626
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2627 if (y != mon_size.y) {
7719
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2628 if ((x + w) > scr_w)
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2629 x -= (x + w + 5) - scr_w;
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2630 else if (x < mon_size.x)
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2631 x = mon_size.x;
7719
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2632 } else {
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2633 x -= (w / 2 + 10);
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2634 if (x < mon_size.x)
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2635 x = mon_size.x;
7719
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2636 }
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2637
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2638 gtk_widget_set_size_request(gtkblist->tipwindow, w, h);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2639 gtk_window_move(GTK_WINDOW(gtkblist->tipwindow), x, y);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2640 gtk_widget_show(gtkblist->tipwindow);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2641
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2642 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2643 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2644
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2645 static gboolean pidgin_blist_drag_motion_cb(GtkWidget *tv, GdkDragContext *drag_context,
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2646 gint x, gint y, guint time, gpointer user_data)
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2647 {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2648 GtkTreePath *path;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2649 int delay;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2650
12679
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2651 /*
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2652 * When dragging a buddy into a contact, this is the delay before
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2653 * the contact auto-expands.
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2654 */
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2655 delay = 900;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2656
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2657 if (gtkblist->drag_timeout) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2658 if ((y > gtkblist->tip_rect.y) && ((y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y))
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2659 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2660 /* We've left the cell. Remove the timeout and create a new one below */
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2661 g_source_remove(gtkblist->drag_timeout);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2662 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2663
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2664 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), x, y, &path, NULL, NULL, NULL);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2665 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->tip_rect);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2666
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2667 if (path)
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2668 gtk_tree_path_free(path);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2669 gtkblist->drag_timeout = g_timeout_add(delay, (GSourceFunc)pidgin_blist_expand_timeout, tv);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2670
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2671 if (gtkblist->mouseover_contact) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2672 if ((y < gtkblist->contact_rect.y) || ((y - gtkblist->contact_rect.height) > gtkblist->contact_rect.y)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2673 pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2674 gtkblist->mouseover_contact = NULL;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2675 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2676 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2677
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2678 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2679 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2680
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2681 static gboolean pidgin_blist_motion_cb (GtkWidget *tv, GdkEventMotion *event, gpointer null)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2682 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2683 GtkTreePath *path;
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2684 int delay;
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2685
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2686 delay = gaim_prefs_get_int("/gaim/gtk/blist/tooltip_delay");
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2687
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2688 if (delay == 0)
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2689 return FALSE;
8083
312f60085554 [gaim-migrate @ 8782]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
2690
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2691 if (gtkblist->timeout) {
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2692 if ((event->y > gtkblist->tip_rect.y) && ((event->y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2693 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2694 /* We've left the cell. Remove the timeout and create a new one below */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2695 pidgin_blist_tooltip_destroy();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2696 g_source_remove(gtkblist->timeout);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2697 }
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2698
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2699 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2700 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->tip_rect);
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2701
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2702 if (path)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2703 gtk_tree_path_free(path);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2704 gtkblist->timeout = g_timeout_add(delay, (GSourceFunc)pidgin_blist_tooltip_timeout, tv);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2705
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2706 if (gtkblist->mouseover_contact) {
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2707 if ((event->y < gtkblist->contact_rect.y) || ((event->y - gtkblist->contact_rect.height) > gtkblist->contact_rect.y)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2708 pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2709 gtkblist->mouseover_contact = NULL;
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2710 }
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2711 }
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2712
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2713 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2714 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2715
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2716 static void pidgin_blist_leave_cb (GtkWidget *w, GdkEventCrossing *e, gpointer n)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2717 {
8083
312f60085554 [gaim-migrate @ 8782]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
2718
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2719 if (gtkblist->timeout) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2720 g_source_remove(gtkblist->timeout);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2721 gtkblist->timeout = 0;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2722 }
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2723
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2724 if (gtkblist->drag_timeout) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2725 g_source_remove(gtkblist->drag_timeout);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2726 gtkblist->drag_timeout = 0;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2727 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2728
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2729 pidgin_blist_tooltip_destroy();
7720
ee21f446e1fe [gaim-migrate @ 8365]
Sean Egan <seanegan@pidgin.im>
parents: 7719
diff changeset
2730
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2731 if (gtkblist->mouseover_contact &&
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
2732 !((e->x > gtkblist->contact_rect.x) && (e->x < (gtkblist->contact_rect.x + gtkblist->contact_rect.width)) &&
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
2733 (e->y > gtkblist->contact_rect.y) && (e->y < (gtkblist->contact_rect.y + gtkblist->contact_rect.height)))) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2734 pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2735 gtkblist->mouseover_contact = NULL;
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2736 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2737 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2738
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2739 static void
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2740 toggle_debug(void)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2741 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2742 gaim_prefs_set_bool("/gaim/gtk/debug/enabled",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2743 !gaim_prefs_get_bool("/gaim/gtk/debug/enabled"));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2744 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2745
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2746
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2747 /***************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2748 * Crap *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2749 ***************************************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2750 static GtkItemFactoryEntry blist_menu[] =
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2751 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2752 /* Buddies menu */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2753 { N_("/_Buddies"), NULL, NULL, 0, "<Branch>", NULL },
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
2754 { N_("/Buddies/New Instant _Message..."), "<CTL>M", pidgindialogs_im, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2755 { N_("/Buddies/Join a _Chat..."), "<CTL>C", pidgin_blist_joinchat_show, 0, "<Item>", NULL },
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
2756 { N_("/Buddies/Get User _Info..."), "<CTL>I", pidgindialogs_info, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2757 { N_("/Buddies/View User _Log..."), "<CTL>L", pidgindialogs_log, 0, "<Item>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2758 { "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2759 { N_("/Buddies/Show _Offline Buddies"), NULL, pidgin_blist_edit_mode_cb, 1, "<CheckItem>", NULL },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2760 { N_("/Buddies/Show _Empty Groups"), NULL, pidgin_blist_show_empty_groups_cb, 1, "<CheckItem>", NULL },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2761 { N_("/Buddies/Show Buddy _Details"), NULL, pidgin_blist_buddy_details_cb, 1, "<CheckItem>", NULL },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2762 { N_("/Buddies/Show Idle _Times"), NULL, pidgin_blist_show_idle_time_cb, 1, "<CheckItem>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2763 { N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "<Branch>", NULL },
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2764 { "/Buddies/sep2", NULL, NULL, 0, "<Separator>", NULL },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2765 { N_("/Buddies/_Add Buddy..."), "<CTL>B", pidgin_blist_add_buddy_cb, 0, "<StockItem>", GTK_STOCK_ADD },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2766 { N_("/Buddies/Add C_hat..."), NULL, pidgin_blist_add_chat_cb, 0, "<StockItem>", GTK_STOCK_ADD },
7853
cd8b631ff166 [gaim-migrate @ 8507]
Mark Doliner <markdoliner@pidgin.im>
parents: 7843
diff changeset
2767 { N_("/Buddies/Add _Group..."), NULL, gaim_blist_request_add_group, 0, "<StockItem>", GTK_STOCK_ADD },
12799
3a4678907219 [gaim-migrate @ 15146]
Mark Doliner <markdoliner@pidgin.im>
parents: 12797
diff changeset
2768 { "/Buddies/sep3", NULL, NULL, 0, "<Separator>", NULL },
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
2769 { N_("/Buddies/_Quit"), "<CTL>Q", gaim_core_quit, 0, "<StockItem>", GTK_STOCK_QUIT },
12300
c24609bae42d [gaim-migrate @ 14604]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12298
diff changeset
2770
c24609bae42d [gaim-migrate @ 14604]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12298
diff changeset
2771 /* Accounts menu */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2772 { N_("/_Accounts"), NULL, NULL, 0, "<Branch>", NULL },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2773 { N_("/Accounts/Add\\/Edit"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2774
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2775 /* Tools */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2776 { N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2777 { N_("/Tools/Buddy _Pounces"), NULL, pidgin_pounces_manager_show, 0, "<Item>", NULL },
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
2778 { N_("/Tools/Plu_gins"), "<CTL>U", pidgin_plugin_dialog_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_PLUGINS },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2779 { N_("/Tools/Pr_eferences"), "<CTL>P", pidgin_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2780 { N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "<Item>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2781 { "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2782 { N_("/Tools/_File Transfers"), "<CTL>T", pidginxfer_dialog_show, 0, "<Item>", NULL },
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2783 { N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2784 { N_("/Tools/System _Log"), NULL, gtk_blist_show_systemlog_cb, 0, "<Item>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2785 { "/Tools/sep3", NULL, NULL, 0, "<Separator>", NULL },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2786 { N_("/Tools/Mute _Sounds"), "<CTL>S", pidgin_blist_mute_sounds_cb, 0, "<CheckItem>", NULL },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2787
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2788 /* Help */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2789 { N_("/_Help"), NULL, NULL, 0, "<Branch>", NULL },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2790 { N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "<StockItem>", GTK_STOCK_HELP },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2791 { N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "<Item>", NULL },
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
2792 { N_("/Help/_About"), NULL, pidgindialogs_about, 0, "<StockItem>", PIDGIN_STOCK_ABOUT },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2793 };
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2794
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2795 /*********************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2796 * Private Utility functions *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2797 *********************************************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2798
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2799 static char *gaim_get_tooltip_text(GaimBlistNode *node, gboolean full)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2800 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2801 GString *str = g_string_new("");
5237
f3b88eae4b89 [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2802 GaimPlugin *prpl;
f3b88eae4b89 [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2803 GaimPluginProtocolInfo *prpl_info = NULL;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2804 char *tmp;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2805
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2806 if (GAIM_BLIST_NODE_IS_CHAT(node))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2807 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2808 GaimChat *chat;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2809 GList *cur;
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2810 struct proto_chat_entry *pce;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2811 char *name, *value;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2812
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2813 chat = (GaimChat *)node;
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
2814 prpl = gaim_find_prpl(gaim_account_get_protocol_id(chat->account));
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2815 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2816
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2817 if (g_list_length(gaim_connections_get_all()) > 1)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2818 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2819 tmp = g_markup_escape_text(chat->account->username, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2820 g_string_append_printf(str, _("\n<b>Account:</b> %s"), tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2821 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2822 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2823
9959
e80396496a78 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
2824 if (prpl_info->chat_info != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2825 cur = prpl_info->chat_info(chat->account->gc);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2826 else
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2827 cur = NULL;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2828
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2829 while (cur != NULL)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2830 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2831 pce = cur->data;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2832
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2833 if (!pce->secret && (!pce->required &&
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2834 g_hash_table_lookup(chat->components, pce->identifier) == NULL))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2835 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2836 tmp = gaim_text_strip_mnemonic(pce->label);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2837 name = g_markup_escape_text(tmp, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2838 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2839 value = g_markup_escape_text(g_hash_table_lookup(
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2840 chat->components, pce->identifier), -1);
10924
248233a58180 [gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents: 10918
diff changeset
2841 g_string_append_printf(str, "\n<b>%s</b> %s",
248233a58180 [gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents: 10918
diff changeset
2842 name ? name : "",
248233a58180 [gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents: 10918
diff changeset
2843 value ? value : "");
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2844 g_free(name);
8020
9c5ae652fc7f [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 8003
diff changeset
2845 g_free(value);
9c5ae652fc7f [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 8003
diff changeset
2846 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2847
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2848 g_free(pce);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2849 cur = g_list_remove(cur, pce);
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2850 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2851 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2852 else if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2853 {
15209
9dd48f6c8805 [gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents: 15206
diff changeset
2854 /* NOTE: THIS FUNCTION IS NO LONGER CALLED FOR CONTACTS.
9dd48f6c8805 [gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents: 15206
diff changeset
2855 * It is only called by create_tip_for_node(), and create_tip_for_node() is never called for a contact.
9dd48f6c8805 [gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents: 15206
diff changeset
2856 */
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2857 GaimContact *c;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2858 GaimBuddy *b;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
2859 GaimPresence *presence;
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2860 GaimNotifyUserInfo *user_info;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2861 char *tmp;
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10544
diff changeset
2862 time_t idle_secs, signon;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2863
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2864 if (GAIM_BLIST_NODE_IS_CONTACT(node))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2865 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2866 c = (GaimContact *)node;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2867 b = gaim_contact_get_priority_buddy(c);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2868 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2869 else
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2870 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2871 b = (GaimBuddy *)node;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2872 c = gaim_buddy_get_contact(b);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2873 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2874
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
2875 prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account));
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2876 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2877
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2878 presence = gaim_buddy_get_presence(b);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2879 user_info = gaim_notify_user_info_new();
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2880
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2881 /* Account */
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2882 if (full && g_list_length(gaim_connections_get_all()) > 1)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2883 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2884 tmp = g_markup_escape_text(gaim_account_get_username(
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2885 gaim_buddy_get_account(b)), -1);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2886 gaim_notify_user_info_add_pair(user_info, _("Account"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2887 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2888 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2889
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2890 /* Alias */
12942
b0b4accb55fb [gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents: 12941
diff changeset
2891 /* If there's not a contact alias, the node is being displayed with
b0b4accb55fb [gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents: 12941
diff changeset
2892 * this alias, so there's no point in showing it in the tooltip. */
b0b4accb55fb [gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents: 12941
diff changeset
2893 if (full && b->alias != NULL && b->alias[0] != '\0' &&
13218
47708e4d453e [gaim-migrate @ 15581]
Richard Laager <rlaager@pidgin.im>
parents: 13202
diff changeset
2894 (c->alias != NULL && c->alias[0] != '\0') &&
47708e4d453e [gaim-migrate @ 15581]
Richard Laager <rlaager@pidgin.im>
parents: 13202
diff changeset
2895 strcmp(c->alias, b->alias) != 0)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2896 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2897 tmp = g_markup_escape_text(b->alias, -1);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2898 gaim_notify_user_info_add_pair(user_info, _("Buddy Alias"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2899 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2900 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2901
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2902 /* Nickname/Server Alias */
12966
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2903 /* I'd like to only show this if there's a contact or buddy
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2904 * alias, but many people on MSN set long nicknames, which
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2905 * get ellipsized, so the only way to see the whole thing is
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2906 * to look at the tooltip. */
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2907 if (full && b->server_alias != NULL && b->server_alias[0] != '\0')
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2908 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2909 tmp = g_markup_escape_text(b->server_alias, -1);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2910 gaim_notify_user_info_add_pair(user_info, _("Nickname"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2911 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2912 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2913
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2914 /* Logged In */
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10544
diff changeset
2915 signon = gaim_presence_get_login_time(presence);
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2916 if (full && GAIM_BUDDY_IS_ONLINE(b) && signon > 0)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2917 {
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10544
diff changeset
2918 tmp = gaim_str_seconds_to_string(time(NULL) - signon);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2919 gaim_notify_user_info_add_pair(user_info, _("Logged In"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2920 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2921 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2922
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2923 /* Idle */
12979
a5f99a474d5a [gaim-migrate @ 15332]
Etan Reisner <deryni@pidgin.im>
parents: 12971
diff changeset
2924 if (gaim_presence_is_idle(presence))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2925 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2926 idle_secs = gaim_presence_get_idle_time(presence);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2927 if (idle_secs > 0)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2928 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2929 tmp = gaim_str_seconds_to_string(time(NULL) - idle_secs);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2930 gaim_notify_user_info_add_pair(user_info, _("Idle"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2931 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2932 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2933 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2934
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2935 /* Last Seen */
12883
ae7a455ad762 [gaim-migrate @ 15235]
Richard Laager <rlaager@pidgin.im>
parents: 12849
diff changeset
2936 if (full && !GAIM_BUDDY_IS_ONLINE(b))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2937 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2938 struct _pidgin_blist_node *gtknode = ((GaimBlistNode *)c)->ui_data;
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2939 GaimBlistNode *bnode;
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2940 int lastseen = 0;
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2941
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2942 if (!gtknode->contact_expanded || GAIM_BLIST_NODE_IS_CONTACT(node))
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2943 {
11437
20ba0815b4f8 [gaim-migrate @ 13674]
Richard Laager <rlaager@pidgin.im>
parents: 11436
diff changeset
2944 /* We're either looking at a buddy for a collapsed contact or
11438
46e5a461d0aa [gaim-migrate @ 13675]
Richard Laager <rlaager@pidgin.im>
parents: 11437
diff changeset
2945 * an expanded contact itself so we show the most recent
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2946 * (largest) last_seen time for any of the buddies under
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2947 * the contact. */
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2948 for (bnode = ((GaimBlistNode *)c)->child ; bnode != NULL ; bnode = bnode->next)
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2949 {
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2950 int value = gaim_blist_node_get_int(bnode, "last_seen");
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2951 if (value > lastseen)
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2952 lastseen = value;
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2953 }
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2954 }
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2955 else
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2956 {
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2957 /* We're dealing with a buddy under an expanded contact,
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2958 * so we show the last_seen time for the buddy. */
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2959 lastseen = gaim_blist_node_get_int(&b->node, "last_seen");
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2960 }
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
2961
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2962 if (lastseen > 0)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2963 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2964 tmp = gaim_str_seconds_to_string(time(NULL) - lastseen);
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2965 gaim_notify_user_info_add_pair(user_info, _("Last Seen"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2966 g_free(tmp);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2967 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2968 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2969
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2970
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2971 /* Offline? */
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12966
diff changeset
2972 /* FIXME: Why is this status special-cased by the core? -- rlaager */
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2973 if (!GAIM_BUDDY_IS_ONLINE(b)) {
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2974 gaim_notify_user_info_add_pair(user_info, _("Status"), _("Offline"));
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2975 }
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10968
diff changeset
2976
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10968
diff changeset
2977 if (prpl_info && prpl_info->tooltip_text)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2978 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2979 /* Additional text from the PRPL */
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2980 prpl_info->tooltip_text(b, user_info, full);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2981 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2982
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2983 /* These are Easter Eggs. Patches to remove them will be rejected. */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2984 if (!g_ascii_strcasecmp(b->name, "robflynn"))
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2985 gaim_notify_user_info_add_pair(user_info, _("Description"), _("Spooky"));
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2986 if (!g_ascii_strcasecmp(b->name, "seanegn"))
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2987 gaim_notify_user_info_add_pair(user_info, _("Status"), _("Awesome"));
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2988 if (!g_ascii_strcasecmp(b->name, "chipx86"))
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2989 gaim_notify_user_info_add_pair(user_info, _("Status"), _("Rockin'"));
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
2990
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2991 tmp = gaim_notify_user_info_get_text_with_newline(user_info, "\n");
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2992 g_string_append(str, tmp);
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2993 g_free(tmp);
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2994
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2995 gaim_notify_user_info_destroy(user_info);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2996 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2997
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2998 gaim_signal_emit(pidgin_blist_get_handle(),
12713
6f057a6e0516 [gaim-migrate @ 15057]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12679
diff changeset
2999 "drawing-tooltip", node, str, full);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3000
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3001 return g_string_free(str, FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3002 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3003
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3004 GdkPixbuf *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3005 pidgin_blist_get_emblem(GaimBlistNode *node)
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3006 {
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3007 GaimBuddy *buddy = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3008 struct _pidgin_blist_node *gtknode = node->ui_data;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3009 struct _pidgin_blist_node *gtkbuddynode = NULL;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3010 GaimPlugin *prpl;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3011 GaimPluginProtocolInfo *prpl_info;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3012 const char *name = NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3013 char *filename, *path;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3014 GdkPixbuf *ret;
15588
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3015 GaimPresence *p;
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3016
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3017
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3018
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3019 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3020 if(!gtknode->contact_expanded) {
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3021 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3022 gtkbuddynode = ((GaimBlistNode*)buddy)->ui_data;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3023 }
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3024 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3025 buddy = (GaimBuddy*)node;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3026 gtkbuddynode = node->ui_data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3027 if (((struct _pidgin_blist_node*)(node->parent->ui_data))->contact_expanded)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3028 return pidgin_create_prpl_icon(((GaimBuddy*)node)->account, PIDGIN_PRPL_ICON_SMALL);
15525
57d54881c22a prpl icons as emblems on chats (needs work to make it less ugly) and expanded persons
Sean Egan <seanegan@pidgin.im>
parents: 15524
diff changeset
3029 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3030 return pidgin_create_prpl_icon(((GaimChat*)node)->account, PIDGIN_PRPL_ICON_SMALL);
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3031 } else {
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3032 return NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3033 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3034
15561
bdb019a1f485 Blocked emblem
Sean Egan <seanegan@pidgin.im>
parents: 15559
diff changeset
3035 if (!gaim_privacy_check(buddy->account, gaim_buddy_get_name(buddy))) {
bdb019a1f485 Blocked emblem
Sean Egan <seanegan@pidgin.im>
parents: 15559
diff changeset
3036 path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", "blocked.png", NULL);
15588
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3037 ret = gdk_pixbuf_new_from_file(path, NULL);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3038 g_free(path);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3039 return ret;
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3040 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3041
15588
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3042 p = gaim_buddy_get_presence(buddy);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3043 if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_MOBILE)) {
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3044 path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", "mobile.png", NULL);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3045 ret = gdk_pixbuf_new_from_file(path, NULL);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3046 g_free(path);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3047 return ret;
15561
bdb019a1f485 Blocked emblem
Sean Egan <seanegan@pidgin.im>
parents: 15559
diff changeset
3048 }
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3049
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3050 prpl = gaim_find_prpl(gaim_account_get_protocol_id(buddy->account));
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3051 if (!prpl)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3052 return NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3053
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3054 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3055 if (prpl_info && prpl_info->list_emblem)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3056 name = prpl_info->list_emblem(buddy);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3057
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3058 if (name == NULL)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3059 return NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3060
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3061 filename = g_strdup_printf("%s.png", name);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3062
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3063 path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", filename, NULL);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3064 ret = gdk_pixbuf_new_from_file(path, NULL);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3065
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3066 g_free(filename);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3067 g_free(path);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3068
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3069 return ret;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3070 }
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3071
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3072
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3073 GdkPixbuf *
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3074 pidgin_blist_get_status_icon(GaimBlistNode *node, PidginStatusIconSize size)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3075 {
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3076 GdkPixbuf *ret;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3077 const char *protoname = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3078 struct _pidgin_blist_node *gtknode = node->ui_data;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3079 struct _pidgin_blist_node *gtkbuddynode = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3080 GaimBuddy *buddy = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3081 GaimChat *chat = NULL;
15606
a070ac7366f8 Perhaps a 22px icon is better in the tooltip
Sean Egan <seanegan@pidgin.im>
parents: 15588
diff changeset
3082 GtkIconSize icon_size = gtk_icon_size_from_name((size == PIDGIN_STATUS_ICON_LARGE) ? PIDGIN_ICON_SIZE_TANGO_SMALL :
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
3083 PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3084
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3085 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3086 if(!gtknode->contact_expanded) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3087 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3088 gtkbuddynode = ((GaimBlistNode*)buddy)->ui_data;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3089 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3090 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3091 buddy = (GaimBuddy*)node;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3092 gtkbuddynode = node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3093 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3094 chat = (GaimChat*)node;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3095 } else {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3096 return NULL;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3097 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3098
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3099 if(buddy || chat) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3100 GaimAccount *account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3101 GaimPlugin *prpl;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3102 GaimPluginProtocolInfo *prpl_info;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3103
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3104 if(buddy)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3105 account = buddy->account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3106 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3107 account = chat->account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3108
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
3109 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3110 if(!prpl)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3111 return NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3112
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3113 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3114
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3115 if(prpl_info && prpl_info->list_icon) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3116 protoname = prpl_info->list_icon(account, buddy);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3117 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3118 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3119
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3120 if(buddy) {
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3121 GaimConversation *conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM,
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3122 gaim_buddy_get_name(buddy),
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3123 gaim_buddy_get_account(buddy));
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3124 GaimPresence *p;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3125 if(conv != NULL) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3126 PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3127 if(gtkconv != NULL && pidgin_conv_is_hidden(gtkconv) && size == PIDGIN_STATUS_ICON_SMALL) {
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3128 return gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_MESSAGE,
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3129 icon_size, "GtkTreeView");
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3130 }
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3131 }
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3132 p = gaim_buddy_get_presence(buddy);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3133
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3134 if (GAIM_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3135 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_LOGIN,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3136 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3137 else if (gtkbuddynode && gtkbuddynode->recent_signonoff)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3138 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_LOGOUT,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3139 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3140 else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_UNAVAILABLE))
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3141 if (gaim_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3142 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_BUSY_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3143 icon_size, "GtkTreeView");
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3144 else
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3145 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_BUSY,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3146 icon_size, "GtkTreeView");
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3147 else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_AWAY))
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3148 if (gaim_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3149 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AWAY_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3150 icon_size, "GtkTreeView");
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3151 else
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3152 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AWAY,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3153 icon_size, "GtkTreeView");
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3154 else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_EXTENDED_AWAY))
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3155 if (gaim_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3156 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_XA_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3157 icon_size, "GtkTreeView");
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3158 else
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3159 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_XA,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3160 icon_size, "GtkTreeView");
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3161 else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_OFFLINE))
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3162 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_OFFLINE,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3163 icon_size, "GtkTreeView");
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3164 else if (gaim_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3165 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AVAILABLE_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3166 icon_size, "GtkTreeView");
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3167 else
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3168 ret = gtk_widget_render_icon(GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AVAILABLE,
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3169 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3170 } else if (chat) {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3171 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_CHAT,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3172 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3173 } else {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3174 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_PERSON,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3175 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3176 }
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3177
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3178 return ret;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3179 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3180
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3181 static gchar *pidgin_blist_get_name_markup(GaimBuddy *b, gboolean selected)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3182 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3183 const char *name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3184 char *esc, *text = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3185 GaimPlugin *prpl;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3186 GaimPluginProtocolInfo *prpl_info = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3187 GaimContact *contact;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3188 GaimPresence *presence;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3189 struct _pidgin_blist_node *gtkcontactnode = NULL;
11257
9743367c935e [gaim-migrate @ 13432]
Sean Egan <seanegan@pidgin.im>
parents: 11256
diff changeset
3190 char *idletime = NULL, *statustext = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3191 time_t t;
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3192 GaimConversation *conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM,
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3193 gaim_buddy_get_name(b),
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3194 gaim_buddy_get_account(b));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3195 PidginConversation *gtkconv;
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3196 gboolean hidden_conv = FALSE;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3197
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3198 if(conv != NULL) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3199 gtkconv = PIDGIN_CONVERSATION(conv);
15563
9eea2b8c2846 pidginconv to pidgin_conv
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
3200 if(gtkconv != NULL && pidgin_conv_is_hidden(gtkconv)) {
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3201 hidden_conv = TRUE;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3202 }
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3203 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3204
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3205 /* XXX Good luck cleaning up this crap */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3206
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3207 contact = (GaimContact*)((GaimBlistNode*)b)->parent;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3208 if(contact)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3209 gtkcontactnode = ((GaimBlistNode*)contact)->ui_data;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3210
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3211 if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3212 name = contact->alias;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3213 else
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9606
diff changeset
3214 name = gaim_buddy_get_alias(b);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3215 esc = g_markup_escape_text(name, strlen(name));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3216
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3217 presence = gaim_buddy_get_presence(b);
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3218
13034
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3219 if (!gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"))
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3220 {
13038
892c1ddd9195 [gaim-migrate @ 15397]
Richard Laager <rlaager@pidgin.im>
parents: 13034
diff changeset
3221 if (!selected && gaim_presence_is_idle(presence))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3222 {
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
3223 text = g_strdup_printf("<span color='%s'>%s</span>",
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
3224 dim_grey(), esc);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3225 g_free(esc);
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3226 if (hidden_conv) {
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3227 char *tmp = text;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3228 text = g_strdup_printf("<b>%s</b>", text);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3229 g_free(tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3230 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3231 return text;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3232 }
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3233 else
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3234 if (hidden_conv) {
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3235 char *tmp = esc;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3236 esc = g_strdup_printf("<b>%s</b>", esc);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3237 g_free(tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3238 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3239 return esc;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3240 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3241
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3242 prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account));
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3243
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3244 if (prpl != NULL)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3245 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3246
8122
64dc12809940 [gaim-migrate @ 8826]
Christian Hammond <chipx86@chipx86.com>
parents: 8113
diff changeset
3247 if (prpl_info && prpl_info->status_text && b->account->gc) {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3248 char *tmp = prpl_info->status_text(b);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3249 const char *end;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3250
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3251 if(tmp && !g_utf8_validate(tmp, -1, &end)) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3252 char *new = g_strndup(tmp,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3253 g_utf8_pointer_to_offset(tmp, end));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3254 g_free(tmp);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3255 tmp = new;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3256 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3257
10288
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3258 #if !GTK_CHECK_VERSION(2,6,0)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3259 if(tmp) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3260 char buf[32];
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3261 char *c = tmp;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3262 int length = 0, vis=0;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3263 gboolean inside = FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3264 g_strdelimit(tmp, "\n", ' ');
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11917
diff changeset
3265 gaim_str_strip_char(tmp, '\r');
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3266
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3267 while(*c && vis < 20) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3268 if(*c == '&')
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3269 inside = TRUE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3270 else if(*c == ';')
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3271 inside = FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3272 if(!inside)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3273 vis++;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3274 c = g_utf8_next_char(c); /* this is fun */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3275 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3276
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3277 length = c - tmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3278
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3279 if(vis == 20)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3280 g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3281 else
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3282 g_snprintf(buf, sizeof(buf), "%%s ");
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3283
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3284 statustext = g_strdup_printf(buf, tmp);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3285
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3286 g_free(tmp);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3287 }
10288
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3288 #else
13792
ceb938a873da [gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents: 13768
diff changeset
3289 if(tmp) {
12437
8273decd4841 [gaim-migrate @ 14744]
Nathan Walp <nwalp@pidgin.im>
parents: 12436
diff changeset
3290 g_strdelimit(tmp, "\n", ' ');
13792
ceb938a873da [gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents: 13768
diff changeset
3291 gaim_str_strip_char(tmp, '\r');
ceb938a873da [gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents: 13768
diff changeset
3292 }
10288
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3293 statustext = tmp;
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3294 #endif
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3295 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3296
13034
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3297 if(!gaim_presence_is_online(presence) && !statustext)
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3298 statustext = g_strdup(_("Offline"));
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3299 else if (!statustext)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3300 text = g_strdup(esc);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
3301
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3302 if (gaim_presence_is_idle(presence)) {
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3303 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time")) {
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3304 time_t idle_secs = gaim_presence_get_idle_time(presence);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3305
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3306 if (idle_secs > 0) {
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3307 int ihrs, imin;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3308
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3309 time(&t);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3310 ihrs = (t - idle_secs) / 3600;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3311 imin = ((t - idle_secs) / 60) % 60;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3312
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3313 if (ihrs)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3314 idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3315 else
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3316 idletime = g_strdup_printf(_("Idle %dm"), imin);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3317 }
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3318 else
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3319 idletime = g_strdup(_("Idle"));
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3320
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3321 if (!selected)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3322 text = g_strdup_printf("<span color='%s'>%s</span>\n"
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3323 "<span color='%s' size='smaller'>%s%s%s</span>",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3324 dim_grey(), esc, dim_grey(),
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3325 idletime != NULL ? idletime : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3326 (idletime != NULL && statustext != NULL) ? " - " : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3327 statustext != NULL ? statustext : "");
13034
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3328 }
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3329 else if (!selected && !statustext) /* We handle selected text later */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3330 text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3331 else if (!selected && !text)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3332 text = g_strdup_printf("<span color='%s'>%s</span>\n"
14199
6a78ca00a50f [gaim-migrate @ 16779]
Daniel Atallah <datallah@pidgin.im>
parents: 14195
diff changeset
3333 "<span color='%s' size='smaller'>%s</span>",
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3334 dim_grey(), esc, dim_grey(),
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3335 statustext != NULL ? statustext : "");
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3336 }
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3337
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3338 /* Not idle and not selected */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3339 else if (!selected && !text)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3340 {
13202
f5f21ca5b5a6 [gaim-migrate @ 15564]
Richard Laager <rlaager@pidgin.im>
parents: 13197
diff changeset
3341 text = g_strdup_printf("%s\n"
14136
0259a51abd4a [gaim-migrate @ 16695]
Daniel Atallah <datallah@pidgin.im>
parents: 14097
diff changeset
3342 "<span color='%s' size='smaller'>%s</span>",
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3343 esc, dim_grey(),
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3344 statustext != NULL ? statustext : "");
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3345 }
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3346
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3347 /* It is selected. */
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
3348 if ((selected && !text) || (selected && idletime))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3349 text = g_strdup_printf("%s\n"
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3350 "<span size='smaller'>%s%s%s</span>",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3351 esc,
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3352 idletime != NULL ? idletime : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3353 (idletime != NULL && statustext != NULL) ? " - " : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3354 statustext != NULL ? statustext : "");
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3355
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3356 g_free(idletime);
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3357 g_free(statustext);
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3358 g_free(esc);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3359
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3360 if (hidden_conv) {
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3361 char *tmp = text;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3362 text = g_strdup_printf("<b>%s</b>", tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3363 g_free(tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3364 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3365
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3366 return text;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3367 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3368
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3369 static void pidgin_blist_restore_position()
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3370 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3371 int blist_x, blist_y, blist_width, blist_height;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3372
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3373 blist_width = gaim_prefs_get_int("/gaim/gtk/blist/width");
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3374
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3375 /* if the window exists, is hidden, we're saving positions, and the
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3376 * position is sane... */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3377 if (gtkblist && gtkblist->window &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3378 !GTK_WIDGET_VISIBLE(gtkblist->window) && blist_width != 0) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3379
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3380 blist_x = gaim_prefs_get_int("/gaim/gtk/blist/x");
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3381 blist_y = gaim_prefs_get_int("/gaim/gtk/blist/y");
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3382 blist_height = gaim_prefs_get_int("/gaim/gtk/blist/height");
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3383
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3384 /* ...check position is on screen... */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3385 if (blist_x >= gdk_screen_width())
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3386 blist_x = gdk_screen_width() - 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3387 else if (blist_x + blist_width < 0)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3388 blist_x = 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3389
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3390 if (blist_y >= gdk_screen_height())
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3391 blist_y = gdk_screen_height() - 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3392 else if (blist_y + blist_height < 0)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3393 blist_y = 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3394
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3395 /* ...and move it back. */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3396 gtk_window_move(GTK_WINDOW(gtkblist->window), blist_x, blist_y);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3397 gtk_window_resize(GTK_WINDOW(gtkblist->window), blist_width, blist_height);
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
3398 if (gaim_prefs_get_bool("/gaim/gtk/blist/list_maximized"))
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
3399 gtk_window_maximize(GTK_WINDOW(gtkblist->window));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3400 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3401 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3402
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3403 static gboolean pidgin_blist_refresh_timer(GaimBuddyList *list)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3404 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3405 GaimBlistNode *gnode, *cnode;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3406
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3407 if (gtk_blist_obscured || !GTK_WIDGET_VISIBLE(gtkblist->window))
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3408 return TRUE;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
3409
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3410 for(gnode = list->root; gnode; gnode = gnode->next) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3411 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3412 continue;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3413 for(cnode = gnode->child; cnode; cnode = cnode->next) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3414 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3415 GaimBuddy *buddy;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3416
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3417 buddy = gaim_contact_get_priority_buddy((GaimContact*)cnode);
10012
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3418
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3419 if (buddy &&
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3420 gaim_presence_is_idle(gaim_buddy_get_presence(buddy)))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3421 pidgin_blist_update_contact(list, (GaimBlistNode*)buddy);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3422 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3423 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3424 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3425
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3426 /* keep on going */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3427 return TRUE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3428 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3429
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3430 static void pidgin_blist_hide_node(GaimBuddyList *list, GaimBlistNode *node, gboolean update)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3431 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3432 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
5260
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3433 GtkTreeIter iter;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3434
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3435 if (!gtknode || !gtknode->row || !gtkblist)
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3436 return;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3437
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3438 if(gtkblist->selected_node == node)
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3439 gtkblist->selected_node = NULL;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3440 if (get_iter_from_node(node, &iter)) {
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3441 gtk_tree_store_remove(gtkblist->treemodel, &iter);
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
3442 if(update && (GAIM_BLIST_NODE_IS_CONTACT(node) ||
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
3443 GAIM_BLIST_NODE_IS_BUDDY(node) || GAIM_BLIST_NODE_IS_CHAT(node))) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3444 pidgin_blist_update(list, node->parent);
5260
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3445 }
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3446 }
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3447 gtk_tree_row_reference_free(gtknode->row);
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3448 gtknode->row = NULL;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3449 }
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3450
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3451 static const char *require_connection[] =
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3452 {
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3453 N_("/Buddies/New Instant Message..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3454 N_("/Buddies/Join a Chat..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3455 N_("/Buddies/Get User Info..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3456 N_("/Buddies/Add Buddy..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3457 N_("/Buddies/Add Chat..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3458 N_("/Buddies/Add Group..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3459 };
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3460
10357
f5ad7a664200 [gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents: 10354
diff changeset
3461 static const int require_connection_size = sizeof(require_connection)
f5ad7a664200 [gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents: 10354
diff changeset
3462 / sizeof(*require_connection);
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3463
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3464 /**
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3465 * Rebuild dynamic menus and make menu items sensitive/insensitive
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3466 * where appropriate.
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3467 */
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3468 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3469 update_menu_bar(PidginBuddyList *gtkblist)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3470 {
8937
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
3471 GtkWidget *widget;
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3472 gboolean sensitive;
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3473 int i;
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3474
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3475 g_return_if_fail(gtkblist != NULL);
8259
7ed91862683d [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
3476
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3477 pidgin_blist_update_accounts_menu();
8937
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
3478
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3479 sensitive = (gaim_connections_get_all() != NULL);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3480
10357
f5ad7a664200 [gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents: 10354
diff changeset
3481 for (i = 0; i < require_connection_size; i++)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3482 {
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3483 widget = gtk_item_factory_get_widget(gtkblist->ift, require_connection[i]);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3484 gtk_widget_set_sensitive(widget, sensitive);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3485 }
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3486
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
3487 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Join a Chat..."));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3488 gtk_widget_set_sensitive(widget, pidgin_blist_joinchat_is_showable());
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
3489
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
3490 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Add Chat..."));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3491 gtk_widget_set_sensitive(widget, pidgin_blist_joinchat_is_showable());
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
3492
12136
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12133
diff changeset
3493 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Buddy Pounces"));
15058
212b71a4faf6 [gaim-migrate @ 17775]
Richard Laager <rlaager@pidgin.im>
parents: 15057
diff changeset
3494 gtk_widget_set_sensitive(widget, (gaim_accounts_get_all() != NULL));
8938
d13ed7491e43 [gaim-migrate @ 9708]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
3495
d13ed7491e43 [gaim-migrate @ 9708]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
3496 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Privacy"));
13001
4eec150e1d2b [gaim-migrate @ 15354]
Richard Laager <rlaager@pidgin.im>
parents: 12979
diff changeset
3497 gtk_widget_set_sensitive(widget, (gaim_connections_get_all() != NULL));
12136
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12133
diff changeset
3498
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12133
diff changeset
3499 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Room List"));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3500 gtk_widget_set_sensitive(widget, pidgin_roomlist_is_showable());
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3501 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3502
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3503 static void
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3504 sign_on_off_cb(GaimConnection *gc, GaimBuddyList *blist)
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3505 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3506 PidginBuddyList *gtkblist = PIDGIN_BLIST(blist);
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3507
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3508 update_menu_bar(gtkblist);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3509 }
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3510
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3511 static void
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3512 plugin_changed_cb(GaimPlugin *p, gpointer *data)
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3513 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3514 pidgin_blist_update_plugin_actions();
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3515 }
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3516
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3517 static void
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3518 unseen_conv_menu()
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3519 {
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3520 static GtkWidget *menu = NULL;
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3521 GList *convs = NULL;
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3522
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3523 if (menu) {
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3524 gtk_widget_destroy(menu);
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3525 menu = NULL;
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3526 }
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3527
15566
ce486027d329 GAIM_UNSEEN to PIDGIN_UNSEEN
Sean Egan <seanegan@pidgin.im>
parents: 15563
diff changeset
3528 convs = pidgin_conversations_find_unseen_list(GAIM_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0);
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3529 if (!convs)
12175
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3530 /* no conversations added, don't show the menu */
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3531 return;
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3532
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3533 menu = gtk_menu_new();
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3534
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3535 pidgin_conversations_fill_menu(menu, convs);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3536 g_list_free(convs);
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3537 gtk_widget_show_all(menu);
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3538 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3,
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3539 gtk_get_current_event_time());
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3540 }
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3541
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3542 static gboolean
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3543 menutray_press_cb(GtkWidget *widget, GdkEventButton *event)
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3544 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3545 GList *convs;
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3546
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3547 switch (event->button) {
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3548 case 1:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3549 convs = pidgin_conversations_find_unseen_list(GAIM_CONV_TYPE_IM,
15566
ce486027d329 GAIM_UNSEEN to PIDGIN_UNSEEN
Sean Egan <seanegan@pidgin.im>
parents: 15563
diff changeset
3550 PIDGIN_UNSEEN_TEXT, TRUE, 1);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3551 if (convs) {
15670
25536d2aca5c Let's use the core function instead of using the uiops function directly when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15648
diff changeset
3552 gaim_conversation_present((GaimConversation*)convs->data);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3553 g_list_free(convs);
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3554 }
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3555 break;
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3556 case 3:
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3557 unseen_conv_menu();
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3558 break;
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3559 }
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3560 return TRUE;
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3561 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3562
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
3563 static void
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3564 conversation_updated_cb(GaimConversation *conv, GaimConvUpdateType type,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3565 PidginBuddyList *gtkblist)
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3566 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3567 GList *convs = NULL;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3568 GList *l = NULL;
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3569
12175
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3570 if (type != GAIM_CONV_UPDATE_UNSEEN)
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3571 return;
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3572
12744
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3573 if(conv->account != NULL && conv->name != NULL) {
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3574 GaimBuddy *buddy = gaim_find_buddy(conv->account, conv->name);
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3575 if(buddy != NULL)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3576 pidgin_blist_update_buddy(NULL, (GaimBlistNode *)buddy, TRUE);
12744
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3577 }
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3578
12175
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3579 if (gtkblist->menutrayicon) {
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3580 gtk_widget_destroy(gtkblist->menutrayicon);
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3581 gtkblist->menutrayicon = NULL;
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3582 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3583
15566
ce486027d329 GAIM_UNSEEN to PIDGIN_UNSEEN
Sean Egan <seanegan@pidgin.im>
parents: 15563
diff changeset
3584 convs = pidgin_conversations_find_unseen_list(GAIM_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3585 if (convs) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3586 GtkWidget *img = NULL;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3587 GString *tooltip_text = NULL;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3588
12117
b3781ac3f1da [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3589 tooltip_text = g_string_new("");
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3590 l = convs;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3591 while (l != NULL) {
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3592 if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3593 PidginConversation *gtkconv = PIDGIN_CONVERSATION((GaimConversation *)l->data);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3594
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3595 g_string_append_printf(tooltip_text,
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3596 ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3597 gtkconv->unseen_count,
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3598 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
12117
b3781ac3f1da [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3599 }
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3600 l = l->next;
12117
b3781ac3f1da [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3601 }
12239
e4f62729e2c7 [gaim-migrate @ 14541]
Nathan Walp <nwalp@pidgin.im>
parents: 12232
diff changeset
3602 if(tooltip_text->len > 0) {
12302
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3603 /* get rid of the last newline */
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
3604 g_string_truncate(tooltip_text, tooltip_text->len -1);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3605 img = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_PENDING,
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
3606 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
12302
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3607
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3608 gtkblist->menutrayicon = gtk_event_box_new();
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3609 gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3610 gtk_widget_show(img);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3611 gtk_widget_show(gtkblist->menutrayicon);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3612 g_signal_connect(G_OBJECT(gtkblist->menutrayicon), "button-press-event", G_CALLBACK(menutray_press_cb), NULL);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3613
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3614 pidgin_menu_tray_append(PIDGIN_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, tooltip_text->str);
12239
e4f62729e2c7 [gaim-migrate @ 14541]
Nathan Walp <nwalp@pidgin.im>
parents: 12232
diff changeset
3615 }
12302
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3616 g_string_free(tooltip_text, TRUE);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3617 g_list_free(convs);
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3618 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3619 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3620
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3621 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3622 conversation_deleting_cb(GaimConversation *conv, PidginBuddyList *gtkblist)
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3623 {
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3624 conversation_updated_cb(conv, GAIM_CONV_UPDATE_UNSEEN, gtkblist);
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3625 }
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3626
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3627 /**********************************************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3628 * Public API Functions *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3629 **********************************************************************************/
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
3630
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3631 static void pidgin_blist_new_list(GaimBuddyList *blist)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3632 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3633 PidginBuddyList *gtkblist;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3634
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3635 gtkblist = g_new0(PidginBuddyList, 1);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3636 gtkblist->connection_errors = g_hash_table_new_full(g_direct_hash,
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3637 g_direct_equal, NULL, g_free);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3638 blist->ui_data = gtkblist;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3639 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3640
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3641 static void pidgin_blist_new_node(GaimBlistNode *node)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3642 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3643 node->ui_data = g_new0(struct _pidgin_blist_node, 1);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3644 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3645
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3646 gboolean pidgin_blist_node_is_contact_expanded(GaimBlistNode *node)
11018
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3647 {
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3648 if GAIM_BLIST_NODE_IS_BUDDY(node)
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3649 node = node->parent;
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3650
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3651 g_return_val_if_fail(GAIM_BLIST_NODE_IS_CONTACT(node), FALSE);
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3652
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3653 return ((struct _pidgin_blist_node *)node->ui_data)->contact_expanded;
11018
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3654 }
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3655
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3656 enum {
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3657 DRAG_BUDDY,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3658 DRAG_ROW,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3659 DRAG_VCARD,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3660 DRAG_TEXT,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3661 DRAG_URI,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3662 NUM_TARGETS
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3663 };
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3664
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
3665 static const char *
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3666 item_factory_translate_func (const char *path, gpointer func_data)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3667 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3668 return _((char *)path);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3669 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3670
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3671 void pidgin_blist_setup_sort_methods()
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3672 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3673 pidgin_blist_sort_method_reg("none", _("Manually"), sort_method_none);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3674 #if GTK_CHECK_VERSION(2,2,1)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3675 pidgin_blist_sort_method_reg("alphabetical", _("Alphabetically"), sort_method_alphabetical);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3676 pidgin_blist_sort_method_reg("status", _("By status"), sort_method_status);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3677 pidgin_blist_sort_method_reg("log_size", _("By log size"), sort_method_log);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3678 #endif
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3679 pidgin_blist_sort_method_set(gaim_prefs_get_string("/gaim/gtk/blist/sort_type"));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3680 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3681
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3682 static void _prefs_change_redo_list()
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3683 {
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3684 GtkTreeSelection *sel;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3685 GtkTreeIter iter;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3686 GaimBlistNode *node = NULL;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3687
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3688 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3689 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3690 {
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3691 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3692 }
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3693
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
3694 redo_buddy_list(gaim_get_blist(), FALSE, FALSE);
13162
43420c10065b [gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13147
diff changeset
3695 #if GTK_CHECK_VERSION(2,6,0)
43420c10065b [gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13147
diff changeset
3696 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview));
43420c10065b [gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13147
diff changeset
3697 #endif
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3698
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3699 if (node)
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3700 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3701 struct _pidgin_blist_node *gtknode;
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3702 GtkTreePath *path;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3703
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3704 gtknode = node->ui_data;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3705 if (gtknode && gtknode->row)
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3706 {
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3707 path = gtk_tree_row_reference_get_path(gtknode->row);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3708 gtk_tree_selection_select_path(sel, path);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3709 gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(gtkblist->treeview), path, NULL, FALSE, 0, 0);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3710 gtk_tree_path_free(path);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3711 }
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3712 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3713 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3714
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3715 static void _prefs_change_sort_method(const char *pref_name, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
3716 gconstpointer val, gpointer data)
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3717 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3718 if(!strcmp(pref_name, "/gaim/gtk/blist/sort_type"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3719 pidgin_blist_sort_method_set(val);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3720 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3721
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3722 static void account_modified(GaimAccount *account, PidginBuddyList *gtkblist)
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3723 {
15088
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3724 GList *list;
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3725 if (!gtkblist)
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3726 return;
12589
e25ec53fe8b0 [gaim-migrate @ 14918]
Mark Doliner <markdoliner@pidgin.im>
parents: 12583
diff changeset
3727
15088
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3728 if ((list = gaim_accounts_get_all_active()) != NULL) {
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
3729 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1);
15088
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3730 g_list_free(list);
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3731 } else
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
3732 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
3733
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3734 update_menu_bar(gtkblist);
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3735 }
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3736
12766
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3737 static void
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3738 account_status_changed(GaimAccount *account, GaimStatus *old,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3739 GaimStatus *new, PidginBuddyList *gtkblist)
12766
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3740 {
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3741 if (!gtkblist)
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3742 return;
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3743
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3744 update_menu_bar(gtkblist);
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3745 }
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3746
12124
97ff43883157 [gaim-migrate @ 14424]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12119
diff changeset
3747 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3748 gtk_blist_window_key_press_cb(GtkWidget *w, GdkEventKey *event, PidginBuddyList *gtkblist)
12461
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3749 {
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3750 GtkWidget *imhtml;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3751
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3752 if (!gtkblist)
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3753 return FALSE;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3754
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3755 imhtml = gtk_window_get_focus(GTK_WINDOW(gtkblist->window));
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3756
12474
630f34dde22d [gaim-migrate @ 14785]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12473
diff changeset
3757 if (GTK_IS_IMHTML(imhtml) && gtk_bindings_activate(GTK_OBJECT(imhtml), event->keyval, event->state))
12461
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3758 return TRUE;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3759 return FALSE;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3760 }
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3761
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3762 static gboolean
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3763 headline_hover_close(int x, int y)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3764 {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3765 GtkWidget *w = gtkblist->headline_hbox;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3766 if (x <= w->allocation.width && x >= w->allocation.width - HEADLINE_CLOSE_SIZE &&
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3767 y >= 0 && y <= HEADLINE_CLOSE_SIZE)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3768 return TRUE;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3769 return FALSE;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3770 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3771
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3772 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3773 headline_box_enter_cb(GtkWidget *widget, GdkEventCrossing *event, PidginBuddyList *gtkblist)
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3774 {
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3775 gdk_window_set_cursor(widget->window, gtkblist->hand_cursor);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3776
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3777 if (gtkblist->headline_close) {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3778 #if GTK_CHECK_VERSION(2,2,0)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3779 gdk_draw_pixbuf(widget->window, NULL, gtkblist->headline_close,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3780 #else
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3781 gdk_pixbuf_render_to_drawable(gtkblist->headline_close,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3782 GDK_DRAWABLE(widget->window), NULL,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3783 #endif
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3784 0, 0,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3785 widget->allocation.width - 2 - HEADLINE_CLOSE_SIZE, 2,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3786 HEADLINE_CLOSE_SIZE, HEADLINE_CLOSE_SIZE,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3787 GDK_RGB_DITHER_NONE, 0, 0);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3788 gtk_paint_focus(widget->style, widget->window, GTK_STATE_PRELIGHT,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3789 NULL, widget, NULL,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3790 widget->allocation.width - HEADLINE_CLOSE_SIZE - 3, 1,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3791 HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3792 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3793
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3794 return FALSE;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3795 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3796
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3797 #if 0
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3798 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3799 headline_box_motion_cb(GtkWidget *widget, GdkEventMotion *event, PidginBuddyList *gtkblist)
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3800 {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3801 gaim_debug_fatal("motion", "%d %d\n", (int)event->x, (int)event->y);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3802 if (headline_hover_close((int)event->x, (int)event->y))
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3803 gtk_paint_focus(widget->style, widget->window, GTK_STATE_PRELIGHT,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3804 NULL, widget, NULL,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3805 widget->allocation.width - HEADLINE_CLOSE_SIZE - 3, 1,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3806 HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3807 return FALSE;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3808 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3809 #endif
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3810
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3811 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3812 headline_box_leave_cb(GtkWidget *widget, GdkEventCrossing *event, PidginBuddyList *gtkblist)
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3813 {
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3814 gdk_window_set_cursor(widget->window, gtkblist->arrow_cursor);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3815 if (gtkblist->headline_close) {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3816 GdkRectangle rect = {widget->allocation.width - 3 - HEADLINE_CLOSE_SIZE, 1,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3817 HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2};
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3818 gdk_window_invalidate_rect(widget->window, &rect, TRUE);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3819 }
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3820 return FALSE;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3821 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3822
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3823 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3824 reset_headline(PidginBuddyList *gtkblist)
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3825 {
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3826 gtkblist->headline_callback = NULL;
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3827 gtkblist->headline_data = NULL;
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3828 gtkblist->headline_destroy = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3829 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), FALSE);
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3830 }
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3831
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3832 static gboolean
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3833 headline_click_callback(gpointer data)
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3834 {
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3835 ((GSourceFunc)gtkblist->headline_callback)(gtkblist->headline_data);
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3836 reset_headline(gtkblist);
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3837 return FALSE;
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3838 }
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3839
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3840 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3841 headline_box_press_cb(GtkWidget *widget, GdkEventButton *event, PidginBuddyList *gtkblist)
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3842 {
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3843 gtk_widget_hide(gtkblist->headline_hbox);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3844 if (gtkblist->headline_callback && !headline_hover_close((int)event->x, (int)event->y))
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3845 g_idle_add((GSourceFunc)headline_click_callback, gtkblist->headline_data);
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3846 else {
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3847 if (gtkblist->headline_destroy)
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3848 gtkblist->headline_destroy(gtkblist->headline_data);
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3849 reset_headline(gtkblist);
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3850 }
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3851 return TRUE;
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3852 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3853
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3854 /***********************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3855 /* Connection error handling stuff */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3856 /***********************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3857
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3858 static void
13316
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3859 ce_modify_account_cb(GaimAccount *account)
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3860 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3861 pidgin_account_dialog_show(PIDGIN_MODIFY_ACCOUNT_DIALOG, account);
13316
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3862 }
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3863
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3864 static void
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3865 ce_enable_account_cb(GaimAccount *account)
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3866 {
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3867 gaim_account_set_enabled(account, gaim_core_get_ui(), TRUE);
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3868 }
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3869
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3870 static void
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3871 connection_error_button_clicked_cb(GtkButton *widget, gpointer user_data)
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3872 {
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3873 GaimAccount *account;
13023
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3874 char *primary;
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3875 const char *text;
13732
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3876 gboolean enabled;
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3877
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3878 account = user_data;
13023
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3879 primary = g_strdup_printf(_("%s disconnected"),
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3880 gaim_account_get_username(account));
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3881 text = g_hash_table_lookup(gtkblist->connection_errors, account);
13376
4b4c3c4d068e [gaim-migrate @ 15748]
Mark Doliner <markdoliner@pidgin.im>
parents: 13337
diff changeset
3882
13732
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3883 enabled = gaim_account_get_enabled(account, gaim_core_get_ui());
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3884 gaim_request_action(account, _("Connection Error"), primary, text, 2,
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3885 account, 3,
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3886 _("OK"), NULL,
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3887 _("Modify Account"), GAIM_CALLBACK(ce_modify_account_cb),
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3888 enabled ? _("Connect") : _("Re-enable Account"),
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3889 enabled ? GAIM_CALLBACK(gaim_account_connect) :
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3890 GAIM_CALLBACK(ce_enable_account_cb));
13630
b41b3225c2ce [gaim-migrate @ 16016]
Daniel Atallah <datallah@pidgin.im>
parents: 13613
diff changeset
3891 g_free(primary);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3892 gtk_widget_destroy(GTK_WIDGET(widget));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3893 g_hash_table_remove(gtkblist->connection_errors, account);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3894 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3895
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3896 /* Add some buttons that show connection errors */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3897 static void
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3898 create_connection_error_buttons(gpointer key, gpointer value,
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3899 gpointer user_data)
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3900 {
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3901 GaimAccount *account;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
3902 GaimStatusType *status_type;
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
3903 gchar *escaped, *text;
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3904 GtkWidget *button, *label, *image, *hbox;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
3905 GdkPixbuf *pixbuf;
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3906
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3907 account = key;
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3908 escaped = g_markup_escape_text((const gchar *)value, -1);
13023
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3909 text = g_strdup_printf(_("<span color=\"red\">%s disconnected: %s</span>"),
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3910 gaim_account_get_username(account),
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3911 escaped);
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3912 g_free(escaped);
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3913
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3914 hbox = gtk_hbox_new(FALSE, 0);
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3915
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3916 /* Create the icon */
14137
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3917 if ((status_type = gaim_account_get_status_type_with_primitive(account,
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3918 GAIM_STATUS_OFFLINE))) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3919 pixbuf = pidgin_create_prpl_icon_with_status(account, status_type, 0.5);
14137
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3920 if (pixbuf != NULL) {
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3921 image = gtk_image_new_from_pixbuf(pixbuf);
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3922 g_object_unref(pixbuf);
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3923
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3924 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE,
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3925 GAIM_HIG_BOX_SPACE);
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3926 }
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3927 }
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3928
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3929 /* Create the text */
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3930 label = gtk_label_new("");
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3931 gtk_label_set_markup(GTK_LABEL(label), text);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3932 g_free(text);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3933 #if GTK_CHECK_VERSION(2,6,0)
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3934 g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3935 #endif
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3936 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE,
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3937 GAIM_HIG_BOX_SPACE);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3938
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3939 /* Create the actual button and put the icon and text on it */
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3940 button = gtk_button_new();
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3941 gtk_container_add(GTK_CONTAINER(button), hbox);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3942 g_signal_connect(G_OBJECT(button), "clicked",
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3943 G_CALLBACK(connection_error_button_clicked_cb),
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3944 account);
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3945 gtk_widget_show_all(button);
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3946 gtk_box_pack_end(GTK_BOX(gtkblist->error_buttons), button,
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3947 FALSE, FALSE, 0);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3948 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3949
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3950 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3951 pidgin_blist_update_account_error_state(GaimAccount *account, const char *text)
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3952 {
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3953 GList *l;
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3954
13016
29dd619e4d41 [gaim-migrate @ 15369]
Mark Doliner <markdoliner@pidgin.im>
parents: 13015
diff changeset
3955 if (text == NULL)
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3956 g_hash_table_remove(gtkblist->connection_errors, account);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3957 else
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3958 g_hash_table_insert(gtkblist->connection_errors, account, g_strdup(text));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3959
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3960 /* Remove the old error buttons */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3961 for (l = gtk_container_get_children(GTK_CONTAINER(gtkblist->error_buttons));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3962 l != NULL;
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3963 l = l->next)
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3964 {
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3965 gtk_widget_destroy(GTK_WIDGET(l->data));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3966 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3967
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3968 /* Add new error buttons */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3969 g_hash_table_foreach(gtkblist->connection_errors,
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3970 create_connection_error_buttons, NULL);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3971 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3972
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3973 static gboolean
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3974 paint_headline_hbox (GtkWidget *widget,
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
3975 GdkEventExpose *event,
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3976 gpointer user_data)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3977 {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3978 gtk_paint_flat_box (widget->style,
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3979 widget->window,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3980 GTK_STATE_NORMAL,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3981 GTK_SHADOW_OUT,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3982 NULL,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3983 widget,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3984 "tooltip",
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3985 widget->allocation.x + 1,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3986 widget->allocation.y + 1,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3987 widget->allocation.width - 2,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3988 widget->allocation.height - 2);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3989 return FALSE;
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3990 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3991
15621
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3992 /* This assumes there are not things like groupless buddies or multi-leveled groups.
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3993 * I'm sure other things in this code assumes that also.
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3994 */
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3995 static void
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3996 treeview_style_set (GtkWidget *widget,
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3997 GtkStyle *prev_style,
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3998 gpointer data)
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
3999 {
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4000 GaimBuddyList *list = data;
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4001 GaimBlistNode *node = list->root;
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4002 while (node) {
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4003 pidgin_blist_update_group(list, node);
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4004 node = node->next;
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4005 }
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4006 }
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4007
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4008 static void
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4009 headline_style_set (GtkWidget *widget,
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4010 GtkStyle *prev_style)
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4011 {
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4012 GtkTooltips *tooltips;
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4013 GtkStyle *style;
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4014
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4015 if (gtkblist->changing_style)
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4016 return;
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4017
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4018 tooltips = gtk_tooltips_new ();
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4019 #if GLIB_CHECK_VERSION(2,10,0)
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4020 g_object_ref_sink (tooltips);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4021 #else
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4022 g_object_ref(tooltips);
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4023 gtk_object_sink(GTK_OBJECT(tooltips));
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4024 #endif
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4025
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4026 gtk_tooltips_force_window (tooltips);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4027 gtk_widget_ensure_style (tooltips->tip_window);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4028 style = gtk_widget_get_style (tooltips->tip_window);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4029
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4030 gtkblist->changing_style = TRUE;
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4031 gtk_widget_set_style (gtkblist->headline_hbox, style);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4032 gtkblist->changing_style = FALSE;
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4033
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4034 g_object_unref (tooltips);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4035 }
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4036
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4037 /******************************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4038 /* End of connection error handling stuff */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4039 /******************************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4040
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4041 static int
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4042 blist_focus_cb(GtkWidget *widget, gpointer data, PidginBuddyList *gtkblist)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4043 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4044 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), FALSE);
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4045 return 0;
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4046 }
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4047
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4048 #if 0
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4049 static GtkWidget *
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4050 kiosk_page()
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4051 {
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4052 GtkWidget *ret = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4053 GtkWidget *label;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4054 GtkWidget *entry;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4055 GtkWidget *bbox;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4056 GtkWidget *button;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4057
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4058 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4059 gtk_box_pack_start(GTK_BOX(ret), label, TRUE, TRUE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4060
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4061 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4062 gtk_label_set_markup(GTK_LABEL(label), _("<b>Username:</b>"));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4063 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4064 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4065 entry = gtk_entry_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4066 gtk_box_pack_start(GTK_BOX(ret), entry, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4067
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4068 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4069 gtk_label_set_markup(GTK_LABEL(label), _("<b>Password:</b>"));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4070 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4071 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4072 entry = gtk_entry_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4073 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4074 gtk_box_pack_start(GTK_BOX(ret), entry, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4075
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4076 label = gtk_label_new(" ");
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4077 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4078
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4079 bbox = gtk_hbutton_box_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4080 button = gtk_button_new_with_mnemonic(_("_Login"));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4081 gtk_box_pack_start(GTK_BOX(ret), bbox, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4082 gtk_container_add(GTK_CONTAINER(bbox), button);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4083
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4084
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4085 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4086 gtk_box_pack_start(GTK_BOX(ret), label, TRUE, TRUE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4087
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4088 gtk_container_set_border_width(GTK_CONTAINER(ret), GAIM_HIG_BORDER);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4089
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4090 gtk_widget_show_all(ret);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4091 return ret;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4092 }
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4093 #endif
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4094
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4095 static void pidgin_blist_show(GaimBuddyList *list)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4096 {
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4097 void *handle;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4098 GtkCellRenderer *rend;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4099 GtkTreeViewColumn *column;
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4100 GtkWidget *menu;
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4101 GtkWidget *ebox;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4102 GtkWidget *sw;
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14603
diff changeset
4103 GtkWidget *sep;
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4104 GtkWidget *label;
15091
5eb0bf57d5a2 [gaim-migrate @ 17812]
Sean Egan <seanegan@pidgin.im>
parents: 15089
diff changeset
4105 GList *accounts;
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4106 char *pretty;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4107 GtkAccelGroup *accel_group;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4108 GtkTreeSelection *selection;
9556
26e2e1141081 [gaim-migrate @ 10392]
Sean Egan <seanegan@pidgin.im>
parents: 9533
diff changeset
4109 GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
4110 {"application/x-im-contact", 0, DRAG_BUDDY},
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
4111 {"text/x-vcard", 0, DRAG_VCARD },
9525
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9498
diff changeset
4112 {"text/uri-list", 0, DRAG_URI},
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9498
diff changeset
4113 {"text/plain", 0, DRAG_TEXT}};
9556
26e2e1141081 [gaim-migrate @ 10392]
Sean Egan <seanegan@pidgin.im>
parents: 9533
diff changeset
4114 GtkTargetEntry ste[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
26e2e1141081 [gaim-migrate @ 10392]
Sean Egan <seanegan@pidgin.im>
parents: 9533
diff changeset
4115 {"application/x-im-contact", 0, DRAG_BUDDY},
26e2e1141081 [gaim-migrate @ 10392]
Sean Egan <seanegan@pidgin.im>
parents: 9533
diff changeset
4116 {"text/x-vcard", 0, DRAG_VCARD }};
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4117 if (gtkblist && gtkblist->window) {
12119
2c6a406ec4c8 [gaim-migrate @ 14419]
Etan Reisner <deryni@pidgin.im>
parents: 12117
diff changeset
4118 gaim_blist_set_visible(gaim_prefs_get_bool("/gaim/gtk/blist/list_visible"));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4119 return;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4120 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4121
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4122 gtkblist = PIDGIN_BLIST(list);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4123
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
4124 gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
4125 gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4126
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4127 gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4128 gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list");
9746
c4f6dab73e01 [gaim-migrate @ 10611]
Luke Schierer <lschiere@pidgin.im>
parents: 9737
diff changeset
4129 gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List"));
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4130 g_signal_connect(G_OBJECT(gtkblist->window), "focus-in-event",
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4131 G_CALLBACK(blist_focus_cb), gtkblist);
12328
4a2611214a15 [gaim-migrate @ 14632]
Nathan Walp <nwalp@pidgin.im>
parents: 12326
diff changeset
4132 GTK_WINDOW(gtkblist->window)->allow_shrink = TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4133
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4134 gtkblist->main_vbox = gtk_vbox_new(FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4135 gtk_widget_show(gtkblist->main_vbox);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4136 gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->main_vbox);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4137
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4138 g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4139 g_signal_connect(G_OBJECT(gtkblist->window), "configure_event", G_CALLBACK(gtk_blist_configure_cb), NULL);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4140 g_signal_connect(G_OBJECT(gtkblist->window), "visibility_notify_event", G_CALLBACK(gtk_blist_visibility_cb), NULL);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4141 g_signal_connect(G_OBJECT(gtkblist->window), "window_state_event", G_CALLBACK(gtk_blist_window_state_cb), NULL);
12461
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
4142 g_signal_connect(G_OBJECT(gtkblist->window), "key_press_event", G_CALLBACK(gtk_blist_window_key_press_cb), gtkblist);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4143 gtk_widget_add_events(gtkblist->window, GDK_VISIBILITY_NOTIFY_MASK);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4144
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4145 /******************************* Menu bar *************************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4146 accel_group = gtk_accel_group_new();
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4147 gtk_window_add_accel_group(GTK_WINDOW (gtkblist->window), accel_group);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4148 g_object_unref(accel_group);
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4149 gtkblist->ift = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<GaimMain>", accel_group);
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4150 gtk_item_factory_set_translate_func(gtkblist->ift,
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
4151 (GtkTranslateFunc)item_factory_translate_func,
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4152 NULL, NULL);
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4153 gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4154 blist_menu, NULL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4155 pidgin_load_accels();
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4156 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4157 G_CALLBACK(pidgin_save_accels_cb), NULL);
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4158 menu = gtk_item_factory_get_widget(gtkblist->ift, "<GaimMain>");
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4159 gtkblist->menutray = pidgin_menu_tray_new();
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4160 gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray);
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4161 gtk_widget_show(gtkblist->menutray);
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4162 gtk_widget_show(menu);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4163 gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), menu, FALSE, FALSE, 0);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4164
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
4165 accountmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts"));
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
4166
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4167
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4168 /****************************** Notebook *************************************/
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4169 gtkblist->notebook = gtk_notebook_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4170 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkblist->notebook), FALSE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4171 gtk_notebook_set_show_border(GTK_NOTEBOOK(gtkblist->notebook), FALSE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4172 gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), gtkblist->notebook, TRUE, TRUE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4173
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4174 #if 0
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4175 gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), kiosk_page(), NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4176 #endif
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4177
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4178 /* Translators: Please maintain the use of -> and <- to refer to menu heirarchy */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4179 pretty = pidgin_make_pretty_arrows(_("<span weight='bold' size='larger'>Welcome to " PIDGIN_NAME "!</span>\n\n"
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4180
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4181 "You have no accounts enabled. Enable your IM accounts from the "
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4182 "<b>Accounts</b> window at <b>Accounts->Add/Edit</b>. Once you "
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4183 "enable accounts, you'll be able to sign on, set your status, "
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4184 "and talk to your friends."));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4185 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4186 gtk_widget_set_size_request(label, gaim_prefs_get_int("/gaim/gtk/blist/width") - 12, -1);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4187 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4188 gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.2);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4189 gtk_label_set_markup(GTK_LABEL(label), pretty);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4190 g_free(pretty);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4191 gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook),label, NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4192 gtkblist->vbox = gtk_vbox_new(FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4193 gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), gtkblist->vbox, NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4194 gtk_widget_show_all(gtkblist->notebook);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
4195 if ((accounts = gaim_accounts_get_all_active())) {
15091
5eb0bf57d5a2 [gaim-migrate @ 17812]
Sean Egan <seanegan@pidgin.im>
parents: 15089
diff changeset
4196 g_list_free(accounts);
15089
0522a7934420 [gaim-migrate @ 17810]
Sean Egan <seanegan@pidgin.im>
parents: 15088
diff changeset
4197 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1);
15091
5eb0bf57d5a2 [gaim-migrate @ 17812]
Sean Egan <seanegan@pidgin.im>
parents: 15089
diff changeset
4198 }
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4199
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4200 ebox = gtk_event_box_new();
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4201 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), ebox, FALSE, FALSE, 0);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4202 gtkblist->headline_hbox = gtk_hbox_new(FALSE, 3);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4203 gtk_container_set_border_width(GTK_CONTAINER(gtkblist->headline_hbox), 6);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4204 gtk_container_add(GTK_CONTAINER(ebox), gtkblist->headline_hbox);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4205 gtkblist->headline_image = gtk_image_new_from_pixbuf(NULL);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4206 gtk_misc_set_alignment(GTK_MISC(gtkblist->headline_image), 0.0, 0);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4207 gtkblist->headline_label = gtk_label_new(NULL);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4208 gtk_widget_set_size_request(gtkblist->headline_label,
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4209 gaim_prefs_get_int("/gaim/gtk/blist/width")-25,-1);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4210 gtk_label_set_line_wrap(GTK_LABEL(gtkblist->headline_label), TRUE);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4211 gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_image, FALSE, FALSE, 0);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4212 gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_label, TRUE, TRUE, 0);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4213 g_signal_connect(gtkblist->headline_hbox,
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4214 "style-set",
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4215 G_CALLBACK(headline_style_set),
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4216 NULL);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4217 g_signal_connect (gtkblist->headline_hbox,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4218 "expose_event",
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4219 G_CALLBACK (paint_headline_hbox),
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4220 NULL);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4221 gtk_widget_set_name(gtkblist->headline_hbox, "gtk-tooltips");
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4222
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4223 gtkblist->headline_close = gtk_widget_render_icon(ebox, GTK_STOCK_CLOSE, -1, NULL);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4224 if (gtkblist->headline_close) {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4225 GdkPixbuf *scale = gdk_pixbuf_scale_simple(gtkblist->headline_close,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4226 HEADLINE_CLOSE_SIZE, HEADLINE_CLOSE_SIZE, GDK_INTERP_BILINEAR);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4227 gdk_pixbuf_unref(gtkblist->headline_close);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4228 gtkblist->headline_close = scale;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4229 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4230
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4231 gtkblist->hand_cursor = gdk_cursor_new (GDK_HAND2);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4232 gtkblist->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4233
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4234 g_signal_connect(G_OBJECT(ebox), "enter-notify-event", G_CALLBACK(headline_box_enter_cb), gtkblist);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4235 g_signal_connect(G_OBJECT(ebox), "leave-notify-event", G_CALLBACK(headline_box_leave_cb), gtkblist);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4236 g_signal_connect(G_OBJECT(ebox), "button-press-event", G_CALLBACK(headline_box_press_cb), gtkblist);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4237 #if 0
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4238 /* I couldn't get this to work. The idea was to draw the focus-border only
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4239 * when hovering over the close image. So for now, the focus-border is
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4240 * always there. -- sad */
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4241 gtk_widget_set_events(ebox, gtk_widget_get_events(ebox) | GDK_POINTER_MOTION_HINT_MASK);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4242 g_signal_connect(G_OBJECT(ebox), "motion-notify-event", G_CALLBACK(headline_box_motion_cb), gtkblist);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4243 #endif
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4244
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4245 /****************************** GtkTreeView **********************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4246 sw = gtk_scrolled_window_new(NULL,NULL);
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4247 gtk_widget_show(sw);
14476
4a36547d336c [gaim-migrate @ 17122]
Sean Egan <seanegan@pidgin.im>
parents: 14471
diff changeset
4248 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4249 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4250
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4251 gtkblist->treemodel = gtk_tree_store_new(BLIST_COLUMNS,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4252 GDK_TYPE_PIXBUF, /* Status icon */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4253 G_TYPE_BOOLEAN, /* Status icon visible */
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4254 G_TYPE_STRING, /* Name */
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4255 G_TYPE_STRING, /* Idle */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4256 G_TYPE_BOOLEAN, /* Idle visible */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4257 GDK_TYPE_PIXBUF, /* Buddy icon */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4258 G_TYPE_BOOLEAN, /* Buddy icon visible */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4259 G_TYPE_POINTER, /* Node */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4260 GDK_TYPE_COLOR, /* bgcolor */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4261 G_TYPE_BOOLEAN, /* Group expander */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4262 G_TYPE_BOOLEAN, /* Contact expander */
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4263 G_TYPE_BOOLEAN, /* Contact expander visible */
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4264 GDK_TYPE_PIXBUF, /* Emblem */
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4265 G_TYPE_BOOLEAN); /* Emblem visible */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4266
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4267 gtkblist->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtkblist->treemodel));
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
4268
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4269 gtk_widget_show(gtkblist->treeview);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4270 gtk_widget_set_name(gtkblist->treeview, "pidginblist_treeview");
15621
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4271
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4272 g_signal_connect(gtkblist->treeview,
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4273 "style-set",
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4274 G_CALLBACK(treeview_style_set), list);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4275 /* Set up selection stuff */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4276 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4277 g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(pidgin_blist_selection_changed), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4278
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4279 /* Set up dnd */
7650
bd193cc04594 [gaim-migrate @ 8293]
Mark Doliner <markdoliner@pidgin.im>
parents: 7642
diff changeset
4280 gtk_tree_view_enable_model_drag_source(GTK_TREE_VIEW(gtkblist->treeview),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4281 GDK_BUTTON1_MASK, ste, 3,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4282 GDK_ACTION_COPY);
7650
bd193cc04594 [gaim-migrate @ 8293]
Mark Doliner <markdoliner@pidgin.im>
parents: 7642
diff changeset
4283 gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(gtkblist->treeview),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4284 dte, 5,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4285 GDK_ACTION_COPY | GDK_ACTION_MOVE);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
4286
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4287 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-received", G_CALLBACK(pidgin_blist_drag_data_rcv_cb), NULL);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4288 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-get", G_CALLBACK(pidgin_blist_drag_data_get_cb), NULL);
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
4289 #ifdef _WIN32
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4290 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-begin", G_CALLBACK(pidgin_blist_drag_begin), NULL);
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
4291 #endif
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
4292
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4293 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-motion", G_CALLBACK(pidgin_blist_drag_motion_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4294
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4295 /* Tooltips */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4296 g_signal_connect(G_OBJECT(gtkblist->treeview), "motion-notify-event", G_CALLBACK(pidgin_blist_motion_cb), NULL);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4297 g_signal_connect(G_OBJECT(gtkblist->treeview), "leave-notify-event", G_CALLBACK(pidgin_blist_leave_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4298
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4299 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(gtkblist->treeview), FALSE);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4300
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4301 column = gtk_tree_view_column_new();
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4302 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4303 gtk_tree_view_column_set_visible(column, FALSE);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4304 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(gtkblist->treeview), column);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4305
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4306 gtkblist->text_column = column = gtk_tree_view_column_new ();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4307 rend = pidgin_cell_renderer_expander_new();
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4308 gtk_tree_view_column_pack_start(column, rend, FALSE);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4309 gtk_tree_view_column_set_attributes(column, rend,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4310 "expander-visible", GROUP_EXPANDER_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4311 #if GTK_CHECK_VERSION(2,6,0)
14626
964677efbddf [gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14624
diff changeset
4312 "sensitive", GROUP_EXPANDER_COLUMN,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4313 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4314 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4315 NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4316
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4317 rend = pidgin_cell_renderer_expander_new();
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4318 gtk_tree_view_column_pack_start(column, rend, FALSE);
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4319 gtk_tree_view_column_set_attributes(column, rend,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4320 "expander-visible", CONTACT_EXPANDER_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4321 #if GTK_CHECK_VERSION(2,6,0)
14626
964677efbddf [gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14624
diff changeset
4322 "sensitive", CONTACT_EXPANDER_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4323 "cell-background-gdk", BGCOLOR_COLUMN,
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4324 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4325 "visible", CONTACT_EXPANDER_VISIBLE_COLUMN,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4326 NULL);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4327
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4328 rend = gtk_cell_renderer_pixbuf_new();
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4329 gtk_tree_view_column_pack_start(column, rend, FALSE);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4330 gtk_tree_view_column_set_attributes(column, rend,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4331 "pixbuf", STATUS_ICON_COLUMN,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4332 "visible", STATUS_ICON_VISIBLE_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4333 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4334 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4335 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4336 NULL);
15464
30e5a8866161 add some padding between icon and name columns
Sean Egan <seanegan@pidgin.im>
parents: 15458
diff changeset
4337 g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4338
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4339 gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4340 gtk_tree_view_column_pack_start (column, rend, TRUE);
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4341 gtk_tree_view_column_set_attributes(column, rend,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4342 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4343 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4344 #endif
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4345 "markup", NAME_COLUMN,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4346 NULL);
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4347 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4348 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
10285
22d4d807c5c3 [gaim-migrate @ 11456]
Sean Egan <seanegan@pidgin.im>
parents: 10282
diff changeset
4349 #if GTK_CHECK_VERSION(2,6,0)
10501
0dd069ed110e [gaim-migrate @ 11793]
Sean Egan <seanegan@pidgin.im>
parents: 10499
diff changeset
4350 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10285
22d4d807c5c3 [gaim-migrate @ 11456]
Sean Egan <seanegan@pidgin.im>
parents: 10282
diff changeset
4351 #endif
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4352 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4353
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4354 rend = gtk_cell_renderer_text_new();
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4355 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4356 gtk_tree_view_column_pack_start(column, rend, FALSE);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4357 gtk_tree_view_column_set_attributes(column, rend,
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4358 "markup", IDLE_COLUMN,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4359 "visible", IDLE_VISIBLE_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4360 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4361 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4362 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4363 NULL);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4364
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4365 rend = gtk_cell_renderer_pixbuf_new();
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4366 g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, NULL);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4367 gtk_tree_view_column_pack_start(column, rend, FALSE);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4368 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4369 #if GTK_CHECK_VERSION(2,6,0)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4370 "cell-background-gdk", BGCOLOR_COLUMN,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4371 #endif
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4372 "visible", EMBLEM_VISIBLE_COLUMN, NULL);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4373
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4374 rend = gtk_cell_renderer_pixbuf_new();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4375 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4376 gtk_tree_view_column_pack_start(column, rend, FALSE);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4377 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4378 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4379 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4380 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4381 "visible", BUDDY_ICON_VISIBLE_COLUMN,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4382 NULL);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4383
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4384
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4385 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4386 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4387 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-collapsed", G_CALLBACK(gtk_blist_row_collapsed_cb), NULL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4388 g_signal_connect(G_OBJECT(gtkblist->treeview), "button-press-event", G_CALLBACK(gtk_blist_button_press_cb), NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4389 g_signal_connect(G_OBJECT(gtkblist->treeview), "key-press-event", G_CALLBACK(gtk_blist_key_press_cb), NULL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4390 g_signal_connect(G_OBJECT(gtkblist->treeview), "popup-menu", G_CALLBACK(pidgin_blist_popup_menu_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4391
5419
062efd736788 [gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents: 5398
diff changeset
4392 /* Enable CTRL+F searching */
062efd736788 [gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents: 5398
diff changeset
4393 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4394 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(gtkblist->treeview), pidgin_tree_view_search_equal_func, NULL, NULL);
5419
062efd736788 [gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents: 5398
diff changeset
4395
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4396 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4397 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4398
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4399 sep = gtk_hseparator_new();
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4400 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sep, FALSE, FALSE, 0);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4401
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
4402 gtkblist->scrollbook = pidgin_scroll_book_new();
15096
128dd2bdf71d [gaim-migrate @ 17817]
Sean Egan <seanegan@pidgin.im>
parents: 15094
diff changeset
4403 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->scrollbook, FALSE, FALSE, 0);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4404
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4405 /* Create an empty vbox used for showing connection errors */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4406 gtkblist->error_buttons = gtk_vbox_new(FALSE, 0);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4407 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->error_buttons, FALSE, FALSE, 0);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4408
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4409 /* Add the statusbox */
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
4410 gtkblist->statusbox = pidgin_status_box_new();
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14137
diff changeset
4411 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->statusbox, FALSE, TRUE, 0);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4412 gtk_widget_set_name(gtkblist->statusbox, "pidginblist_statusbox");
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14603
diff changeset
4413 gtk_container_set_border_width(GTK_CONTAINER(gtkblist->statusbox), 3);
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4414 gtk_widget_show(gtkblist->statusbox);
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
4415
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4416 /* set the Show Offline Buddies option. must be done
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4417 * after the treeview or faceprint gets mad. -Robot101
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4418 */
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4419 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))),
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4420 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4421
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4422 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Empty Groups"))),
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4423 gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4424
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4425 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Tools/Mute Sounds"))),
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4426 gaim_prefs_get_bool("/gaim/gtk/sound/mute"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4427
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
4428 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Buddy Details"))),
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11917
diff changeset
4429 gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4430
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4431 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Idle Times"))),
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4432 gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time"));
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4433
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4434 if(!strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none"))
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
4435 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4436
10353
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
4437 /* Update some dynamic things */
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
4438 update_menu_bar(gtkblist);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4439 pidgin_blist_update_plugin_actions();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4440 pidgin_blist_update_sort_methods();
10353
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
4441
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4442 /* OK... let's show this bad boy. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4443 pidgin_blist_refresh(list);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4444 pidgin_blist_restore_position();
14543
cc2f90ffee6f [gaim-migrate @ 17200]
Casey Harkins <charkins@pidgin.im>
parents: 14526
diff changeset
4445 gtk_widget_show_all(GTK_WIDGET(gtkblist->vbox));
14574
4a60d4fadfc4 [gaim-migrate @ 17232]
Casey Harkins <charkins@pidgin.im>
parents: 14543
diff changeset
4446 gtk_widget_realize(GTK_WIDGET(gtkblist->window));
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4447 gaim_blist_set_visible(gaim_prefs_get_bool("/gaim/gtk/blist/list_visible"));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4448
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4449 /* start the refresh timer */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4450 gtkblist->refresh_timer = g_timeout_add(30000, (GSourceFunc)pidgin_blist_refresh_timer, list);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4451
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4452 handle = pidgin_blist_get_handle();
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4453
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4454 /* things that affect how buddies are displayed */
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4455 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons",
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4456 _prefs_change_redo_list, NULL);
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4457 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time",
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4458 _prefs_change_redo_list, NULL);
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4459 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_empty_groups",
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4460 _prefs_change_redo_list, NULL);
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4461 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_offline_buddies",
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4462 _prefs_change_redo_list, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4463
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4464 /* sorting */
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4465 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/sort_type",
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4466 _prefs_change_sort_method, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4467
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4468 /* menus */
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4469 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/mute",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4470 pidgin_blist_mute_pref_cb, NULL);
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4471 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/method",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4472 pidgin_blist_sound_method_pref_cb, NULL);
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4473
8259
7ed91862683d [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
4474 /* Setup some gaim signal handlers. */
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
4475 gaim_signal_connect(gaim_accounts_get_handle(), "account-enabled",
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4476 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12070
e678eea4d899 [gaim-migrate @ 14365]
Tim Ringenbach <marv@pidgin.im>
parents: 12043
diff changeset
4477 gaim_signal_connect(gaim_accounts_get_handle(), "account-disabled",
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4478 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12226
ab8852804f8d [gaim-migrate @ 14528]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12208
diff changeset
4479 gaim_signal_connect(gaim_accounts_get_handle(), "account-removed",
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4480 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12766
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
4481 gaim_signal_connect(gaim_accounts_get_handle(), "account-status-changed",
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
4482 gtkblist, GAIM_CALLBACK(account_status_changed), gtkblist);
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
4483
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4484 gaim_signal_connect(pidgin_account_get_handle(), "account-modified",
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
4485 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12070
e678eea4d899 [gaim-migrate @ 14365]
Tim Ringenbach <marv@pidgin.im>
parents: 12043
diff changeset
4486
8937
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
4487 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
4488 gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
4489 gaim_signal_connect(gaim_connections_get_handle(), "signed-off",
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
4490 gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
4491
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
4492 gaim_signal_connect(gaim_plugins_get_handle(), "plugin-load",
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
4493 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL);
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
4494 gaim_signal_connect(gaim_plugins_get_handle(), "plugin-unload",
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
4495 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL);
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
4496
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4497 gaim_signal_connect(gaim_conversations_get_handle(), "conversation-updated",
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4498 gtkblist, GAIM_CALLBACK(conversation_updated_cb),
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4499 gtkblist);
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
4500 gaim_signal_connect(gaim_conversations_get_handle(), "deleting-conversation",
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
4501 gtkblist, GAIM_CALLBACK(conversation_deleting_cb),
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
4502 gtkblist);
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4503
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4504 gtk_widget_hide(gtkblist->headline_hbox);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4505
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
4506 /* emit our created signal */
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4507 gaim_signal_emit(handle, "gtkblist-created", list);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4508 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4509
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4510 static void redo_buddy_list(GaimBuddyList *list, gboolean remove, gboolean rerender)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4511 {
15307
57f6de61c714 [gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents: 15306
diff changeset
4512 GaimBlistNode *node;
57f6de61c714 [gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents: 15306
diff changeset
4513
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4514 gtkblist = PIDGIN_BLIST(list);
15306
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
4515 if(!gtkblist || !gtkblist->treeview)
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
4516 return;
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
4517
15307
57f6de61c714 [gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents: 15306
diff changeset
4518 node = list->root;
12112
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4519
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4520 while (node)
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4521 {
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4522 /* This is only needed when we're reverting to a non-GTK+ sorted
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4523 * status. We shouldn't need to remove otherwise.
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4524 */
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4525 if (remove && !GAIM_BLIST_NODE_IS_GROUP(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4526 pidgin_blist_hide_node(list, node, FALSE);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4527
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4528 if (GAIM_BLIST_NODE_IS_BUDDY(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4529 pidgin_blist_update_buddy(list, node, rerender);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4530 else if (GAIM_BLIST_NODE_IS_CHAT(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4531 pidgin_blist_update(list, node);
14882
bdf4c5ff47e2 [gaim-migrate @ 17587]
Richard Nelson <wabz@pidgin.im>
parents: 14865
diff changeset
4532 else if (GAIM_BLIST_NODE_IS_GROUP(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4533 pidgin_blist_update(list, node);
12112
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4534 node = gaim_blist_node_next(node, FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4535 }
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4536
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4537 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4538
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4539 void pidgin_blist_refresh(GaimBuddyList *list)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
4540 {
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4541 redo_buddy_list(list, FALSE, TRUE);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
4542 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
4543
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4544 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4545 pidgin_blist_update_refresh_timeout()
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4546 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4547 GaimBuddyList *blist;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4548 PidginBuddyList *gtkblist;
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4549
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4550 blist = gaim_get_blist();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4551 gtkblist = PIDGIN_BLIST(gaim_get_blist());
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4552
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4553 gtkblist->refresh_timer = g_timeout_add(30000,(GSourceFunc)pidgin_blist_refresh_timer, blist);
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4554 }
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4555
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4556 static gboolean get_iter_from_node(GaimBlistNode *node, GtkTreeIter *iter) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4557 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4558 GtkTreePath *path;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4559
5263
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4560 if (!gtknode) {
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4561 return FALSE;
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4562 }
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4563
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4564 if (!gtkblist) {
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
4565 gaim_debug_error("gtkblist", "get_iter_from_node was called, but we don't seem to have a blist\n");
5263
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4566 return FALSE;
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4567 }
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4568
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4569 if (!gtknode->row)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4570 return FALSE;
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
4571
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4572
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4573 if ((path = gtk_tree_row_reference_get_path(gtknode->row)) == NULL)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4574 return FALSE;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4575
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4576 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), iter, path)) {
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4577 gtk_tree_path_free(path);
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4578 return FALSE;
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4579 }
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4580 gtk_tree_path_free(path);
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4581 return TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4582 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4583
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4584 static void pidgin_blist_remove(GaimBuddyList *list, GaimBlistNode *node)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4585 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4586 struct _pidgin_blist_node *gtknode = node->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
4587
10222
5371b5459fb9 [gaim-migrate @ 11351]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10209
diff changeset
4588 gaim_request_close_with_handle(node);
5371b5459fb9 [gaim-migrate @ 11351]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10209
diff changeset
4589
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4590 pidgin_blist_hide_node(list, node, TRUE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4591
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4592 if(node->parent)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4593 pidgin_blist_update(list, node->parent);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4594
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4595 /* There's something I don't understand here - Ethan */
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4596 /* Ethan said that back in 2003, but this g_free has been left commented
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4597 * out ever since. I can't find any reason at all why this is bad and
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4598 * valgrind found several reasons why it's good. If this causes problems
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4599 * comment it out again. Stu */
10510
a9d90a5b7556 [gaim-migrate @ 11808]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10504
diff changeset
4600 /* Of course it still causes problems - this breaks dragging buddies into
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4601 * contacts, the dragged buddy mysteriously 'disappears'. Stu. */
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4602 /* I think it's fixed now. Stu. */
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
4603
11915
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4604 if(gtknode) {
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4605 if(gtknode->recent_signonoff_timer > 0)
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4606 gaim_timeout_remove(gtknode->recent_signonoff_timer);
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4607
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4608 g_free(node->ui_data);
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4609 node->ui_data = NULL;
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4610 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4611 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4612
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4613 static gboolean do_selection_changed(GaimBlistNode *new_selection)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4614 {
5254
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4615 GaimBlistNode *old_selection = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4616
5254
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4617 /* test for gtkblist because crazy timeout means we can be called after the blist is gone */
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4618 if (gtkblist && new_selection != gtkblist->selected_node) {
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4619 old_selection = gtkblist->selected_node;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4620 gtkblist->selected_node = new_selection;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4621 if(new_selection)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4622 pidgin_blist_update(NULL, new_selection);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4623 if(old_selection)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4624 pidgin_blist_update(NULL, old_selection);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4625 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4626
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4627 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4628 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4629
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4630 static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4631 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4632 GaimBlistNode *new_selection = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4633 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4634
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4635 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4636 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4637 NODE_COLUMN, &new_selection, -1);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4638 }
5254
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4639
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4640 /* we set this up as a timeout, otherwise the blist flickers */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4641 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4642 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4643
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4644 static gboolean insert_node(GaimBuddyList *list, GaimBlistNode *node, GtkTreeIter *iter)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4645 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4646 GtkTreeIter parent_iter, cur, *curptr = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4647 struct _pidgin_blist_node *gtknode = node->ui_data;
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4648 GtkTreePath *newpath;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4649
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4650 if(!iter)
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4651 return FALSE;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4652
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4653 if(node->parent && !get_iter_from_node(node->parent, &parent_iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4654 return FALSE;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4655
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4656 if(get_iter_from_node(node, &cur))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4657 curptr = &cur;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4658
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4659 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
4660 current_sort_method->func(node, list, parent_iter, curptr, iter);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4661 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
4662 sort_method_none(node, list, parent_iter, curptr, iter);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4664
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4665 if(gtknode != NULL) {
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4666 gtk_tree_row_reference_free(gtknode->row);
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4667 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4668 pidgin_blist_new_node(node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4669 gtknode = (struct _pidgin_blist_node *)node->ui_data;
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4670 }
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4671
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4672 newpath = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4673 iter);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4674 gtknode->row =
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4675 gtk_tree_row_reference_new(GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4676 newpath);
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
4677
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4678 gtk_tree_path_free(newpath);
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4679
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4680 gtk_tree_store_set(gtkblist->treemodel, iter,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4681 NODE_COLUMN, node,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4682 -1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4683
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4684 if(node->parent) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4685 GtkTreePath *expand = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4686 struct _pidgin_blist_node *gtkparentnode = node->parent->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4687
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4688 if(GAIM_BLIST_NODE_IS_GROUP(node->parent)) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
4689 if(!gaim_blist_node_get_bool(node->parent, "collapsed"))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4690 expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4691 } else if(GAIM_BLIST_NODE_IS_CONTACT(node->parent) &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4692 gtkparentnode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4693 expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4694 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4695 if(expand) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
4696 gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), expand, FALSE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4697 gtk_tree_path_free(expand);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4698 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4699 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4700
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4701 return TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4702 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4703
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4704 /*This version of pidgin_blist_update_group can take the original buddy
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4705 or a group, but has much better algorithmic performance with a pre-known buddy*/
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4706 static void pidgin_blist_update_group(GaimBuddyList *list, GaimBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4707 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4708 GaimGroup *group;
8203
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4709 int count;
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4710 gboolean show = FALSE;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4711 GaimBlistNode* gnode;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4712
13982
b1d1248b2789 [gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13951
diff changeset
4713 g_return_if_fail(node != NULL);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4714
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4715 if (GAIM_BLIST_NODE_IS_GROUP(node))
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4716 gnode = node;
13983
9fb130b2a722 [gaim-migrate @ 16434]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13982
diff changeset
4717 else if (GAIM_BLIST_NODE_IS_BUDDY(node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4718 gnode = node->parent->parent;
13983
9fb130b2a722 [gaim-migrate @ 16434]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13982
diff changeset
4719 else if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4720 gnode = node->parent;
13982
b1d1248b2789 [gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13951
diff changeset
4721 else
b1d1248b2789 [gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13951
diff changeset
4722 return;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4723
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4724 group = (GaimGroup*)gnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4725
8203
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4726 if(gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies"))
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4727 count = gaim_blist_get_group_size(group, FALSE);
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4728 else
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4729 count = gaim_blist_get_group_online_count(group);
13196
b34319a69167 [gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13162
diff changeset
4730
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4731 if (count > 0 || gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups"))
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4732 show = TRUE;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4733 else if (GAIM_BLIST_NODE_IS_BUDDY(node)){ /* Or chat? */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4734 if (buddy_is_displayable((GaimBuddy*)node))
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4735 show = TRUE;}
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4736
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4737 if (show) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4738 GtkTreeIter iter;
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4739 GtkTreePath *path;
14722
6f567e2961ae [gaim-migrate @ 17406]
Etan Reisner <deryni@pidgin.im>
parents: 14682
diff changeset
4740 gboolean expanded;
14501
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4741 GdkColor bgcolor;
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4742 char *title;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4743
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4744
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4745 if(!insert_node(list, gnode, &iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4746 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4747
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4748 bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE];
14501
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4749
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4750 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4751 expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path);
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4752 gtk_tree_path_free(path);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4753
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4754 title = gaim_get_group_title(gnode, expanded);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4755
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4756 gtk_tree_store_set(gtkblist->treemodel, &iter,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4757 STATUS_ICON_VISIBLE_COLUMN, FALSE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4758 STATUS_ICON_COLUMN, NULL,
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4759 NAME_COLUMN, title,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4760 NODE_COLUMN, gnode,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4761 BGCOLOR_COLUMN, &bgcolor,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4762 GROUP_EXPANDER_COLUMN, TRUE,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4763 CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4764 BUDDY_ICON_VISIBLE_COLUMN, FALSE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4765 IDLE_VISIBLE_COLUMN, FALSE,
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4766 EMBLEM_VISIBLE_COLUMN, FALSE,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4767 -1);
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4768 g_free(title);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4769 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4770 pidgin_blist_hide_node(list, gnode, TRUE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4771 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4772 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4773
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4774 static char *gaim_get_group_title(GaimBlistNode *gnode, gboolean expanded)
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4775 {
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4776 GaimGroup *group;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4777 GdkColor textcolor;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4778 gboolean selected;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4779 char group_count[12] = "";
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4780 char *mark, *esc;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4781
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4782 group = (GaimGroup*)gnode;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4783 textcolor = gtkblist->treeview->style->fg[GTK_STATE_ACTIVE];
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4784 selected = gtkblist ? (gtkblist->selected_node == gnode) : FALSE;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4785
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4786 if (!expanded) {
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4787 g_snprintf(group_count, sizeof(group_count), " (%d/%d)",
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4788 gaim_blist_get_group_online_count(group),
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4789 gaim_blist_get_group_size(group, FALSE));
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4790 }
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4791
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4792 esc = g_markup_escape_text(group->name, -1);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4793 if (selected)
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4794 mark = g_strdup_printf("<span weight='bold'>%s</span>%s", esc, group_count);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4795 else
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4796 mark = g_strdup_printf("<span color='#%02x%02x%02x' weight='bold'>%s</span>%s",
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4797 textcolor.red>>8, textcolor.green>>8, textcolor.blue>>8,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4798 esc, group_count);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4799
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4800 g_free(esc);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4801 return mark;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4802 }
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4803
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4804 static void buddy_node(GaimBuddy *buddy, GtkTreeIter *iter, GaimBlistNode *node)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4805 {
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4806 GaimPresence *presence;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4807 GdkPixbuf *status, *avatar, *emblem;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4808 char *mark;
11257
9743367c935e [gaim-migrate @ 13432]
Sean Egan <seanegan@pidgin.im>
parents: 11256
diff changeset
4809 char *idle = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4810 gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4811 gboolean selected = (gtkblist->selected_node == node);
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4812 gboolean biglist = gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons");
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4813 presence = gaim_buddy_get_presence(buddy);
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4814
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4815 status = pidgin_blist_get_status_icon((GaimBlistNode*)buddy,
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
4816 PIDGIN_STATUS_ICON_SMALL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4817
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4818 avatar = pidgin_blist_get_buddy_icon((GaimBlistNode *)buddy, TRUE, TRUE, TRUE);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4819 if (!avatar) {
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4820 g_object_ref(G_OBJECT(gtkblist->empty_avatar));
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4821 avatar = gtkblist->empty_avatar;
15552
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4822 } else if ((!GAIM_BUDDY_IS_ONLINE(buddy) || gaim_presence_is_idle(presence))) {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4823 do_alphashift(avatar, avatar, 77);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4824 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4825
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4826 emblem = pidgin_blist_get_emblem((GaimBlistNode*) buddy);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4827 mark = pidgin_blist_get_name_markup(buddy, selected);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4828
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4829 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") &&
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4830 gaim_presence_is_idle(presence) &&
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4831 !gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4832 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4833 time_t idle_secs = gaim_presence_get_idle_time(presence);
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4834
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4835 if (idle_secs > 0)
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4836 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4837 time_t t;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4838 int ihrs, imin;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4839 time(&t);
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4840 ihrs = (t - idle_secs) / 3600;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4841 imin = ((t - idle_secs) / 60) % 60;
13821
3eda6c8a2b75 [gaim-migrate @ 16251]
Richard Laager <rlaager@pidgin.im>
parents: 13792
diff changeset
4842 idle = g_strdup_printf("%d:%02d", ihrs, imin);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4843 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4844 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4845
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
4846 if (gaim_presence_is_idle(presence))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4847 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4848 if (idle && !selected) {
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
4849 char *i2 = g_strdup_printf("<span color='%s'>%s</span>",
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
4850 dim_grey(), idle);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4851 g_free(idle);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4852 idle = i2;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4853 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4854 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4855
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4856 gtk_tree_store_set(gtkblist->treemodel, iter,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4857 STATUS_ICON_COLUMN, status,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4858 STATUS_ICON_VISIBLE_COLUMN, TRUE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4859 NAME_COLUMN, mark,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4860 IDLE_COLUMN, idle,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4861 IDLE_VISIBLE_COLUMN, !biglist && idle,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4862 BUDDY_ICON_COLUMN, avatar,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4863 BUDDY_ICON_VISIBLE_COLUMN, biglist,
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4864 EMBLEM_COLUMN, emblem,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4865 EMBLEM_VISIBLE_COLUMN, emblem,
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4866 BGCOLOR_COLUMN, NULL,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4867 CONTACT_EXPANDER_COLUMN, NULL,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4868 CONTACT_EXPANDER_VISIBLE_COLUMN, expanded,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4869 -1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4870
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4871 g_free(mark);
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4872 g_free(idle);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4873 if(status)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4874 g_object_unref(status);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4875 if(avatar)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4876 g_object_unref(avatar);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4877 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4878
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4879 /* This is a variation on the original gtk_blist_update_contact. Here we
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4880 can know in advance which buddy has changed so we can just update that */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4881 static void pidgin_blist_update_contact(GaimBuddyList *list, GaimBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4882 {
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4883 GaimBlistNode *cnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4884 GaimContact *contact;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4885 GaimBuddy *buddy;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4886 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4887
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4888 if (GAIM_BLIST_NODE_IS_BUDDY(node))
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4889 cnode = node->parent;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4890 else
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4891 cnode = node;
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
4892
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4893 g_return_if_fail(GAIM_BLIST_NODE_IS_CONTACT(cnode));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4894
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4895 /* First things first, update the group */
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4896 if (GAIM_BLIST_NODE_IS_BUDDY(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4897 pidgin_blist_update_group(list, node);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4898 else
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4899 pidgin_blist_update_group(list, cnode->parent);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4900
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4901 contact = (GaimContact*)cnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4902 buddy = gaim_contact_get_priority_buddy(contact);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
4903
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
4904 if (buddy_is_displayable(buddy))
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
4905 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4906 GtkTreeIter iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4907
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4908 if(!insert_node(list, cnode, &iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4909 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4910
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4911 gtknode = (struct _pidgin_blist_node *)cnode->ui_data;
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4912
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4913 if(gtknode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4914 GdkPixbuf *status;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4915 char *mark;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4916
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4917 status = pidgin_blist_get_status_icon(cnode,
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
4918 PIDGIN_STATUS_ICON_SMALL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4919
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4920 mark = g_markup_escape_text(gaim_contact_get_alias(contact), -1);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4921 gtk_tree_store_set(gtkblist->treemodel, &iter,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4922 STATUS_ICON_COLUMN, status,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4923 STATUS_ICON_VISIBLE_COLUMN, TRUE,
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4924 NAME_COLUMN, mark,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4925 IDLE_COLUMN, NULL,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4926 IDLE_VISIBLE_COLUMN, FALSE,
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4927 BGCOLOR_COLUMN, NULL,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4928 BUDDY_ICON_COLUMN, NULL,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4929 CONTACT_EXPANDER_COLUMN, TRUE,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4930 CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE,
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4931 -1);
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4932 g_free(mark);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4933 if(status)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4934 g_object_unref(status);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4935 } else {
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4936 buddy_node(buddy, &iter, cnode);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4937 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4938 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4939 pidgin_blist_hide_node(list, cnode, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4940 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4941 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4942
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4943
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4944
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4945 static void pidgin_blist_update_buddy(GaimBuddyList *list, GaimBlistNode *node, gboolean statusChange)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4946 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4947 GaimBuddy *buddy;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4948 struct _pidgin_blist_node *gtkparentnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4949
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4950 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4951
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4952 if (node->parent == NULL)
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
4953 return;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4954
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4955 buddy = (GaimBuddy*)node;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
4956
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4957 /* First things first, update the contact */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4958 pidgin_blist_update_contact(list, node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4959
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4960 gtkparentnode = (struct _pidgin_blist_node *)node->parent->ui_data;
10918
77103f5ad580 [gaim-migrate @ 12681]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10884
diff changeset
4961
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4962 if (gtkparentnode->contact_expanded && buddy_is_displayable(buddy))
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
4963 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4964 GtkTreeIter iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4965
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
4966 if (!insert_node(list, node, &iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4967 return;
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4968
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4969 buddy_node(buddy, &iter, node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4970
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4971 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4972 pidgin_blist_hide_node(list, node, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4973 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4974
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4975 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4976
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4977 static void pidgin_blist_update_chat(GaimBuddyList *list, GaimBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4978 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4979 GaimChat *chat;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4980
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4981 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT(node));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4982
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4983 /* First things first, update the group */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4984 pidgin_blist_update_group(list, node->parent);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4985
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4986 chat = (GaimChat*)node;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4987
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4988 if(gaim_account_is_connected(chat->account)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4989 GtkTreeIter iter;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4990 GdkPixbuf *status;
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
4991 GdkPixbuf *avatar;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4992 GdkPixbuf *emblem;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4993 char *mark;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4994
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4995 if(!insert_node(list, node, &iter))
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4996 return;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4997
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4998 status = pidgin_blist_get_status_icon(node,
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
4999 PIDGIN_STATUS_ICON_SMALL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5000 emblem = pidgin_blist_get_emblem(node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5001 avatar = pidgin_blist_get_buddy_icon(node, TRUE, FALSE, TRUE);
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5002
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5003 mark = g_markup_escape_text(gaim_chat_get_name(chat), -1);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5004
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5005 gtk_tree_store_set(gtkblist->treemodel, &iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5006 STATUS_ICON_COLUMN, status,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5007 STATUS_ICON_VISIBLE_COLUMN, TRUE,
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5008 BUDDY_ICON_COLUMN, avatar ? avatar : gtkblist->empty_avatar,
15494
250d72e0cca3 Fixes #41
Sean Egan <seanegan@pidgin.im>
parents: 15490
diff changeset
5009 BUDDY_ICON_VISIBLE_COLUMN, gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"),
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
5010 EMBLEM_COLUMN, emblem,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
5011 EMBLEM_VISIBLE_COLUMN, emblem != NULL,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5012 NAME_COLUMN, mark,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5013 -1);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5014
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5015 g_free(mark);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5016 if(status)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5017 g_object_unref(status);
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5018 if(avatar)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5019 g_object_unref(avatar);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5020 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5021 pidgin_blist_hide_node(list, node, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5022 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5023 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5024
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5025 static void pidgin_blist_update(GaimBuddyList *list, GaimBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5026 {
15282
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5027 if (list)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5028 gtkblist = PIDGIN_BLIST(list);
15306
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
5029 if(!gtkblist || !gtkblist->treeview || !node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5030 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5031
13196
b34319a69167 [gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13162
diff changeset
5032 if (node->ui_data == NULL)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5033 pidgin_blist_new_node(node);
13196
b34319a69167 [gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13162
diff changeset
5034
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5035 switch(node->type) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5036 case GAIM_BLIST_GROUP_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5037 pidgin_blist_update_group(list, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5038 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5039 case GAIM_BLIST_CONTACT_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5040 pidgin_blist_update_contact(list, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5041 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5042 case GAIM_BLIST_BUDDY_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5043 pidgin_blist_update_buddy(list, node, TRUE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5044 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5045 case GAIM_BLIST_CHAT_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5046 pidgin_blist_update_chat(list, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5047 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5048 case GAIM_BLIST_OTHER_NODE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5049 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5050 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5051
13147
5442361b3f40 [gaim-migrate @ 15509]
Mart Raudsepp
parents: 13141
diff changeset
5052 #if !GTK_CHECK_VERSION(2,6,0)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5053 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview));
13147
5442361b3f40 [gaim-migrate @ 15509]
Mart Raudsepp
parents: 13141
diff changeset
5054 #endif
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5055 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5056
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5057
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5058 static void pidgin_blist_destroy(GaimBuddyList *list)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5059 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5060 if (!gtkblist)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5061 return;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5062
15282
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5063 gaim_signals_disconnect_by_handle(gtkblist);
8259
7ed91862683d [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
5064
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
5065 if (gtkblist->headline_close)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
5066 gdk_pixbuf_unref(gtkblist->headline_close);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
5067
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5068 gtk_widget_destroy(gtkblist->window);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5069
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5070 pidgin_blist_tooltip_destroy();
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5071
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5072 if (gtkblist->refresh_timer)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5073 g_source_remove(gtkblist->refresh_timer);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5074 if (gtkblist->timeout)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5075 g_source_remove(gtkblist->timeout);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
5076 if (gtkblist->drag_timeout)
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
5077 g_source_remove(gtkblist->drag_timeout);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5078
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
5079 g_hash_table_destroy(gtkblist->connection_errors);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5080 gtkblist->refresh_timer = 0;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5081 gtkblist->timeout = 0;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
5082 gtkblist->drag_timeout = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5083 gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5084 gtkblist->treemodel = NULL;
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
5085 g_object_unref(G_OBJECT(gtkblist->ift));
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
5086 g_object_unref(G_OBJECT(gtkblist->empty_avatar));
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
5087
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5088 gdk_cursor_unref(gtkblist->hand_cursor);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5089 gdk_cursor_unref(gtkblist->arrow_cursor);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5090 gtkblist->hand_cursor = NULL;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5091 gtkblist->arrow_cursor = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5092
15282
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5093 g_free(gtkblist);
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5094 accountmenu = NULL;
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5095 gtkblist = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5096 gaim_prefs_disconnect_by_handle(pidgin_blist_get_handle());
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5097 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5098
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5099 static void pidgin_blist_set_visible(GaimBuddyList *list, gboolean show)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5100 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5101 if (!(gtkblist && gtkblist->window))
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5102 return;
10325
9bb530214bae [gaim-migrate @ 11532]
Mark Doliner <markdoliner@pidgin.im>
parents: 10320
diff changeset
5103
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5104 if (show) {
15571
812bd6c69c8c dialogs
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
5105 if(!PIDGIN_WINDOW_ICONIFIED(gtkblist->window) && !GTK_WIDGET_VISIBLE(gtkblist->window))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5106 gaim_signal_emit(pidgin_blist_get_handle(), "gtkblist-unhiding", gtkblist);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5107 pidgin_blist_restore_position();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5108 gtk_window_present(GTK_WINDOW(gtkblist->window));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5109 } else {
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5110 if(visibility_manager_count) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5111 gaim_signal_emit(pidgin_blist_get_handle(), "gtkblist-hiding", gtkblist);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5112 gtk_widget_hide(gtkblist->window);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5113 } else {
12479
01ea9120820a [gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents: 12478
diff changeset
5114 if (!GTK_WIDGET_VISIBLE(gtkblist->window))
01ea9120820a [gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents: 12478
diff changeset
5115 gtk_widget_show(gtkblist->window);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5116 gtk_window_iconify(GTK_WINDOW(gtkblist->window));
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5117 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5118 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5119 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5120
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5121 static GList *
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5122 groups_tree(void)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5123 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5124 GList *tmp = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5125 char *tmp2;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5126 GaimGroup *g;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5127 GaimBlistNode *gnode;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5128
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5129 if (gaim_get_blist()->root == NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5130 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5131 tmp2 = g_strdup(_("Buddies"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5132 tmp = g_list_append(tmp, tmp2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5133 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5134 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5135 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5136 for (gnode = gaim_get_blist()->root;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5137 gnode != NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5138 gnode = gnode->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5139 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5140 if (GAIM_BLIST_NODE_IS_GROUP(gnode))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5141 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5142 g = (GaimGroup *)gnode;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5143 tmp2 = g->name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5144 tmp = g_list_append(tmp, tmp2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5145 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5146 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5147 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5148
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5149 return tmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5150 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5151
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5152 static void
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5153 add_buddy_select_account_cb(GObject *w, GaimAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5154 PidginAddBuddyData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5155 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5156 /* Save our account */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5157 data->account = account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5158 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5159
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5160 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5161 destroy_add_buddy_dialog_cb(GtkWidget *win, PidginAddBuddyData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5162 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5163 g_free(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5164 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5165
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5166 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5167 add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5168 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5169 const char *grp, *who, *whoalias;
13942
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5170 GaimGroup *g;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5171 GaimBuddy *b;
13942
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5172 GaimConversation *c;
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5173 GaimBuddyIcon *icon;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5174
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5175 if (resp == GTK_RESPONSE_OK)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5176 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5177 who = gtk_entry_get_text(GTK_ENTRY(data->entry));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5178 grp = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5179 whoalias = gtk_entry_get_text(GTK_ENTRY(data->entry_for_alias));
9658
261c1ce87287 [gaim-migrate @ 10506]
Mark Doliner <markdoliner@pidgin.im>
parents: 9646
diff changeset
5180 if (*whoalias == '\0')
261c1ce87287 [gaim-migrate @ 10506]
Mark Doliner <markdoliner@pidgin.im>
parents: 9646
diff changeset
5181 whoalias = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5182
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5183 if ((g = gaim_find_group(grp)) == NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5184 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5185 g = gaim_group_new(grp);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5186 gaim_blist_add_group(g, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5187 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5188
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5189 b = gaim_buddy_new(data->account, who, whoalias);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5190 gaim_blist_add_buddy(b, NULL, g, NULL);
11643
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5191 gaim_account_add_buddy(data->account, b);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5192
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5193 /*
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5194 * XXX
11643
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5195 * It really seems like it would be better if the call to
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5196 * gaim_account_add_buddy() and gaim_conversation_update() were done in
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5197 * blist.c, possibly in the gaim_blist_add_buddy() function. Maybe
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5198 * gaim_account_add_buddy() should be renamed to
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5199 * gaim_blist_add_new_buddy() or something, and have it call
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5200 * gaim_blist_add_buddy() after it creates it. --Mark
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5201 *
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5202 * No that's not good. blist.c should only deal with adding nodes to the
11643
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5203 * local list. We need a new, non-gtk file that calls both
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5204 * gaim_account_add_buddy and gaim_blist_add_buddy().
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5205 * Or something. --Mark
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5206 */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5207
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11258
diff changeset
5208 c = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, who, data->account);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5209 if (c != NULL) {
13942
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5210 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(c));
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5211 if (icon != NULL)
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5212 gaim_buddy_icon_update(icon);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5213 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5214 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5215
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5216 gtk_widget_destroy(data->window);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5217 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5218
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5219 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5220 pidgin_blist_request_add_buddy(GaimAccount *account, const char *username,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5221 const char *group, const char *alias)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5222 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5223 GtkWidget *table;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5224 GtkWidget *label;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5225 GtkWidget *hbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5226 GtkWidget *vbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5227 GtkWidget *img;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5228 PidginBuddyList *gtkblist;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5229 PidginAddBuddyData *data = g_new0(PidginAddBuddyData, 1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5230
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5231 data->account =
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5232 (account != NULL
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5233 ? account
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5234 : gaim_connection_get_account(gaim_connections_get_all()->data));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5235
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5236 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5237 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5238
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5239 gtkblist = PIDGIN_BLIST(gaim_get_blist());
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5240
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5241 data->window = gtk_dialog_new_with_buttons(_("Add Buddy"),
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5242 NULL, GTK_DIALOG_NO_SEPARATOR,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5243 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5244 GTK_STOCK_ADD, GTK_RESPONSE_OK,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5245 NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5246
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5247 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5248 gtk_container_set_border_width(GTK_CONTAINER(data->window), GAIM_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5249 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5250 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BORDER);
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5251 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5252 gtk_window_set_role(GTK_WINDOW(data->window), "add_buddy");
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5253 gtk_window_set_type_hint(GTK_WINDOW(data->window),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5254 GDK_WINDOW_TYPE_HINT_DIALOG);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5255
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5256 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5257 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5258 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5259 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5260
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5261 vbox = gtk_vbox_new(FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5262 gtk_container_add(GTK_CONTAINER(hbox), vbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5263
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5264 label = gtk_label_new(
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5265 _("Please enter the screen name of the person you would like "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5266 "to add to your buddy list. You may optionally enter an alias, "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5267 "or nickname, for the buddy. The alias will be displayed in "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5268 "place of the screen name whenever possible.\n"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5269
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5270 gtk_widget_set_size_request(GTK_WIDGET(label), 400, -1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5271 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5272 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5273 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5274
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5275 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5276 gtk_container_add(GTK_CONTAINER(vbox), hbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5277
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5278 g_signal_connect(G_OBJECT(data->window), "destroy",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5279 G_CALLBACK(destroy_add_buddy_dialog_cb), data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5280
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5281 table = gtk_table_new(4, 2, FALSE);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5282 gtk_table_set_row_spacings(GTK_TABLE(table), 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5283 gtk_table_set_col_spacings(GTK_TABLE(table), 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5284 gtk_container_set_border_width(GTK_CONTAINER(table), 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5285 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5286
13546
0700f0c29e14 [gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents: 13543
diff changeset
5287 label = gtk_label_new(_("Screen name:"));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5288 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5289 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5290
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5291 data->entry = gtk_entry_new();
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5292 gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 0, 1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5293 gtk_widget_grab_focus(data->entry);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5294
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5295 if (username != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5296 gtk_entry_set_text(GTK_ENTRY(data->entry), username);
12337
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5297 else
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5298 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window),
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5299 GTK_RESPONSE_OK, FALSE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5300
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5301 gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5302 pidgin_set_accessible_label (data->entry, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5303
12337
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5304 g_signal_connect(G_OBJECT(data->entry), "changed",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5305 G_CALLBACK(pidgin_set_sensitive_if_input),
12337
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5306 data->window);
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5307
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5308 label = gtk_label_new(_("Alias:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5309 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5310 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5311
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5312 data->entry_for_alias = gtk_entry_new();
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5313 gtk_table_attach_defaults(GTK_TABLE(table),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5314 data->entry_for_alias, 1, 2, 1, 2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5315
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5316 if (alias != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5317 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5318
10734
4e49449724ec [gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents: 10694
diff changeset
5319 if (username != NULL)
4e49449724ec [gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents: 10694
diff changeset
5320 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias));
4e49449724ec [gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents: 10694
diff changeset
5321
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5322 gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5323 pidgin_set_accessible_label (data->entry_for_alias, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5324
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5325 label = gtk_label_new(_("Group:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5326 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5327 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5328
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5329 data->combo = gtk_combo_new();
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5330 gtk_combo_set_popdown_strings(GTK_COMBO(data->combo), groups_tree());
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5331 gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 2, 3);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5332 pidgin_set_accessible_label (data->combo, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5333
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5334 /* Set up stuff for the account box */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5335 label = gtk_label_new(_("Account:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5336 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5337 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5338
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5339 data->account_box = pidgin_account_option_menu_new(account, FALSE,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5340 G_CALLBACK(add_buddy_select_account_cb), NULL, data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5341
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5342 gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 1, 2, 3, 4);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5343 pidgin_set_accessible_label (data->account_box, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5344 /* End of account box */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5345
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5346 g_signal_connect(G_OBJECT(data->window), "response",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5347 G_CALLBACK(add_buddy_cb), data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5348
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5349 gtk_widget_show_all(data->window);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5350
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5351 if (group != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5352 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry), group);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5353 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5354
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5355 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5356 add_chat_cb(GtkWidget *w, PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5357 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5358 GHashTable *components;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5359 GList *tmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5360 GaimChat *chat;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5361 GaimGroup *group;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5362 const char *group_name;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5363 const char *value;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5364
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5365 components = g_hash_table_new_full(g_str_hash, g_str_equal,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5366 g_free, g_free);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5367
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5368 for (tmp = data->entries; tmp; tmp = tmp->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5369 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5370 if (g_object_get_data(tmp->data, "is_spin"))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5371 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5372 g_hash_table_replace(components,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5373 g_strdup(g_object_get_data(tmp->data, "identifier")),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5374 g_strdup_printf("%d",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5375 gtk_spin_button_get_value_as_int(tmp->data)));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5376 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5377 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5378 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5379 value = gtk_entry_get_text(tmp->data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5380 if (*value != '\0')
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5381 g_hash_table_replace(components,
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5382 g_strdup(g_object_get_data(tmp->data, "identifier")),
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5383 g_strdup(value));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5384 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5385 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5386
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5387 chat = gaim_chat_new(data->account,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5388 gtk_entry_get_text(GTK_ENTRY(data->alias_entry)),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5389 components);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5390
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5391 group_name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5392
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5393 if ((group = gaim_find_group(group_name)) == NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5394 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5395 group = gaim_group_new(group_name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5396 gaim_blist_add_group(group, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5397 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5398
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5399 if (chat != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5400 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5401 gaim_blist_add_chat(chat, group, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5402 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5403
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5404 gtk_widget_destroy(data->window);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5405 g_free(data->default_chat_name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5406 g_list_free(data->entries);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5407 g_free(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5408 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5409
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5410 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5411 add_chat_resp_cb(GtkWidget *w, int resp, PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5412 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5413 if (resp == GTK_RESPONSE_OK)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5414 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5415 add_chat_cb(NULL, data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5416 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5417 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5418 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5419 gtk_widget_destroy(data->window);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5420 g_free(data->default_chat_name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5421 g_list_free(data->entries);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5422 g_free(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5423 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5424 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5425
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5426 /*
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5427 * Check the values of all the text entry boxes. If any required input
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5428 * strings are empty then don't allow the user to click on "OK."
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5429 */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5430 static void
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5431 addchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5432 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5433 PidginAddChatData *data;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5434 GList *tmp;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5435 const char *text;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5436 gboolean required;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5437 gboolean sensitive = TRUE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5438
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5439 data = user_data;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5440
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5441 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5442 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5443 if (!g_object_get_data(tmp->data, "is_spin"))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5444 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5445 required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5446 text = gtk_entry_get_text(tmp->data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5447 if (required && (*text == '\0'))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5448 sensitive = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5449 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5450 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5451
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5452 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5453 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5454
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5455 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5456 rebuild_addchat_entries(PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5457 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5458 GaimConnection *gc;
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
5459 GList *list = NULL, *tmp;
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5460 GHashTable *defaults = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5461 struct proto_chat_entry *pce;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5462 gboolean focus = TRUE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5463
10127
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
5464 g_return_if_fail(data->account != NULL);
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
5465
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5466 gc = gaim_account_get_connection(data->account);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5467
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
5468 while ((tmp = gtk_container_get_children(GTK_CONTAINER(data->entries_box))))
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
5469 gtk_widget_destroy(tmp->data);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5470
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
5471 g_list_free(data->entries);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5472
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5473 data->entries = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5474
9959
e80396496a78 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
5475 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
e80396496a78 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
5476 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5477
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5478 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5479 defaults = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, data->default_chat_name);
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5480
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5481 for (tmp = list; tmp; tmp = tmp->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5482 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5483 GtkWidget *label;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5484 GtkWidget *rowbox;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5485 GtkWidget *input;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5486
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5487 pce = tmp->data;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5488
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5489 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5490 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5491
7889
34cc5467bf55 [gaim-migrate @ 8547]
Nathan Walp <nwalp@pidgin.im>
parents: 7887
diff changeset
5492 label = gtk_label_new_with_mnemonic(pce->label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5493 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5494 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5495 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5496
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5497 if (pce->is_int)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5498 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5499 GtkObject *adjust;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5500 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5501 1, 10, 10);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5502 input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5503 gtk_widget_set_size_request(input, 50, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5504 gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5505 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5506 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5507 {
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5508 char *value;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5509 input = gtk_entry_new();
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5510 gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5511 value = g_hash_table_lookup(defaults, pce->identifier);
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5512 if (value != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5513 gtk_entry_set_text(GTK_ENTRY(input), value);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5514 if (pce->secret)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
5515 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5516 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15386
diff changeset
5517 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15386
diff changeset
5518 gtk_entry_set_invisible_char(GTK_ENTRY(input), GAIM_INVISIBLE_CHAR);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
5519 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5520 gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5521 g_signal_connect(G_OBJECT(input), "changed",
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5522 G_CALLBACK(addchat_set_sensitive_if_input_cb), data);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5523 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5524
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5525 /* Do the following for any type of input widget */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5526 if (focus)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5527 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5528 gtk_widget_grab_focus(input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5529 focus = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5530 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5531 gtk_label_set_mnemonic_widget(GTK_LABEL(label), input);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5532 pidgin_set_accessible_label(input, label);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
5533 g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5534 g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5535 g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5536 data->entries = g_list_append(data->entries, input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5537
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5538 g_free(pce);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5539 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5540
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5541 g_list_free(list);
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5542 g_hash_table_destroy(defaults);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5543
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5544 /* Set whether the "OK" button should be clickable initially */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5545 addchat_set_sensitive_if_input_cb(NULL, data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5546
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5547 gtk_widget_show_all(data->entries_box);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5548 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5549
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5550 static void
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5551 addchat_select_account_cb(GObject *w, GaimAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5552 PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5553 {
9460
7c1ab9155fe2 [gaim-migrate @ 10285]
Daniel Atallah <datallah@pidgin.im>
parents: 9396
diff changeset
5554 if (strcmp(gaim_account_get_protocol_id(data->account),
7c1ab9155fe2 [gaim-migrate @ 10285]
Daniel Atallah <datallah@pidgin.im>
parents: 9396
diff changeset
5555 gaim_account_get_protocol_id(account)) == 0)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5556 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5557 data->account = account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5558 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5559 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5560 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5561 data->account = account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5562 rebuild_addchat_entries(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5563 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5564 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5565
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
5566 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5567 pidgin_blist_request_add_chat(GaimAccount *account, GaimGroup *group,
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5568 const char *alias, const char *name)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5569 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5570 PidginAddChatData *data;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5571 PidginBuddyList *gtkblist;
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5572 GList *l;
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5573 GaimConnection *gc;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5574 GtkWidget *label;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5575 GtkWidget *rowbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5576 GtkWidget *hbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5577 GtkWidget *vbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5578 GtkWidget *img;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5579
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5580 if (account != NULL) {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5581 gc = gaim_account_get_connection(account);
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5582
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5583 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat == NULL) {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5584 gaim_notify_error(gc, NULL, _("This protocol does not support chat rooms."), NULL);
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5585 return;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5586 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5587 } else {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5588 /* Find an account with chat capabilities */
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5589 for (l = gaim_connections_get_all(); l != NULL; l = l->next) {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5590 gc = (GaimConnection *)l->data;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5591
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5592 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat != NULL) {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5593 account = gaim_connection_get_account(gc);
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5594 break;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5595 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5596 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5597
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5598 if (account == NULL) {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5599 gaim_notify_error(NULL, NULL,
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5600 _("You are not currently signed on with any "
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5601 "protocols that have the ability to chat."), NULL);
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5602 return;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5603 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5604 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5605
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5606 data = g_new0(PidginAddChatData, 1);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5607 data->account = account;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5608 data->default_chat_name = g_strdup(name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5609
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5610 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5611 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5612
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5613 gtkblist = PIDGIN_BLIST(gaim_get_blist());
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5614
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5615 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5616
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5617 data->window = gtk_dialog_new_with_buttons(_("Add Chat"),
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5618 NULL, GTK_DIALOG_NO_SEPARATOR,
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5619 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5620 GTK_STOCK_ADD, GTK_RESPONSE_OK,
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5621 NULL);
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5622
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5623 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5624 gtk_container_set_border_width(GTK_CONTAINER(data->window), GAIM_HIG_BOX_SPACE);
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5625 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5626 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BORDER);
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5627 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5628 gtk_window_set_role(GTK_WINDOW(data->window), "add_chat");
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5629 gtk_window_set_type_hint(GTK_WINDOW(data->window),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5630 GDK_WINDOW_TYPE_HINT_DIALOG);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5631
11243
ee8dccc558e1 [gaim-migrate @ 13408]
Mads Chr. Olesen <mads@mchro.dk>
parents: 11137
diff changeset
5632 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5633 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5634 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5635 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5636
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5637 vbox = gtk_vbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5638 gtk_container_add(GTK_CONTAINER(hbox), vbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5639
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5640 label = gtk_label_new(
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5641 _("Please enter an alias, and the appropriate information "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5642 "about the chat you would like to add to your buddy list.\n"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5643 gtk_widget_set_size_request(label, 400, -1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5644 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5645 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5646 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5647
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5648 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5649 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5650
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5651 label = gtk_label_new(_("Account:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5652 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5653 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5654 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5655
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5656 data->account_menu = pidgin_account_option_menu_new(account, FALSE,
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5657 G_CALLBACK(addchat_select_account_cb),
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
5658 chat_account_filter_func, data);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5659 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5660 pidgin_set_accessible_label (data->account_menu, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5661
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5662 data->entries_box = gtk_vbox_new(FALSE, 5);
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5663 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5664 gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5665
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5666 rebuild_addchat_entries(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5667
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5668 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5669 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5670
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5671 label = gtk_label_new(_("Alias:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5672 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5673 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5674 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5675
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5676 data->alias_entry = gtk_entry_new();
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7856
diff changeset
5677 if (alias != NULL)
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7856
diff changeset
5678 gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5679 gtk_box_pack_end(GTK_BOX(rowbox), data->alias_entry, TRUE, TRUE, 0);
10311
2380cae46dbd [gaim-migrate @ 11505]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10297
diff changeset
5680 gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5681 pidgin_set_accessible_label (data->alias_entry, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5682
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5683 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5684 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5685
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5686 label = gtk_label_new(_("Group:"));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5687 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5688 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5689 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5690
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5691 data->group_combo = gtk_combo_new();
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5692 gtk_combo_set_popdown_strings(GTK_COMBO(data->group_combo), groups_tree());
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5693 gtk_box_pack_end(GTK_BOX(rowbox), data->group_combo, TRUE, TRUE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5694
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5695 if (group)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5696 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5697 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5698 group->name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5699 }
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5700 pidgin_set_accessible_label (data->group_combo, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5701
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5702 g_signal_connect(G_OBJECT(data->window), "response",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5703 G_CALLBACK(add_chat_resp_cb), data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5704
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5705 gtk_widget_show_all(data->window);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5706 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5707
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5708 static void
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5709 add_group_cb(GaimConnection *gc, const char *group_name)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5710 {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5711 GaimGroup *group;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5712
12458
c1bb7ec2fb26 [gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents: 12450
diff changeset
5713 if ((group_name == NULL) || (*group_name == '\0'))
c1bb7ec2fb26 [gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents: 12450
diff changeset
5714 return;
c1bb7ec2fb26 [gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents: 12450
diff changeset
5715
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5716 group = gaim_group_new(group_name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5717 gaim_blist_add_group(group, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5718 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5719
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
5720 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5721 pidgin_blist_request_add_group(void)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5722 {
7853
cd8b631ff166 [gaim-migrate @ 8507]
Mark Doliner <markdoliner@pidgin.im>
parents: 7843
diff changeset
5723 gaim_request_input(NULL, _("Add Group"), NULL,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5724 _("Please enter the name of the group to be added."),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8592
diff changeset
5725 NULL, FALSE, FALSE, NULL,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5726 _("Add"), G_CALLBACK(add_group_cb),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5727 _("Cancel"), NULL, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5728 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5729
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5730 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5731 pidgin_blist_toggle_visibility()
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5732 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5733 if (gtkblist && gtkblist->window) {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5734 if (GTK_WIDGET_VISIBLE(gtkblist->window)) {
15571
812bd6c69c8c dialogs
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
5735 gaim_blist_set_visible(PIDGIN_WINDOW_ICONIFIED(gtkblist->window) || gtk_blist_obscured);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5736 } else {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5737 gaim_blist_set_visible(TRUE);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5738 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5739 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5740 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5741
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5742 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5743 pidgin_blist_visibility_manager_add()
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5744 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5745 visibility_manager_count++;
12479
01ea9120820a [gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents: 12478
diff changeset
5746 gaim_debug_info("gtkblist", "added visibility manager: %d\n", visibility_manager_count);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5747 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5748
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5749 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5750 pidgin_blist_visibility_manager_remove()
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5751 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5752 if (visibility_manager_count)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5753 visibility_manager_count--;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5754 if (!visibility_manager_count)
13676
36cd63c22932 [gaim-migrate @ 16076]
Mark Doliner <markdoliner@pidgin.im>
parents: 13672
diff changeset
5755 gaim_blist_set_visible(TRUE);
12479
01ea9120820a [gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents: 12478
diff changeset
5756 gaim_debug_info("gtkblist", "removed visibility manager: %d\n", visibility_manager_count);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5757 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5758
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5759 void pidgin_blist_add_alert(GtkWidget *widget)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5760 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5761 gtk_container_add(GTK_CONTAINER(gtkblist->scrollbook), widget);
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
5762 if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5763 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5764 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5765
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5766 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5767 pidgin_blist_set_headline(const char *text, GdkPixbuf *pixbuf, GCallback callback,
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5768 gpointer user_data, GDestroyNotify destroy)
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5769 {
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5770 /* Destroy any existing headline first */
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5771 if (gtkblist->headline_destroy)
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5772 gtkblist->headline_destroy(gtkblist->headline_data);
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5773
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
5774 gtk_label_set_markup(GTK_LABEL(gtkblist->headline_label), text);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
5775 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkblist->headline_image), pixbuf);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
5776
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5777 gtkblist->headline_callback = callback;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5778 gtkblist->headline_data = user_data;
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5779 gtkblist->headline_destroy = destroy;
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
5780 if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5781 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5782 gtk_widget_show_all(gtkblist->headline_hbox);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5783 }
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5784
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5785 static GaimBlistUiOps blist_ui_ops =
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5786 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5787 pidgin_blist_new_list,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5788 pidgin_blist_new_node,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5789 pidgin_blist_show,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5790 pidgin_blist_update,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5791 pidgin_blist_remove,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5792 pidgin_blist_destroy,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5793 pidgin_blist_set_visible,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5794 pidgin_blist_request_add_buddy,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5795 pidgin_blist_request_add_chat,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5796 pidgin_blist_request_add_group
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5797 };
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5798
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5799
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5800 GaimBlistUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5801 pidgin_blist_get_ui_ops(void)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5802 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5803 return &blist_ui_ops;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5804 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5805
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5806 PidginBuddyList *pidgin_blist_get_default_gtk_blist()
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
5807 {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
5808 return gtkblist;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
5809 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
5810
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5811 static void account_signon_cb(GaimConnection *gc, gpointer z)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5812 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5813 GaimAccount *account = gaim_connection_get_account(gc);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5814 GaimBlistNode *gnode, *cnode;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5815 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5816 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5817 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5818 continue;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5819 for(cnode = gnode->child; cnode; cnode = cnode->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5820 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5821 GaimChat *chat;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5822
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5823 if(!GAIM_BLIST_NODE_IS_CHAT(cnode))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5824 continue;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5825
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5826 chat = (GaimChat *)cnode;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5827
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5828 if(chat->account != account)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5829 continue;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5830
8197
e9c666481979 [gaim-migrate @ 8919]
Nathan Walp <nwalp@pidgin.im>
parents: 8143
diff changeset
5831 if(gaim_blist_node_get_bool((GaimBlistNode*)chat, "gtk-autojoin") ||
8198
867abd109161 [gaim-migrate @ 8921]
Nathan Walp <nwalp@pidgin.im>
parents: 8197
diff changeset
5832 (gaim_blist_node_get_string((GaimBlistNode*)chat,
867abd109161 [gaim-migrate @ 8921]
Nathan Walp <nwalp@pidgin.im>
parents: 8197
diff changeset
5833 "gtk-autojoin") != NULL))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5834 serv_join_chat(gc, chat->components);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5835 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5836 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5837 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5838
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5839 void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5840 pidgin_blist_get_handle() {
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5841 static int handle;
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5842
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5843 return &handle;
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5844 }
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5845
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5846 static gboolean buddy_signonoff_timeout_cb(GaimBuddy *buddy)
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5847 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5848 struct _pidgin_blist_node *gtknode = ((GaimBlistNode*)buddy)->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5849
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5850 gtknode->recent_signonoff = FALSE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5851 gtknode->recent_signonoff_timer = 0;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5852
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5853 pidgin_blist_update(NULL, (GaimBlistNode*)buddy);
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5854
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5855 return FALSE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5856 }
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5857
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5858 static void buddy_signonoff_cb(GaimBuddy *buddy)
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5859 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5860 struct _pidgin_blist_node *gtknode;
11915
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5861
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5862 if(!((GaimBlistNode*)buddy)->ui_data) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5863 pidgin_blist_new_node((GaimBlistNode*)buddy);
11915
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5864 }
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5865
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5866 gtknode = ((GaimBlistNode*)buddy)->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5867
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5868 gtknode->recent_signonoff = TRUE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5869
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5870 if(gtknode->recent_signonoff_timer > 0)
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5871 gaim_timeout_remove(gtknode->recent_signonoff_timer);
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5872 gtknode->recent_signonoff_timer = gaim_timeout_add(10000,
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5873 (GSourceFunc)buddy_signonoff_timeout_cb, buddy);
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5874 }
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5875
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5876 void pidgin_blist_init(void)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5877 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5878 void *gtk_blist_handle = pidgin_blist_get_handle();
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5879
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5880 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5881 gtk_blist_handle, GAIM_CALLBACK(account_signon_cb),
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5882 NULL);
7731
7c3bb30a94c4 [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5883
7c3bb30a94c4 [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5884 /* Initialize prefs */
8819
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5885 gaim_prefs_add_none("/gaim/gtk/blist");
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5886 gaim_prefs_add_bool("/gaim/gtk/blist/show_buddy_icons", TRUE);
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5887 gaim_prefs_add_bool("/gaim/gtk/blist/show_empty_groups", FALSE);
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
5888 gaim_prefs_add_bool("/gaim/gtk/blist/show_idle_time", TRUE);
8819
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5889 gaim_prefs_add_bool("/gaim/gtk/blist/show_offline_buddies", FALSE);
10282
055f7b0e0f43 [gaim-migrate @ 11451]
Scott Shedden
parents: 10273
diff changeset
5890 gaim_prefs_add_bool("/gaim/gtk/blist/list_visible", TRUE);
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
5891 gaim_prefs_add_bool("/gaim/gtk/blist/list_maximized", FALSE);
9711
89a3d94e0dcc [gaim-migrate @ 10572]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
5892 gaim_prefs_add_string("/gaim/gtk/blist/sort_type", "alphabetical");
8819
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5893 gaim_prefs_add_int("/gaim/gtk/blist/x", 0);
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5894 gaim_prefs_add_int("/gaim/gtk/blist/y", 0);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
5895 gaim_prefs_add_int("/gaim/gtk/blist/width", 250); /* Golden ratio, baby */
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
5896 gaim_prefs_add_int("/gaim/gtk/blist/height", 405); /* Golden ratio, baby */
8819
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5897 gaim_prefs_add_int("/gaim/gtk/blist/tooltip_delay", 500);
7731
7c3bb30a94c4 [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5898
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5899 /* Register our signals */
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5900 gaim_signal_register(gtk_blist_handle, "gtkblist-hiding",
14682
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5901 gaim_marshal_VOID__POINTER, NULL, 1,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5902 gaim_value_new(GAIM_TYPE_SUBTYPE,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5903 GAIM_SUBTYPE_BLIST));
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5904
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5905 gaim_signal_register(gtk_blist_handle, "gtkblist-unhiding",
14682
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5906 gaim_marshal_VOID__POINTER, NULL, 1,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5907 gaim_value_new(GAIM_TYPE_SUBTYPE,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5908 GAIM_SUBTYPE_BLIST));
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5909
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5910 gaim_signal_register(gtk_blist_handle, "gtkblist-created",
14682
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5911 gaim_marshal_VOID__POINTER, NULL, 1,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5912 gaim_value_new(GAIM_TYPE_SUBTYPE,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5913 GAIM_SUBTYPE_BLIST));
8819
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5914
340140a358f6 [gaim-migrate @ 9581]
Sean Egan <seanegan@pidgin.im>
parents: 8817
diff changeset
5915 gaim_signal_register(gtk_blist_handle, "drawing-tooltip",
14682
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5916 gaim_marshal_VOID__POINTER_POINTER_UINT, NULL, 3,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5917 gaim_value_new(GAIM_TYPE_SUBTYPE,
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5918 GAIM_SUBTYPE_BLIST_NODE),
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5919 gaim_value_new_outgoing(GAIM_TYPE_BOXED, "GString *"),
a207c394285e [gaim-migrate @ 17348]
Etan Reisner <deryni@pidgin.im>
parents: 14628
diff changeset
5920 gaim_value_new(GAIM_TYPE_BOOLEAN));
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5921
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5922
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5923 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on", gtk_blist_handle, GAIM_CALLBACK(buddy_signonoff_cb), NULL);
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5924 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-off", gtk_blist_handle, GAIM_CALLBACK(buddy_signonoff_cb), NULL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5925 gaim_signal_connect(gaim_blist_get_handle(), "buddy-privacy-changed", gtk_blist_handle, GAIM_CALLBACK(pidgin_blist_update_privacy_cb), NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5926 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5927
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5928 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5929 pidgin_blist_uninit(void) {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5930 gaim_signals_unregister_by_instance(pidgin_blist_get_handle());
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5931 gaim_signals_disconnect_by_handle(pidgin_blist_get_handle());
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5932 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5933
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5934 /*********************************************************************
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5935 * Buddy List sorting functions *
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5936 *********************************************************************/
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5937
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5938 GList *pidgin_blist_get_sort_methods()
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5939 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5940 return pidgin_blist_sort_methods;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5941 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5942
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5943 void pidgin_blist_sort_method_reg(const char *id, const char *name, pidgin_blist_sort_function func)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5944 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5945 struct pidgin_blist_sort_method *method = g_new0(struct pidgin_blist_sort_method, 1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5946 method->id = g_strdup(id);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5947 method->name = g_strdup(name);
9775
e3a3555b0621 [gaim-migrate @ 10643]
Daniel Atallah <datallah@pidgin.im>
parents: 9774
diff changeset
5948 method->func = func;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5949 pidgin_blist_sort_methods = g_list_append(pidgin_blist_sort_methods, method);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5950 pidgin_blist_update_sort_methods();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5951 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5952
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5953 void pidgin_blist_sort_method_unreg(const char *id){
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5954 GList *l = pidgin_blist_sort_methods;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5955
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5956 while(l) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5957 struct pidgin_blist_sort_method *method = l->data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5958 if(!strcmp(method->id, id)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5959 pidgin_blist_sort_methods = g_list_delete_link(pidgin_blist_sort_methods, l);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5960 g_free(method->id);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5961 g_free(method->name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5962 g_free(method);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5963 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5964 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5965 }
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5966 pidgin_blist_update_sort_methods();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5967 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5968
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5969 void pidgin_blist_sort_method_set(const char *id){
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5970 GList *l = pidgin_blist_sort_methods;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5971
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5972 if(!id)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5973 id = "none";
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5974
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5975 while (l && strcmp(((struct pidgin_blist_sort_method*)l->data)->id, id))
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5976 l = l->next;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5977
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5978 if (l) {
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5979 current_sort_method = l->data;
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5980 } else if (!current_sort_method) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5981 pidgin_blist_sort_method_set("none");
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5982 return;
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5983 }
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
5984 if (!strcmp(id, "none")) {
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
5985 redo_buddy_list(gaim_get_blist(), TRUE, FALSE);
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
5986 } else {
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
5987 redo_buddy_list(gaim_get_blist(), FALSE, FALSE);
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
5988 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5989 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5990
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5991 /******************************************
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5992 ** Sort Methods
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5993 ******************************************/
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5994
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
5995 static void sort_method_none(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter parent_iter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
5996 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5997 GaimBlistNode *sibling = node->prev;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5998 GtkTreeIter sibling_iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5999
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6000 if (cur != NULL) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6001 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6002 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6003 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6004
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6005 while (sibling && !get_iter_from_node(sibling, &sibling_iter)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6006 sibling = sibling->prev;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6007 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6008
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6009 gtk_tree_store_insert_after(gtkblist->treemodel, iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6010 node->parent ? &parent_iter : NULL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6011 sibling ? &sibling_iter : NULL);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6012 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6013
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6014 #if GTK_CHECK_VERSION(2,2,1)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6015
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6016 static void sort_method_alphabetical(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6017 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6018 GtkTreeIter more_z;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6019
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6020 const char *my_name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6021
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6022 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6023 my_name = gaim_contact_get_alias((GaimContact*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6024 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6025 my_name = gaim_chat_get_name((GaimChat*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6026 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6027 sort_method_none(node, blist, groupiter, cur, iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6028 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6029 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6030
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6031
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6032 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6033 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6034 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6035 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6036
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6037 do {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6038 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6039 GaimBlistNode *n;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6040 const char *this_name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6041 int cmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6042
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6043 val.g_type = 0;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6044 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6045 n = g_value_get_pointer(&val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6046
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6047 if(GAIM_BLIST_NODE_IS_CONTACT(n)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6048 this_name = gaim_contact_get_alias((GaimContact*)n);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6049 } else if(GAIM_BLIST_NODE_IS_CHAT(n)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6050 this_name = gaim_chat_get_name((GaimChat*)n);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6051 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6052 this_name = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6053 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6054
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6055 cmp = gaim_utf8_strcasecmp(my_name, this_name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6056
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6057 if(this_name && (cmp < 0 || (cmp == 0 && node < n))) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6058 if(cur) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6059 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6060 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6061 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6062 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6063 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6064 &groupiter, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6065 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6066 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6067 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6068 g_value_unset(&val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6069 } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6070
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6071 if(cur) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6072 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6073 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6074 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6075 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6076 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6077 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6078 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6079 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6080
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6081 static void sort_method_status(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6082 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6083 GtkTreeIter more_z;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6084
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6085 GaimBuddy *my_buddy, *this_buddy;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6086
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6087 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6088 my_buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6089 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6090 if (cur != NULL) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6091 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6092 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6093 }
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6094
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6095 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6096 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6097 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6098 sort_method_none(node, blist, groupiter, cur, iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6099 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6100 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6101
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6102
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6103 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6104 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6105 return;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6106 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6107
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6108 do {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6109 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6110 GaimBlistNode *n;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6111 gint name_cmp;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6112 gint presence_cmp;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6113
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6114 val.g_type = 0;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6115 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6116 n = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6117
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6118 if(GAIM_BLIST_NODE_IS_CONTACT(n)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6119 this_buddy = gaim_contact_get_priority_buddy((GaimContact*)n);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6120 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6121 this_buddy = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6122 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6123
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6124 name_cmp = gaim_utf8_strcasecmp(
13672
19120286b518 [gaim-migrate @ 16072]
Richard Laager <rlaager@pidgin.im>
parents: 13630
diff changeset
6125 gaim_contact_get_alias(gaim_buddy_get_contact(my_buddy)),
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6126 (this_buddy
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6127 ? gaim_contact_get_alias(gaim_buddy_get_contact(this_buddy))
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6128 : NULL));
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6129
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6130 presence_cmp = gaim_presence_compare(
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6131 gaim_buddy_get_presence(my_buddy),
13691
48c5d3a3532b [gaim-migrate @ 16092]
Richard Laager <rlaager@pidgin.im>
parents: 13686
diff changeset
6132 this_buddy ? gaim_buddy_get_presence(this_buddy) : NULL);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6133
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6134 if (this_buddy == NULL ||
10860
8f600347b9e4 [gaim-migrate @ 12543]
Palmer Cox <enix@users.sourceforge.net>
parents: 10850
diff changeset
6135 (presence_cmp < 0 ||
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6136 (presence_cmp == 0 &&
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6137 (name_cmp < 0 || (name_cmp == 0 && node < n)))))
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6138 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6139 if (cur != NULL)
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6140 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6141 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6142 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6143 return;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6144 }
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6145 else
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6146 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6147 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6148 &groupiter, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6149 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6150 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6151 }
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6152
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6153 g_value_unset(&val);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6154 }
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6155 while (gtk_tree_model_iter_next(GTK_TREE_MODEL(gtkblist->treemodel),
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6156 &more_z));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6157
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6158 if (cur) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6159 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6160 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6161 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6162 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6163 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6164 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6165 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6166 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6167
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6168 static void sort_method_log(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6169 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6170 GtkTreeIter more_z;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6171
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6172 int log_size = 0, this_log_size = 0;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6173 const char *buddy_name, *this_buddy_name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6174
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6175 if(cur && (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter) == 1)) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6176 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6177 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6178 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6179
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6180 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6181 GaimBlistNode *n;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6182 for (n = node->child; n; n = n->next)
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8861
diff changeset
6183 log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy*)(n))->name, ((GaimBuddy*)(n))->account);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6184 buddy_name = gaim_contact_get_alias((GaimContact*)node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6185 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6186 /* we don't have a reliable way of getting the log filename
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6187 * from the chat info in the blist, yet */
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6188 if (cur != NULL) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6189 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6190 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6191 }
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6192
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6193 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6194 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6195 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6196 sort_method_none(node, blist, groupiter, cur, iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6197 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6198 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6199
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6200
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6201 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6202 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6203 return;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6204 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6205
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6206 do {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6207 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6208 GaimBlistNode *n;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6209 GaimBlistNode *n2;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6210 int cmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6211
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6212 val.g_type = 0;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6213 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6214 n = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6215 this_log_size = 0;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6216
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6217 if(GAIM_BLIST_NODE_IS_CONTACT(n)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6218 for (n2 = n->child; n2; n2 = n2->next)
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8861
diff changeset
6219 this_log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy*)(n2))->name, ((GaimBuddy*)(n2))->account);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6220 this_buddy_name = gaim_contact_get_alias((GaimContact*)n);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6221 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6222 this_buddy_name = NULL;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6223 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6224
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6225 cmp = gaim_utf8_strcasecmp(buddy_name, this_buddy_name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6226
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6227 if (!GAIM_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size ||
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6228 ((log_size == this_log_size) &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6229 (cmp < 0 || (cmp == 0 && node < n)))) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6230 if (cur != NULL) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6231 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6232 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6233 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6234 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6235 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6236 &groupiter, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6237 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6238 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6239 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6240 g_value_unset(&val);
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6241 } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6242
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6243 if (cur != NULL) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6244 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6245 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6246 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6247 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6248 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6249 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6250 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6251 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6252
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6253 #endif
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6254
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6255 static void
13197
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6256 plugin_act(GtkObject *obj, GaimPluginAction *pam)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6257 {
13197
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6258 if (pam && pam->callback)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
6259 pam->callback(pam);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6260 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6261
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6262 static void
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6263 build_plugin_actions(GtkWidget *menu, GaimPlugin *plugin)
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6264 {
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6265 GtkWidget *menuitem;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6266 GaimPluginAction *action = NULL;
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6267 GList *actions, *l;
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6268
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6269 actions = GAIM_PLUGIN_ACTIONS(plugin, NULL);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6270
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6271 for (l = actions; l != NULL; l = l->next)
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6272 {
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6273 if (l->data)
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6274 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6275 action = (GaimPluginAction *) l->data;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6276 action->plugin = plugin;
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6277 action->context = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6278
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6279 menuitem = gtk_menu_item_new_with_label(action->label);
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6280 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6281
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6282 g_signal_connect(G_OBJECT(menuitem), "activate",
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6283 G_CALLBACK(plugin_act), action);
13197
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6284 g_object_set_data_full(G_OBJECT(menuitem), "plugin_action",
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6285 action,
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6286 (GDestroyNotify)gaim_plugin_action_free);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6287 gtk_widget_show(menuitem);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6288 }
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6289 else
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6290 pidgin_separator(menu);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6291 }
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6292
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6293 g_list_free(actions);
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6294 }
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6295
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6296 static void
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6297 modify_account_cb(GtkWidget *widget, gpointer data)
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6298 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6299 pidgin_account_dialog_show(PIDGIN_MODIFY_ACCOUNT_DIALOG, data);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6300 }
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6301
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6302 static void
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6303 enable_account_cb(GtkCheckMenuItem *widget, gpointer data)
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6304 {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6305 GaimAccount *account = data;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6306 const GaimSavedStatus *saved_status;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6307
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6308 saved_status = gaim_savedstatus_get_current();
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6309 gaim_savedstatus_activate_for_account(saved_status, account);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6310
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6311 gaim_account_set_enabled(account, PIDGIN_UI, TRUE);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6312 }
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6313
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6314 static void
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6315 disable_account_cb(GtkCheckMenuItem *widget, gpointer data)
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6316 {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6317 GaimAccount *account = data;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6318
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6319 gaim_account_set_enabled(account, PIDGIN_UI, FALSE);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6320 }
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6321
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6322 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6323 pidgin_blist_update_accounts_menu(void)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6324 {
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6325 GtkWidget *menuitem = NULL, *submenu = NULL;
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6326 GtkAccelGroup *accel_group = NULL;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6327 GList *l = NULL, *accounts = NULL;
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6328 gboolean disabled_accounts = FALSE;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6329
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6330 if (accountmenu == NULL)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6331 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6332
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6333 /* Clear the old Accounts menu */
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6334 for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = l->next) {
12348
847b6a8f2d07 [gaim-migrate @ 14652]
Etan Reisner <deryni@pidgin.im>
parents: 12341
diff changeset
6335 menuitem = l->data;
847b6a8f2d07 [gaim-migrate @ 14652]
Etan Reisner <deryni@pidgin.im>
parents: 12341
diff changeset
6336
847b6a8f2d07 [gaim-migrate @ 14652]
Etan Reisner <deryni@pidgin.im>
parents: 12341
diff changeset
6337 if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Add\\/Edit")))
15050
f99d78ac44e9 [gaim-migrate @ 17767]
Daniel Atallah <datallah@pidgin.im>
parents: 14914
diff changeset
6338 gtk_widget_destroy(menuitem);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6339 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6340
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6341 for (accounts = gaim_accounts_get_all(); accounts; accounts = accounts->next) {
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6342 char *buf = NULL;
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6343 char *accel_path_buf = NULL;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6344 GtkWidget *image = NULL;
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6345 GaimConnection *gc = NULL;
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6346 GaimAccount *account = NULL;
12300
c24609bae42d [gaim-migrate @ 14604]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12298
diff changeset
6347 GaimStatus *status = NULL;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6348 GdkPixbuf *pixbuf = NULL;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6349
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6350 account = accounts->data;
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6351 accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu));
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6352
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6353 if(gaim_account_get_enabled(account, PIDGIN_UI)) {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6354 buf = g_strconcat(gaim_account_get_username(account), " (",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6355 gaim_account_get_protocol_name(account), ")", NULL);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6356 menuitem = gtk_image_menu_item_new_with_label(buf);
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6357 accel_path_buf = g_strconcat(N_("<GaimMain>/Accounts/"), buf, NULL);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6358 g_free(buf);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6359 status = gaim_account_get_active_status(account);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6360 pixbuf = pidgin_create_prpl_icon_with_status(account, gaim_status_get_type(status), 0.5);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6361 if (pixbuf != NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6362 {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6363 if (!gaim_account_is_connected(account))
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6364 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf,
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6365 0.0, FALSE);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6366 image = gtk_image_new_from_pixbuf(pixbuf);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6367 g_object_unref(G_OBJECT(pixbuf));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6368 gtk_widget_show(image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6369 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6370 }
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6371 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6372 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6373
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6374 submenu = gtk_menu_new();
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6375 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6376 gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf);
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6377 g_free(accel_path_buf);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6378 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6379 gtk_widget_show(submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6380
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6381
12334
f88c9f928f51 [gaim-migrate @ 14638]
Mark Doliner <markdoliner@pidgin.im>
parents: 12333
diff changeset
6382 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account"));
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6383 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6384 G_CALLBACK(modify_account_cb), account);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6385 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6386 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6387
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6388 pidgin_separator(submenu);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6389
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6390 gc = gaim_account_get_connection(account);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6391 if (gc && GAIM_CONNECTION_IS_CONNECTED(gc)) {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6392 GaimPlugin *plugin = NULL;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6393
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6394 plugin = gc->prpl;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6395 if (GAIM_PLUGIN_HAS_ACTIONS(plugin)) {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6396 GList *l, *ll = NULL;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6397 GaimPluginAction *action = NULL;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6398
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6399 for (l = ll = GAIM_PLUGIN_ACTIONS(plugin, gc); l; l = l->next) {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6400 if (l->data) {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6401 action = (GaimPluginAction *)l->data;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6402 action->plugin = plugin;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6403 action->context = gc;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6404
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6405 menuitem = gtk_menu_item_new_with_label(action->label);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6406 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6407 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6408 G_CALLBACK(plugin_act), action);
13757
aa4297b844b6 [gaim-migrate @ 16166]
Mark Doliner <markdoliner@pidgin.im>
parents: 13753
diff changeset
6409 g_object_set_data_full(G_OBJECT(menuitem), "plugin_action", action, (GDestroyNotify)gaim_plugin_action_free);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6410 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6411 } else
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6412 pidgin_separator(submenu);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6413 }
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6414 } else {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6415 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6416 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6417 gtk_widget_set_sensitive(menuitem, FALSE);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6418 gtk_widget_show(menuitem);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6419 }
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6420 } else {
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6421 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6422 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6423 gtk_widget_set_sensitive(menuitem, FALSE);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6424 gtk_widget_show(menuitem);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6425 }
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6426
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6427 pidgin_separator(submenu);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6428
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6429 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable"));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6430 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6431 G_CALLBACK(disable_account_cb), account);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6432 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6433 gtk_widget_show(menuitem);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6434 } else {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6435 disabled_accounts = TRUE;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6436 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6437 }
9019
b9a333b36763 [gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
6438
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6439 if(disabled_accounts) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6440 pidgin_separator(accountmenu);
12338
3548ced0c9ff [gaim-migrate @ 14642]
Mark Doliner <markdoliner@pidgin.im>
parents: 12337
diff changeset
6441 menuitem = gtk_menu_item_new_with_label(_("Enable Account"));
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6442 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6443 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6444
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6445 submenu = gtk_menu_new();
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6446 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6447 gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<GaimMain>/Accounts/Enable Account"));
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6448 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6449 gtk_widget_show(submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6450
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6451 for (accounts = gaim_accounts_get_all(); accounts; accounts = accounts->next) {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6452 char *buf = NULL;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6453 GtkWidget *image = NULL;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6454 GaimAccount *account = NULL;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6455 GdkPixbuf *pixbuf = NULL;
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6456
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6457 account = accounts->data;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6458
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6459 if(!gaim_account_get_enabled(account, PIDGIN_UI)) {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6460
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6461 disabled_accounts = TRUE;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6462
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6463 buf = g_strconcat(gaim_account_get_username(account), " (",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6464 gaim_account_get_protocol_name(account), ")", NULL);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6465 menuitem = gtk_image_menu_item_new_with_label(buf);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6466 g_free(buf);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6467 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6468 if (pixbuf != NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6469 {
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6470 if (!gaim_account_is_connected(account))
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6471 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6472 image = gtk_image_new_from_pixbuf(pixbuf);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6473 g_object_unref(G_OBJECT(pixbuf));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6474 gtk_widget_show(image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6475 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6476 }
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6477 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6478 G_CALLBACK(enable_account_cb), account);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6479 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6480 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6481 }
9019
b9a333b36763 [gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
6482 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6483 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6484 }
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6485
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6486 static GList *plugin_submenus = NULL;
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6487
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6488 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6489 pidgin_blist_update_plugin_actions(void)
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6490 {
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6491 GtkWidget *menuitem, *submenu;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6492 GaimPlugin *plugin = NULL;
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6493 GList *l;
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6494 GtkAccelGroup *accel_group;
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6495
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6496 GtkWidget *pluginmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools"));
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6497
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6498 g_return_if_fail(pluginmenu != NULL);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6499
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6500 /* Remove old plugin action submenus from the Tools menu */
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6501 for (l = plugin_submenus; l; l = l->next)
15057
909e807e3070 [gaim-migrate @ 17774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15051
diff changeset
6502 gtk_widget_destroy(GTK_WIDGET(l->data));
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6503 g_list_free(plugin_submenus);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6504 plugin_submenus = NULL;
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6505
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6506 accel_group = gtk_menu_get_accel_group(GTK_MENU(pluginmenu));
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6507
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6508 /* Add a submenu for each plugin with custom actions */
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6509 for (l = gaim_plugins_get_loaded(); l; l = l->next) {
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6510 char *path;
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6511
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6512 plugin = (GaimPlugin *) l->data;
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6513
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6514 if (GAIM_IS_PROTOCOL_PLUGIN(plugin))
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6515 continue;
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6516
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6517 if (!GAIM_PLUGIN_HAS_ACTIONS(plugin))
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6518 continue;
9019
b9a333b36763 [gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
6519
13337
1a425a37dcf7 [gaim-migrate @ 15706]
Richard Laager <rlaager@pidgin.im>
parents: 13316
diff changeset
6520 menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name));
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6521 gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6522 gtk_widget_show(menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6523
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6524 plugin_submenus = g_list_append(plugin_submenus, menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6525
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6526 submenu = gtk_menu_new();
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6527 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6528 gtk_widget_show(submenu);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
6529
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6530 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6531 path = g_strdup_printf("%s/Tools/%s", gtkblist->ift->path, plugin->info->name);
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6532 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6533 g_free(path);
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6534
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6535 build_plugin_actions(submenu, plugin);
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6536 }
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6537 }
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6538
12246
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12240
diff changeset
6539 static void
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12240
diff changeset
6540 sortmethod_act(GtkCheckMenuItem *checkmenuitem, char *id)
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6541 {
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6542 if (gtk_check_menu_item_get_active(checkmenuitem))
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6543 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6544 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
6545 /* This is redundant. I think. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6546 /* pidgin_blist_sort_method_set(id); */
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6547 gaim_prefs_set_string("/gaim/gtk/blist/sort_type", id);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6548
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6549 pidgin_clear_cursor(gtkblist->window);
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6550 }
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6551 }
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6552
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6553 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6554 pidgin_blist_update_sort_methods(void)
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6555 {
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6556 GtkWidget *menuitem = NULL, *activeitem = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6557 PidginBlistSortMethod *method = NULL;
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6558 GList *l;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6559 GSList *sl = NULL;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6560 GtkWidget *sortmenu;
11797
b7c1e7e227a0 [gaim-migrate @ 14088]
Nathan Walp <nwalp@pidgin.im>
parents: 11796
diff changeset
6561 const char *m = gaim_prefs_get_string("/gaim/gtk/blist/sort_type");
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6562
15286
ecc4149f47fb [gaim-migrate @ 18014]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
6563 if ((gtkblist == NULL) || (gtkblist->ift == NULL))
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6564 return;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6565
11798
481b46227443 [gaim-migrate @ 14089]
Etan Reisner <deryni@pidgin.im>
parents: 11797
diff changeset
6566 sortmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Sort Buddies"));
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6567
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6568 if (sortmenu == NULL)
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6569 return;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6570
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6571 /* Clear the old menu */
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6572 for (l = gtk_container_get_children(GTK_CONTAINER(sortmenu)); l; l = l->next) {
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6573 menuitem = l->data;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6574 gtk_widget_destroy(GTK_WIDGET(menuitem));
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6575 }
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6576
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6577 for (l = pidgin_blist_sort_methods; l; l = l->next) {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6578 method = (PidginBlistSortMethod *) l->data;
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6579 menuitem = gtk_radio_menu_item_new_with_label(sl, _(method->name));
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6580 if (!strcmp(m, method->id))
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6581 activeitem = menuitem;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6582 sl = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6583 gtk_menu_shell_append(GTK_MENU_SHELL(sortmenu), menuitem);
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6584 g_signal_connect(G_OBJECT(menuitem), "toggled",
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6585 G_CALLBACK(sortmethod_act), method->id);
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6586 gtk_widget_show(menuitem);
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6587 }
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6588 if (activeitem)
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6589 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(activeitem), TRUE);
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6590 }

mercurial