annotate src/gtkblist.c @ 13663:b76c6de0c3b5

[gaim-migrate @ 16065] Kill a number of trivial UNUSED_VALUE "defects": CID 155 CID 156 CID 157 CID 158 CID 159 CID 160 CID 161 CID 162 CID 163 CID 165 CID 166 CID 167 CID 173 CID 174 CID 177 committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Wed, 19 Apr 2006 05:50:50 +0000
parents 3275a0f675e2
children a373da801dc1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
10297
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents: 10288
diff changeset
2 * @file gtkblist.c GTK+ BuddyList API
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents: 10288
diff changeset
3 * @ingroup gtkui
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents: 10288
diff changeset
4 *
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * gaim
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8040
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8040
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 8040
diff changeset
9 * source distribution.
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
1a53330dfd34 [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
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * (at your option) any later version.
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * GNU General Public License for more details.
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
9791
4a15962c344a [gaim-migrate @ 10659]
Mark Doliner <mark@kingant.net>
parents: 9778
diff changeset
26 #include "internal.h"
4a15962c344a [gaim-migrate @ 10659]
Mark Doliner <mark@kingant.net>
parents: 9778
diff changeset
27 #include "gtkgaim.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
28
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
29 #include "account.h"
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
30 #include "connection.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
31 #include "core.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
32 #include "debug.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
33 #include "notify.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
34 #include "prpl.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
35 #include "prefs.h"
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
36 #include "plugin.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
37 #include "request.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
38 #include "signals.h"
10297
ec140184437b [gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents: 10288
diff changeset
39 #include "gtkstock.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
40 #include "util.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
41
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
42 #include "gtkaccount.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
43 #include "gtkblist.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
44 #include "gtkconv.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
45 #include "gtkdebug.h"
9709
4d05b6e9e9cd [gaim-migrate @ 10570]
Mark Doliner <mark@kingant.net>
parents: 9686
diff changeset
46 #include "gtkdialogs.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
47 #include "gtkft.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
48 #include "gtklog.h"
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
49 #include "gtkmenutray.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
50 #include "gtkpounce.h"
11740
7e0ad3b6882a [gaim-migrate @ 14031]
Sean Egan <seanegan@gmail.com>
parents: 11732
diff changeset
51 #include "gtkplugin.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
52 #include "gtkprefs.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
53 #include "gtkprivacy.h"
8113
d60272410bd5 [gaim-migrate @ 8817]
Nathan Walp <nwalp@pidgin.im>
parents: 8089
diff changeset
54 #include "gtkroomlist.h"
10643
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10623
diff changeset
55 #include "gtkstatusbox.h"
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
56 #include "gtkutils.h"
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
57
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
58 #include <gdk/gdkkeysyms.h>
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 #include <gtk/gtk.h>
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
60 #include <gdk/gdk.h>
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
61
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
62 typedef struct
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
63 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
64 GaimAccount *account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
65
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
66 GtkWidget *window;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
67 GtkWidget *combo;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
68 GtkWidget *entry;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
69 GtkWidget *entry_for_alias;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
70 GtkWidget *account_box;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
71
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
72 } GaimGtkAddBuddyData;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
73
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
74 typedef struct
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
75 {
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
76 GaimAccount *account;
9812
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
77 gchar *default_chat_name;
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
78
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
79 GtkWidget *window;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
80 GtkWidget *account_menu;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
81 GtkWidget *alias_entry;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
82 GtkWidget *group_combo;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
83 GtkWidget *entries_box;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
84 GtkSizeGroup *sg;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
85
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
86 GList *entries;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
87
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
88 } GaimGtkAddChatData;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
89
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
90 typedef struct
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
91 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
92 GaimAccount *account;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
93
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
94 GtkWidget *window;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
95 GtkWidget *account_menu;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
96 GtkWidget *entries_box;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
97 GtkSizeGroup *sg;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
98
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
99 GList *entries;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
100 } GaimGtkJoinChatData;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
101
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
102
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
103 static GtkWidget *accountmenu = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
105 static guint visibility_manager_count = 0;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
106 static gboolean gtk_blist_obscured = FALSE;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
107
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
108 static GList *gaim_gtk_blist_sort_methods = NULL;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
109 static struct gaim_gtk_blist_sort_method *current_sort_method = NULL;
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
110 static void sort_method_none(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
111
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
112 /* The functions we use for sorting aren't available in gtk 2.0.x, and
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
113 * segfault in 2.2.0. 2.2.1 is known to work, so I'll require that */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
114 #if GTK_CHECK_VERSION(2,2,1)
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
115 static void sort_method_alphabetical(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
116 static void sort_method_status(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
117 static void sort_method_log(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
118 #endif
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
119 static GaimGtkBuddyList *gtkblist = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
120
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
121 static void gaim_gtk_blist_update_buddy(GaimBuddyList *list, GaimBlistNode *node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
122 static void gaim_gtk_blist_selection_changed(GtkTreeSelection *selection, gpointer data);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
123 static void gaim_gtk_blist_update(GaimBuddyList *list, GaimBlistNode *node);
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
124 static char *gaim_get_tooltip_text(GaimBlistNode *node, gboolean full);
13106
a0a4b44239e8 [gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents: 13090
diff changeset
125 static const char *item_factory_translate_func (const char *path, gpointer func_data);
5273
2e1238f4b4e3 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
126 static gboolean get_iter_from_node(GaimBlistNode *node, GtkTreeIter *iter);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
127 static void redo_buddy_list(GaimBuddyList *list, gboolean remove);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
128 static void gaim_gtk_blist_collapse_contact_cb(GtkWidget *w, GaimBlistNode *node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
129
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
130 static void gaim_gtk_blist_tooltip_destroy(void);
11059
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
131
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
132 struct _gaim_gtk_blist_node {
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
133 GtkTreeRowReference *row;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
134 gboolean contact_expanded;
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
135 gboolean recent_signonoff;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
136 gint recent_signonoff_timer;
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
137 };
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
138
10968
e0d5038fbb7e [gaim-migrate @ 12789]
Christopher O'Brien <siege@pidgin.im>
parents: 10924
diff changeset
139
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
140 static char dim_grey_string[8] = "";
10144
757a7c088801 [gaim-migrate @ 11216]
Mark Doliner <mark@kingant.net>
parents: 10129
diff changeset
141 static char *dim_grey()
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
142 {
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
143 if (!gtkblist)
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
144 return "dim grey";
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
145 if (!dim_grey_string[0]) {
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
146 GtkStyle *style = gtk_widget_get_style(gtkblist->treeview);
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
147 snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
148 style->text_aa[GTK_STATE_NORMAL].red >> 8,
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
149 style->text_aa[GTK_STATE_NORMAL].green >> 8,
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
150 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
151 }
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
152 return dim_grey_string;
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
153 }
10144
757a7c088801 [gaim-migrate @ 11216]
Mark Doliner <mark@kingant.net>
parents: 10129
diff changeset
154
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
155 /***************************************************
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 * Callbacks *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157 ***************************************************/
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
158 static gboolean gtk_blist_visibility_cb(GtkWidget *w, GdkEventVisibility *event, gpointer data)
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
159 {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
160 if (event->state == GDK_VISIBILITY_FULLY_OBSCURED)
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
161 gtk_blist_obscured = TRUE;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
162 else
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
163 gtk_blist_obscured = FALSE;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
164
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
165 /* continue to handle event normally */
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
166 return FALSE;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
167 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
168
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
169 static gboolean gtk_blist_window_state_cb(GtkWidget *w, GdkEventWindowState *event, gpointer data)
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
170 {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
171 if(event->changed_mask & GDK_WINDOW_STATE_WITHDRAWN) {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
172 if(event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
173 gaim_prefs_set_bool("/gaim/gtk/blist/list_visible", FALSE);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
174 else
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
175 gaim_prefs_set_bool("/gaim/gtk/blist/list_visible", TRUE);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
176 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
177
12279
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
178 if(event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
179 if(event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
180 gaim_prefs_set_bool("/gaim/gtk/blist/list_maximized", TRUE);
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
181 else
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
182 gaim_prefs_set_bool("/gaim/gtk/blist/list_maximized", FALSE);
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
183 }
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
184
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
185 return FALSE;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
186 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
187
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
188 static gboolean gtk_blist_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
189 {
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
190 if(visibility_manager_count)
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
191 gaim_blist_set_visible(FALSE);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
192 else
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
193 gaim_core_quit();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195 /* we handle everything, event should not propogate further */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
196 return TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
197 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
198
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
199 static gboolean gtk_blist_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
201 /* unfortunately GdkEventConfigure ignores the window gravity, but *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
202 * the only way we have of setting the position doesn't. we have to *
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
203 * call get_position because it does pay attention to the gravity. *
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
204 * this is inefficient and I agree it sucks, but it's more likely *
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
205 * to work correctly. - Robot101 */
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 gint x, y;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 /* check for visibility because when we aren't visible, this will *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
209 * give us bogus (0,0) coordinates. - xOr */
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
210 if (GTK_WIDGET_VISIBLE(w))
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211 gtk_window_get_position(GTK_WINDOW(w), &x, &y);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
212 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
213 return FALSE; /* carry on normally */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
214
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
215 /* don't save if nothing changed */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
216 if (x == gaim_prefs_get_int("/gaim/gtk/blist/x") &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
217 y == gaim_prefs_get_int("/gaim/gtk/blist/y") &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
218 event->width == gaim_prefs_get_int("/gaim/gtk/blist/width") &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
219 event->height == gaim_prefs_get_int("/gaim/gtk/blist/height")) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
220
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
221 return FALSE; /* carry on normally */
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
222 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
223
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
224 /* don't save off-screen positioning */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
225 if (x + event->width < 0 ||
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
226 y + event->height < 0 ||
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
227 x > gdk_screen_width() ||
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
228 y > gdk_screen_height()) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
229
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
230 return FALSE; /* carry on normally */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
231 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
232
12279
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
233 /* ignore changes when maximized */
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
234 if(gaim_prefs_get_bool("/gaim/gtk/blist/list_maximized"))
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
235 return FALSE;
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
236
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
237 /* store the position */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
238 gaim_prefs_set_int("/gaim/gtk/blist/x", x);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
239 gaim_prefs_set_int("/gaim/gtk/blist/y", y);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
240 gaim_prefs_set_int("/gaim/gtk/blist/width", event->width);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
241 gaim_prefs_set_int("/gaim/gtk/blist/height", event->height);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
242
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
243 /* continue to handle event normally */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
244 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
245 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
246
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
247 static void gtk_blist_menu_info_cb(GtkWidget *w, GaimBuddy *b)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
248 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
249 serv_get_info(b->account->gc, b->name);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
250 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
251
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
252 static void gtk_blist_menu_im_cb(GtkWidget *w, GaimBuddy *b)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
253 {
9728
8be2c406a1f1 [gaim-migrate @ 10589]
Mark Doliner <mark@kingant.net>
parents: 9714
diff changeset
254 gaim_gtkdialogs_im_with_user(b->account, b->name);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
255 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
256
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
257 static void gtk_blist_menu_send_file_cb(GtkWidget *w, GaimBuddy *b)
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
258 {
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
259 serv_send_file(b->account->gc, b->name, NULL);
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
260 }
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
261
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
262 static void gtk_blist_menu_autojoin_cb(GtkWidget *w, GaimChat *chat)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
263 {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
264 gaim_blist_node_set_bool((GaimBlistNode*)chat, "gtk-autojoin",
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
265 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
266 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
267
12576
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
268 static void gtk_blist_join_chat(GaimChat *chat)
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
269 {
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
270 GaimConversation *conv;
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
271
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
272 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT,
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
273 gaim_chat_get_name(chat),
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
274 chat->account);
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
275
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
276 if (conv != NULL)
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
277 gaim_gtkconv_present_conversation(conv);
12592
37160dd563fa [gaim-migrate @ 14922]
Richard Laager <rlaager@wiktel.com>
parents: 12589
diff changeset
278
37160dd563fa [gaim-migrate @ 14922]
Richard Laager <rlaager@wiktel.com>
parents: 12589
diff changeset
279 serv_join_chat(chat->account->gc, chat->components);
12576
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
280 }
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
281
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
282 static void gtk_blist_menu_join_cb(GtkWidget *w, GaimChat *chat)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 {
12576
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
284 gtk_blist_join_chat(chat);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
285 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
286
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
287 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1,
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
288 char *arg2, gpointer nada)
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
289 {
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
290 GtkTreeIter iter;
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
291 GtkTreePath *path;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
292 GValue val;
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
293 GaimBlistNode *node;
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
294
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
295 path = gtk_tree_path_new_from_string (arg1);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
296 gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
297 gtk_tree_path_free (path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
298 val.g_type = 0;
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
299 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
300 node = g_value_get_pointer(&val);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
301 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
302 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL);
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
303
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
304 switch (node->type)
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
305 {
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
306 case GAIM_BLIST_CONTACT_NODE:
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
307 {
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
308 GaimContact *contact = (GaimContact *)node;
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
309 struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
310
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
311 if (contact->alias || gtknode->contact_expanded)
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
312 gaim_blist_alias_contact(contact, arg2);
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
313 else
12478
8489040cf97b [gaim-migrate @ 14789]
Richard Laager <rlaager@wiktel.com>
parents: 12474
diff changeset
314 {
8489040cf97b [gaim-migrate @ 14789]
Richard Laager <rlaager@wiktel.com>
parents: 12474
diff changeset
315 GaimBuddy *buddy = gaim_contact_get_priority_buddy(contact);
8489040cf97b [gaim-migrate @ 14789]
Richard Laager <rlaager@wiktel.com>
parents: 12474
diff changeset
316 gaim_blist_alias_buddy(buddy, arg2);
8489040cf97b [gaim-migrate @ 14789]
Richard Laager <rlaager@wiktel.com>
parents: 12474
diff changeset
317 serv_alias_buddy(buddy);
8489040cf97b [gaim-migrate @ 14789]
Richard Laager <rlaager@wiktel.com>
parents: 12474
diff changeset
318 }
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
319 }
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
320 break;
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
321
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
322 case GAIM_BLIST_BUDDY_NODE:
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
323 gaim_blist_alias_buddy((GaimBuddy*)node, arg2);
12478
8489040cf97b [gaim-migrate @ 14789]
Richard Laager <rlaager@wiktel.com>
parents: 12474
diff changeset
324 serv_alias_buddy((GaimBuddy *)node);
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
325 break;
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
326 case GAIM_BLIST_GROUP_NODE:
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
327 gaim_blist_rename_group((GaimGroup*)node, arg2);
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
328 break;
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
329 case GAIM_BLIST_CHAT_NODE:
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
330 gaim_blist_alias_chat((GaimChat*)node, arg2);
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
331 break;
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
332 default:
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
333 break;
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
334 }
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
335 }
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
336
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
337 static void gtk_blist_menu_alias_cb(GtkWidget *w, GaimBlistNode *node)
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
338 {
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
339 GtkTreeIter iter;
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
340 GtkTreePath *path;
11258
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
341 const char *text = NULL;
13509
56abb67edec9 [gaim-migrate @ 15885]
Richard Laager <rlaager@wiktel.com>
parents: 13478
diff changeset
342 char *esc;
11494
3314953511de [gaim-migrate @ 13738]
Tim Ringenbach <marv@pidgin.im>
parents: 11490
diff changeset
343
11258
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
344 if (!(get_iter_from_node(node, &iter))) {
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
345 /* This is either a bug, or the buddy is in a collapsed contact */
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
346 node = node->parent;
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
347 if (!get_iter_from_node(node, &iter))
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
348 /* Now it's definitely a bug */
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
349 return;
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
350 }
11258
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
351
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
352 switch (node->type) {
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
353 case GAIM_BLIST_BUDDY_NODE:
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
354 text = gaim_buddy_get_alias((GaimBuddy *)node);
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
355 break;
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
356 case GAIM_BLIST_CONTACT_NODE:
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
357 text = gaim_contact_get_alias((GaimContact *)node);
11258
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
358 break;
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
359 case GAIM_BLIST_GROUP_NODE:
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
360 text = ((GaimGroup *)node)->name;
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
361 break;
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
362 case GAIM_BLIST_CHAT_NODE:
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
363 text = gaim_chat_get_name((GaimChat *)node);
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
364 break;
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
365 default:
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
366 g_return_if_reached();
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
367 }
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
368
13509
56abb67edec9 [gaim-migrate @ 15885]
Richard Laager <rlaager@wiktel.com>
parents: 13478
diff changeset
369 esc = g_markup_escape_text(text, -1);
56abb67edec9 [gaim-migrate @ 15885]
Richard Laager <rlaager@wiktel.com>
parents: 13478
diff changeset
370 gtk_tree_store_set(gtkblist->treemodel, &iter, NAME_COLUMN, esc, -1);
56abb67edec9 [gaim-migrate @ 15885]
Richard Laager <rlaager@wiktel.com>
parents: 13478
diff changeset
371 g_free(esc);
11258
421d91546327 [gaim-migrate @ 13433]
Sean Egan <seanegan@gmail.com>
parents: 11257
diff changeset
372
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
373 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
374 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
375 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
376 gtk_widget_grab_focus(gtkblist->treeview);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
377 gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkblist->treeview), path, gtkblist->text_column, TRUE);
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
378 gtk_tree_path_free(path);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
381 static void gtk_blist_menu_bp_cb(GtkWidget *w, GaimBuddy *b)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382 {
12136
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
383 gaim_gtk_pounce_editor_show(b->account, b->name, NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
386 static void gtk_blist_menu_showlog_cb(GtkWidget *w, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387 {
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
388 GaimLogType type;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
389 GaimAccount *account;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
390 char *name = NULL;
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
391
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
392 gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
12232
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
393
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
394 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
395 GaimBuddy *b = (GaimBuddy*) node;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
396 type = GAIM_LOG_IM;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
397 name = g_strdup(b->name);
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
398 account = b->account;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
399 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
400 GaimChat *c = (GaimChat*) node;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
401 GaimPluginProtocolInfo *prpl_info = NULL;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
402 type = GAIM_LOG_CHAT;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
403 account = c->account;
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
404 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(account)));
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
405 if (prpl_info && prpl_info->get_chat_name) {
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
406 name = prpl_info->get_chat_name(c->components);
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
407 }
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
408 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
409 gaim_gtk_log_show_contact((GaimContact *)node);
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
410 gaim_gtk_clear_cursor(gtkblist->window);
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
411 return;
12232
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
412 } else {
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
413 gaim_gtk_clear_cursor(gtkblist->window);
12232
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
414
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
415 /* This callback should not have been registered for a node
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
416 * that doesn't match the type of one of the blocks above. */
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
417 g_return_if_reached();
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
418 }
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
419
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
420 if (name && account) {
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
421 gaim_gtk_log_show(type, name, account);
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
422 g_free(name);
12232
375f1f3817a8 [gaim-migrate @ 14534]
Richard Laager <rlaager@wiktel.com>
parents: 12226
diff changeset
423
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
424 gaim_gtk_clear_cursor(gtkblist->window);
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
425 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
426 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
427
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
428 static void gtk_blist_show_systemlog_cb()
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
429 {
8573
7dcd6f26e4a7 [gaim-migrate @ 9321]
Luke Schierer <lschiere@pidgin.im>
parents: 8470
diff changeset
430 gaim_gtk_syslog_show();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433 static void gtk_blist_show_onlinehelp_cb()
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
434 {
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10229
diff changeset
435 gaim_notify_uri(NULL, GAIM_WEBSITE "documentation.php");
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
438 static void
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
439 do_join_chat(GaimGtkJoinChatData *data)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
440 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
441 if (data)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
442 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
443 GHashTable *components =
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
444 g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
445 GList *tmp;
12576
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
446 GaimChat *chat;
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
447
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
448 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
449 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
450 if (g_object_get_data(tmp->data, "is_spin"))
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
451 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
452 g_hash_table_replace(components,
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
453 g_strdup(g_object_get_data(tmp->data, "identifier")),
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
454 g_strdup_printf("%d",
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
455 gtk_spin_button_get_value_as_int(tmp->data)));
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
456 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
457 else
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
458 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
459 g_hash_table_replace(components,
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
460 g_strdup(g_object_get_data(tmp->data, "identifier")),
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
461 g_strdup(gtk_entry_get_text(tmp->data)));
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
462 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
463 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
464
12576
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
465 chat = gaim_chat_new(data->account, NULL, components);
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
466 gtk_blist_join_chat(chat);
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
467 gaim_blist_remove_chat(chat);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
468 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
469 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
470
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
471 static void
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
472 do_joinchat(GtkWidget *dialog, int id, GaimGtkJoinChatData *info)
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
473 {
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
474 switch(id)
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
475 {
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
476 case GTK_RESPONSE_OK:
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
477 do_join_chat(info);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
478
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
479 break;
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
480 }
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
481
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
482 gtk_widget_destroy(GTK_WIDGET(dialog));
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
483 g_list_free(info->entries);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
484 g_free(info);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
485 }
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
486
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
487 /*
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
488 * Check the values of all the text entry boxes. If any required input
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
489 * strings are empty then don't allow the user to click on "OK."
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
490 */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
491 static void
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
492 joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
493 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
494 GaimGtkJoinChatData *data;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
495 GList *tmp;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
496 const char *text;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
497 gboolean required;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
498 gboolean sensitive = TRUE;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
499
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
500 data = user_data;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
501
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
502 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
503 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
504 if (!g_object_get_data(tmp->data, "is_spin"))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
505 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
506 required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
507 text = gtk_entry_get_text(tmp->data);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
508 if (required && (*text == '\0'))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
509 sensitive = FALSE;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
510 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
511 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
512
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
513 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
514 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
515
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
516 static void
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
517 rebuild_joinchat_entries(GaimGtkJoinChatData *data)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
518 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
519 GaimConnection *gc;
9959
b6a74cbfd182 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
520 GList *list = NULL, *tmp = NULL;
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
521 GHashTable *defaults = NULL;
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
522 struct proto_chat_entry *pce;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
523 gboolean focus = TRUE;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
524
10127
23e101b522f1 [gaim-migrate @ 11165]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10118
diff changeset
525 g_return_if_fail(data->account != NULL);
23e101b522f1 [gaim-migrate @ 11165]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10118
diff changeset
526
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
527 gc = gaim_account_get_connection(data->account);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
528
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
529 while (GTK_BOX(data->entries_box)->children)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
530 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
531 gtk_container_remove(GTK_CONTAINER(data->entries_box),
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
532 ((GtkBoxChild *)GTK_BOX(data->entries_box)->children->data)->widget);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
533 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
534
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
535 if (data->entries != NULL)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
536 g_list_free(data->entries);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
537
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
538 data->entries = NULL;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
539
9987
5eedb0a9093d [gaim-migrate @ 10900]
Luke Schierer <lschiere@pidgin.im>
parents: 9959
diff changeset
540 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
9959
b6a74cbfd182 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
541 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
542
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
543 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
544 defaults = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, NULL);
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
545
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
546 for (tmp = list; tmp; tmp = tmp->next)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
547 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
548 GtkWidget *label;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
549 GtkWidget *rowbox;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
550 GtkWidget *input;
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
551
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
552 pce = tmp->data;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
553
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
554 rowbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
555 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
556
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
557 label = gtk_label_new_with_mnemonic(pce->label);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
558 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
559 gtk_size_group_add_widget(data->sg, label);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
560 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
561
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
562 if (pce->is_int)
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
563 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
564 GtkObject *adjust;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
565 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
566 1, 10, 10);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
567 input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
568 gtk_widget_set_size_request(input, 50, -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
569 gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
570 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
571 else
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
572 {
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
573 char *value;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
574 input = gtk_entry_new();
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
575 gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
576 value = g_hash_table_lookup(defaults, pce->identifier);
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9754
diff changeset
577 if (value != NULL)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
578 gtk_entry_set_text(GTK_ENTRY(input), value);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
579 if (pce->secret)
11986
bfbb1798535e [gaim-migrate @ 14279]
Mark Doliner <mark@kingant.net>
parents: 11983
diff changeset
580 {
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
581 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
11986
bfbb1798535e [gaim-migrate @ 14279]
Mark Doliner <mark@kingant.net>
parents: 11983
diff changeset
582 gtk_entry_set_invisible_char(GTK_ENTRY(input), GAIM_INVISIBLE_CHAR);
bfbb1798535e [gaim-migrate @ 14279]
Mark Doliner <mark@kingant.net>
parents: 11983
diff changeset
583 }
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
584 gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
585 g_signal_connect(G_OBJECT(input), "changed",
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
586 G_CALLBACK(joinchat_set_sensitive_if_input_cb), data);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
587 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
588
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
589 /* Do the following for any type of input widget */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
590 if (focus)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
591 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
592 gtk_widget_grab_focus(input);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
593 focus = FALSE;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
594 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
595 gtk_label_set_mnemonic_widget(GTK_LABEL(label), input);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
596 gaim_set_accessible_label(input, label);
13106
a0a4b44239e8 [gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents: 13090
diff changeset
597 g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
598 g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
599 g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
600 data->entries = g_list_append(data->entries, input);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
601
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
602 g_free(pce);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
603 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
604
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
605 g_list_free(list);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
606 g_hash_table_destroy(defaults);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
607
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
608 /* Set whether the "OK" button should be clickable initially */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
609 joinchat_set_sensitive_if_input_cb(NULL, data);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
610
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
611 gtk_widget_show_all(data->entries_box);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
612 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
613
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
614 static void
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
615 joinchat_select_account_cb(GObject *w, GaimAccount *account,
13559
bbbde2f5c03b [gaim-migrate @ 15938]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13545
diff changeset
616 GaimGtkJoinChatData *data)
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
617 {
13559
bbbde2f5c03b [gaim-migrate @ 15938]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13545
diff changeset
618 data->account = account;
bbbde2f5c03b [gaim-migrate @ 15938]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13545
diff changeset
619 rebuild_joinchat_entries(data);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
620 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
621
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
622 static gboolean
9987
5eedb0a9093d [gaim-migrate @ 10900]
Luke Schierer <lschiere@pidgin.im>
parents: 9959
diff changeset
623 chat_account_filter_func(GaimAccount *account)
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
624 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
625 GaimConnection *gc = gaim_account_get_connection(account);
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
626 GaimPluginProtocolInfo *prpl_info = NULL;
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
627
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
628 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
629
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
630 return (prpl_info->chat_info != NULL);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
631 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
632
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
633 gboolean
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
634 gaim_gtk_blist_joinchat_is_showable()
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
635 {
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
636 GList *c;
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
637 GaimConnection *gc;
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
638
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
639 for (c = gaim_connections_get_all(); c != NULL; c = c->next) {
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
640 gc = c->data;
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
641
9987
5eedb0a9093d [gaim-migrate @ 10900]
Luke Schierer <lschiere@pidgin.im>
parents: 9959
diff changeset
642 if (chat_account_filter_func(gaim_connection_get_account(gc)))
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
643 return TRUE;
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
644 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
645
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
646 return FALSE;
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
647 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
648
8305
57bdd25752c1 [gaim-migrate @ 9029]
Christian Hammond <chipx86@chipx86.com>
parents: 8303
diff changeset
649 void
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
650 gaim_gtk_blist_joinchat_show(void)
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
651 {
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
652 GtkWidget *hbox, *vbox;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
653 GtkWidget *rowbox;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
654 GtkWidget *label;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
655 GaimGtkBuddyList *gtkblist;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
656 GtkWidget *img = NULL;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
657 GaimGtkJoinChatData *data = NULL;
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
658
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
659 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
660 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
661 GTK_ICON_SIZE_DIALOG);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
662 data = g_new0(GaimGtkJoinChatData, 1);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
663
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
664 data->window = gtk_dialog_new_with_buttons(_("Join a Chat"),
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
665 NULL, GTK_DIALOG_NO_SEPARATOR,
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
666 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8305
diff changeset
667 GAIM_STOCK_CHAT, GTK_RESPONSE_OK, NULL);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
668 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
669 gtk_container_set_border_width(GTK_CONTAINER(data->window), GAIM_HIG_BOX_SPACE);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
670 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
671 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BORDER);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
672 gtk_container_set_border_width(
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
673 GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
674 gtk_window_set_role(GTK_WINDOW(data->window), "join_chat");
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
675
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
676 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
677 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
678 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
679 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
680
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
681 vbox = gtk_vbox_new(FALSE, 5);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
682 gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
683 gtk_container_add(GTK_CONTAINER(hbox), vbox);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
684
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
685 label = gtk_label_new(_("Please enter the appropriate information "
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
686 "about the chat you would like to join.\n"));
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
687 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
688 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
689 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
690
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
691 rowbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
692 gtk_box_pack_start(GTK_BOX(vbox), rowbox, TRUE, TRUE, 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
693
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
694 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
695
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
696 label = gtk_label_new_with_mnemonic(_("_Account:"));
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
697 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
698 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
699 gtk_size_group_add_widget(data->sg, label);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
700
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
701 data->account_menu = gaim_gtk_account_option_menu_new(NULL, FALSE,
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
702 G_CALLBACK(joinchat_select_account_cb),
9987
5eedb0a9093d [gaim-migrate @ 10900]
Luke Schierer <lschiere@pidgin.im>
parents: 9959
diff changeset
703 chat_account_filter_func, data);
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
704 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
705 gtk_label_set_mnemonic_widget(GTK_LABEL(label),
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
706 GTK_WIDGET(data->account_menu));
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
707 gaim_set_accessible_label (data->account_menu, label);
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
708
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
709 data->entries_box = gtk_vbox_new(FALSE, 5);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
710 gtk_container_add(GTK_CONTAINER(vbox), data->entries_box);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
711 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
712
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
713 data->account = gaim_gtk_account_option_menu_get_selected(data->account_menu);
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
714
8303
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
715 rebuild_joinchat_entries(data);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
716
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
717 g_signal_connect(G_OBJECT(data->window), "response",
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
718 G_CALLBACK(do_joinchat), data);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
719
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
720 g_object_unref(data->sg);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
721
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
722 gtk_widget_show_all(data->window);
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
723 }
4eb4b2a6c604 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
724
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
725 static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
726 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
727 GValue val;
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
728
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
729 val.g_type = 0;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
730 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
731
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
732 node = g_value_get_pointer(&val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
733
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
734 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
735 gaim_blist_node_set_bool(node, "collapsed", FALSE);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
736 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
737 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
738
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
739 static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
740 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
741 GValue val;
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
742
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
743 val.g_type = 0;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
744 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
745
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
746 node = g_value_get_pointer(&val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
747
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
748 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
749 gaim_blist_node_set_bool(node, "collapsed", TRUE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
750 } else if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
751 gaim_gtk_blist_collapse_contact_cb(NULL, node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
752 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
753 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
754
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
755 static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
756 GaimBlistNode *node;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
757 GtkTreeIter iter;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
758 GValue val;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
759
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
760 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
761
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
762 val.g_type = 0;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
763 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
764 node = g_value_get_pointer(&val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
765
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
766 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
767 GaimBuddy *buddy;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
768
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
769 if(GAIM_BLIST_NODE_IS_CONTACT(node))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
770 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
771 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
772 buddy = (GaimBuddy*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
773
9728
8be2c406a1f1 [gaim-migrate @ 10589]
Mark Doliner <mark@kingant.net>
parents: 9714
diff changeset
774 gaim_gtkdialogs_im_with_user(buddy->account, buddy->name);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
775 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
12576
1246935dd047 [gaim-migrate @ 14898]
Richard Laager <rlaager@wiktel.com>
parents: 12569
diff changeset
776 gtk_blist_join_chat((GaimChat *)node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
777 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
778 if (gtk_tree_view_row_expanded(tv, path))
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
779 gtk_tree_view_collapse_row(tv, path);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
780 else
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
781 gtk_tree_view_expand_row(tv,path,FALSE);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
782 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
783 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
784
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
785 static void gaim_gtk_blist_add_chat_cb()
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
786 {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
787 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
788 GtkTreeIter iter;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
789 GaimBlistNode *node;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
790
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
791 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
792 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
793 if (GAIM_BLIST_NODE_IS_BUDDY(node))
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
794 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent->parent, NULL, NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
795 if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node))
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
796 gaim_blist_request_add_chat(NULL, (GaimGroup*)node->parent, NULL, NULL);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
797 else if (GAIM_BLIST_NODE_IS_GROUP(node))
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
798 gaim_blist_request_add_chat(NULL, (GaimGroup*)node, NULL, NULL);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
799 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
800 else {
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
801 gaim_blist_request_add_chat(NULL, NULL, NULL, NULL);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
802 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
803 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
804
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
805 static void gaim_gtk_blist_add_buddy_cb()
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
806 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
807 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
808 GtkTreeIter iter;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
809 GaimBlistNode *node;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
810
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
811 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
812 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
813 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
814 gaim_blist_request_add_buddy(NULL, NULL, ((GaimGroup*)node->parent->parent)->name,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
815 NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
816 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
817 || GAIM_BLIST_NODE_IS_CHAT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
818 gaim_blist_request_add_buddy(NULL, NULL, ((GaimGroup*)node->parent)->name, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
819 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
820 gaim_blist_request_add_buddy(NULL, NULL, ((GaimGroup*)node)->name, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
821 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
822 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
823 else {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
824 gaim_blist_request_add_buddy(NULL, NULL, NULL, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
825 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
826 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
827
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
828 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
829 gaim_gtk_blist_remove_cb (GtkWidget *w, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
830 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
831 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
9730
c9ac1976ef01 [gaim-migrate @ 10591]
Mark Doliner <mark@kingant.net>
parents: 9728
diff changeset
832 gaim_gtkdialogs_remove_buddy((GaimBuddy*)node);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
833 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
9730
c9ac1976ef01 [gaim-migrate @ 10591]
Mark Doliner <mark@kingant.net>
parents: 9728
diff changeset
834 gaim_gtkdialogs_remove_chat((GaimChat*)node);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
835 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
9730
c9ac1976ef01 [gaim-migrate @ 10591]
Mark Doliner <mark@kingant.net>
parents: 9728
diff changeset
836 gaim_gtkdialogs_remove_group((GaimGroup*)node);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
837 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
9730
c9ac1976ef01 [gaim-migrate @ 10591]
Mark Doliner <mark@kingant.net>
parents: 9728
diff changeset
838 gaim_gtkdialogs_remove_contact((GaimContact*)node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
839 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
840 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
841
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
842 static void
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
843 gaim_gtk_blist_expand_contact_cb(GtkWidget *w, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
844 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
845 struct _gaim_gtk_blist_node *gtknode;
9632
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
846 GtkTreeIter iter, parent;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
847 GaimBlistNode *bnode;
10325
1657438d537b [gaim-migrate @ 11532]
Mark Doliner <mark@kingant.net>
parents: 10320
diff changeset
848 GtkTreePath *path;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
849
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
850 if(!GAIM_BLIST_NODE_IS_CONTACT(node))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
851 return;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
852
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
853 gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
854
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
855 gtknode->contact_expanded = TRUE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
856
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
857 for(bnode = node->child; bnode; bnode = bnode->next) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
858 gaim_gtk_blist_update(NULL, bnode);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
859 }
10353
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
860
9632
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
861 /* This ensures that the bottom buddy is visible, i.e. not scrolled off the alignment */
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
862 get_iter_from_node(node, &parent);
10353
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
863 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(gtkblist->treemodel), &iter, &parent,
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
864 gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &parent) -1);
9632
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
865 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
866 /* Let the treeview draw so it knows where to scroll */
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
867 while (gtk_events_pending())
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
868 gtk_main_iteration();
10353
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
869 gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(gtkblist->treeview), path, NULL, FALSE, 0, 0);
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
870
9632
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
871
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
872 gaim_gtk_blist_update(NULL, node);
9632
885bba4f9d3b [gaim-migrate @ 10476]
Sean Egan <seanegan@gmail.com>
parents: 9620
diff changeset
873 gtk_tree_path_free(path);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
874 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
875
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
876 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
877 gaim_gtk_blist_collapse_contact_cb(GtkWidget *w, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
878 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
879 GaimBlistNode *bnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
880 struct _gaim_gtk_blist_node *gtknode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
881
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
882 if(!GAIM_BLIST_NODE_IS_CONTACT(node))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
883 return;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
884
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
885 gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
886
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
887 gtknode->contact_expanded = FALSE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
888
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
889 for(bnode = node->child; bnode; bnode = bnode->next) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
890 gaim_gtk_blist_update(NULL, bnode);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
891 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
892 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
893
9051
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
894 void
10662
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10643
diff changeset
895 gaim_gtk_append_blist_node_proto_menu(GtkWidget *menu, GaimConnection *gc,
54ac161a876e [gaim-migrate @ 12199]
Etan Reisner <pidgin@unreliablesource.net>
parents: 10643
diff changeset
896 GaimBlistNode *node)
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
897 {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
898 GList *l, *ll;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
899 GaimPluginProtocolInfo *prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
900
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
901 if(!prpl_info || !prpl_info->blist_node_menu)
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
902 return;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
903
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
904 for(l = ll = prpl_info->blist_node_menu(node); l; l = l->next) {
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12883
diff changeset
905 GaimMenuAction *act = (GaimMenuAction *) l->data;
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12883
diff changeset
906 gaim_gtk_append_menu_action(menu, act, node);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
907 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
908 g_list_free(ll);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
909 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
910
9051
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
911 void
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12883
diff changeset
912 gaim_gtk_append_blist_node_extended_menu(GtkWidget *menu, GaimBlistNode *node)
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
913 {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
914 GList *l, *ll;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
915
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
916 for(l = ll = gaim_blist_node_get_extended_menu(node); l; l = l->next) {
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12883
diff changeset
917 GaimMenuAction *act = (GaimMenuAction *) l->data;
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12883
diff changeset
918 gaim_gtk_append_menu_action(menu, act, node);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
919 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
920 g_list_free(ll);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
921 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
922
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
923 void
10484
ec82cbb21fe8 [gaim-migrate @ 11774]
Nathan Walp <nwalp@pidgin.im>
parents: 10483
diff changeset
924 gaim_gtk_blist_make_buddy_menu(GtkWidget *menu, GaimBuddy *buddy, gboolean sub) {
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
925 GaimPluginProtocolInfo *prpl_info;
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
926 GaimContact *contact;
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
927 gboolean contact_expanded = FALSE;
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
928
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
929 g_return_if_fail(menu);
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
930 g_return_if_fail(buddy);
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
931
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
932 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
933
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
934 contact = gaim_buddy_get_contact(buddy);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
935 if (contact) {
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
936 contact_expanded = ((struct _gaim_gtk_blist_node *)(((GaimBlistNode*)contact)->ui_data))->contact_expanded;
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
937 }
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
938
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
939 if (prpl_info && prpl_info->get_info) {
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
940 gaim_new_item_from_stock(menu, _("Get _Info"), GAIM_STOCK_INFO,
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
941 G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
942 }
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
943 gaim_new_item_from_stock(menu, _("I_M"), GAIM_STOCK_IM,
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
944 G_CALLBACK(gtk_blist_menu_im_cb), buddy, 0, 0, NULL);
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
945 if (prpl_info && prpl_info->send_file) {
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
946 if (!prpl_info->can_receive_file ||
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
947 prpl_info->can_receive_file(buddy->account->gc, buddy->name))
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
948 {
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
949 gaim_new_item_from_stock(menu, _("_Send File"),
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
950 GAIM_STOCK_FILE_TRANSFER,
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
951 G_CALLBACK(gtk_blist_menu_send_file_cb),
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
952 buddy, 0, 0, NULL);
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
953 }
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9460
diff changeset
954 }
12024
e67993da8a22 [gaim-migrate @ 14317]
Sean Egan <seanegan@gmail.com>
parents: 12016
diff changeset
955
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
956 gaim_new_item_from_stock(menu, _("Add Buddy _Pounce"), GAIM_STOCK_POUNCE,
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
957 G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
958
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
959 if(((GaimBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
960 gaim_new_item_from_stock(menu, _("View _Log"), GAIM_STOCK_LOG,
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
961 G_CALLBACK(gtk_blist_menu_showlog_cb),
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
962 contact, 0, 0, NULL);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
963 } else if (!sub) {
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
964 gaim_new_item_from_stock(menu, _("View _Log"), GAIM_STOCK_LOG,
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
965 G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
966 }
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
967
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
968 gaim_gtk_append_blist_node_proto_menu(menu, buddy->account->gc,
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
969 (GaimBlistNode *)buddy);
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
970 gaim_gtk_append_blist_node_extended_menu(menu, (GaimBlistNode *)buddy);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
971
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
972 if (((GaimBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
973 gaim_separator(menu);
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
974
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
975 gaim_new_item_from_stock(menu, _("Alias..."), GAIM_STOCK_ALIAS,
9925
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
976 G_CALLBACK(gtk_blist_menu_alias_cb),
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
977 contact, 0, 0, NULL);
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
978 gaim_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE,
9925
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
979 G_CALLBACK(gaim_gtk_blist_remove_cb),
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
980 contact, 0, 0, NULL);
12319
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
981 } else if (!sub || contact_expanded) {
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
982 gaim_separator(menu);
7630a95f3b8b [gaim-migrate @ 14623]
Richard Laager <rlaager@wiktel.com>
parents: 12302
diff changeset
983
9925
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
984 gaim_new_item_from_stock(menu, _("_Alias..."), GAIM_STOCK_ALIAS,
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
985 G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL);
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
986 gaim_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
987 G_CALLBACK(gaim_gtk_blist_remove_cb), buddy,
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
988 0, 0, NULL);
4e7590473515 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
989 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
990 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
991
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
992 static gboolean
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
993 gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
994 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
995 GValue val;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
996 GtkTreeIter iter;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
997 GtkTreeSelection *sel;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
998
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
999 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1000 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1001 return FALSE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1002
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1003 val.g_type = 0;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1004 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1005 NODE_COLUMN, &val);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1006 node = g_value_get_pointer(&val);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1007
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1008 if(event->state & GDK_CONTROL_MASK &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1009 (event->keyval == 'o' || event->keyval == 'O')) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1010 GaimBuddy *buddy;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1011
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1012 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1013 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1014 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1015 buddy = (GaimBuddy*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1016 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1017 return FALSE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1018 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1019 if(buddy)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1020 serv_get_info(buddy->account->gc, buddy->name);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1021 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1022
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1023 return FALSE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1024 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1025
9013
d494fd1bd90b [gaim-migrate @ 9789]
Luke Schierer <lschiere@pidgin.im>
parents: 8986
diff changeset
1026
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1027 static GtkWidget *
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8945
diff changeset
1028 create_group_menu (GaimBlistNode *node, GaimGroup *g)
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1029 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1030 GtkWidget *menu;
11988
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
1031 GtkWidget *item;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1032
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1033 menu = gtk_menu_new();
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1034 gaim_new_item_from_stock(menu, _("Add a _Buddy"), GTK_STOCK_ADD,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1035 G_CALLBACK(gaim_gtk_blist_add_buddy_cb), node, 0, 0, NULL);
11988
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
1036 item = gaim_new_item_from_stock(menu, _("Add a C_hat"), GTK_STOCK_ADD,
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1037 G_CALLBACK(gaim_gtk_blist_add_chat_cb), node, 0, 0, NULL);
11988
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
1038 gtk_widget_set_sensitive(item, gaim_gtk_blist_joinchat_is_showable());
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1039 gaim_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1040 G_CALLBACK(gaim_gtk_blist_remove_cb), node, 0, 0, NULL);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1041 gaim_new_item_from_stock(menu, _("_Rename"), NULL,
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
1042 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8945
diff changeset
1043
9051
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
1044 gaim_gtk_append_blist_node_extended_menu(menu, node);
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8945
diff changeset
1045
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1046 return menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1047 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1048
8586
5af95c2b1179 [gaim-migrate @ 9336]
Ethan Blanton <elb@pidgin.im>
parents: 8573
diff changeset
1049
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1050 static GtkWidget *
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
1051 create_chat_menu(GaimBlistNode *node, GaimChat *c) {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1052 GtkWidget *menu;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1053 gboolean autojoin;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1054
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1055 menu = gtk_menu_new();
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1056 autojoin = (gaim_blist_node_get_bool(node, "gtk-autojoin") ||
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1057 (gaim_blist_node_get_string(node, "gtk-autojoin") != NULL));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1058
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1059 gaim_new_item_from_stock(menu, _("_Join"), GAIM_STOCK_CHAT,
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1060 G_CALLBACK(gtk_blist_menu_join_cb), node, 0, 0, NULL);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1061 gaim_new_check_item(menu, _("Auto-Join"),
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1062 G_CALLBACK(gtk_blist_menu_autojoin_cb), node, autojoin);
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
1063 gaim_new_item_from_stock(menu, _("View _Log"), GAIM_STOCK_LOG,
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9869
diff changeset
1064 G_CALLBACK(gtk_blist_menu_showlog_cb), node, 0, 0, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1065
9051
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
1066 gaim_gtk_append_blist_node_proto_menu(menu, c->account->gc, node);
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
1067 gaim_gtk_append_blist_node_extended_menu(menu, node);
8586
5af95c2b1179 [gaim-migrate @ 9336]
Ethan Blanton <elb@pidgin.im>
parents: 8573
diff changeset
1068
5af95c2b1179 [gaim-migrate @ 9336]
Ethan Blanton <elb@pidgin.im>
parents: 8573
diff changeset
1069 gaim_separator(menu);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9019
diff changeset
1070
8302
462ead6fc1a0 [gaim-migrate @ 9026]
Christian Hammond <chipx86@chipx86.com>
parents: 8259
diff changeset
1071 gaim_new_item_from_stock(menu, _("_Alias..."), GAIM_STOCK_ALIAS,
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1072 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1073 gaim_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1074 G_CALLBACK(gaim_gtk_blist_remove_cb), node, 0, 0, NULL);
8586
5af95c2b1179 [gaim-migrate @ 9336]
Ethan Blanton <elb@pidgin.im>
parents: 8573
diff changeset
1075
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1076 return menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1077 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1078
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1079 static GtkWidget *
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1080 create_contact_menu (GaimBlistNode *node)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1081 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1082 GtkWidget *menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1083
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1084 menu = gtk_menu_new();
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1085
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
1086 gaim_new_item_from_stock(menu, _("View _Log"), GAIM_STOCK_LOG,
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1087 G_CALLBACK(gtk_blist_menu_showlog_cb),
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1088 node, 0, 0, NULL);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1089
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1090 gaim_separator(menu);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1091
8302
462ead6fc1a0 [gaim-migrate @ 9026]
Christian Hammond <chipx86@chipx86.com>
parents: 8259
diff changeset
1092 gaim_new_item_from_stock(menu, _("_Alias..."), GAIM_STOCK_ALIAS,
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1093 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
10663
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1094 gaim_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1095 G_CALLBACK(gaim_gtk_blist_remove_cb), node, 0, 0, NULL);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1096
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1097 gaim_separator(menu);
241d2e62bed2 [gaim-migrate @ 12202]
Sean Egan <seanegan@gmail.com>
parents: 10662
diff changeset
1098
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1099 gaim_new_item_from_stock(menu, _("_Collapse"), GTK_STOCK_ZOOM_OUT,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1100 G_CALLBACK(gaim_gtk_blist_collapse_contact_cb),
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1101 node, 0, 0, NULL);
9051
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
1102
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
1103 gaim_gtk_append_blist_node_extended_menu(menu, node);
826013efffcb [gaim-migrate @ 9827]
Luke Schierer <lschiere@pidgin.im>
parents: 9030
diff changeset
1104
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1105 return menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1106 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1107
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1108 static GtkWidget *
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
1109 create_buddy_menu(GaimBlistNode *node, GaimBuddy *b) {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1110 struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1111 GtkWidget *menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1112 GtkWidget *menuitem;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1113 gboolean show_offline = gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies");
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1114
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1115 menu = gtk_menu_new();
10484
ec82cbb21fe8 [gaim-migrate @ 11774]
Nathan Walp <nwalp@pidgin.im>
parents: 10483
diff changeset
1116 gaim_gtk_blist_make_buddy_menu(menu, b, FALSE);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1117
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1118 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1119 gaim_separator(menu);
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1120
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1121 if(gtknode->contact_expanded) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1122 gaim_new_item_from_stock(menu, _("_Collapse"),
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1123 GTK_STOCK_ZOOM_OUT,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1124 G_CALLBACK(gaim_gtk_blist_collapse_contact_cb),
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1125 node, 0, 0, NULL);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1126 } else {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1127 gaim_new_item_from_stock(menu, _("_Expand"),
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1128 GTK_STOCK_ZOOM_IN,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1129 G_CALLBACK(gaim_gtk_blist_expand_contact_cb), node,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1130 0, 0, NULL);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1131 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1132 if(node->child->next) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1133 GaimBlistNode *bnode;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1134
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1135 for(bnode = node->child; bnode; bnode = bnode->next) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1136 GaimBuddy *buddy = (GaimBuddy*)bnode;
9340
7fa8eff579b5 [gaim-migrate @ 10148]
Tim Ringenbach <marv@pidgin.im>
parents: 9337
diff changeset
1137 GdkPixbuf *buf;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1138 GtkWidget *submenu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1139 GtkWidget *image;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1140
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1141 if(buddy == b)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1142 continue;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1143 if(!buddy->account->gc)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1144 continue;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1145 if(!show_offline && !GAIM_BUDDY_IS_ONLINE(buddy))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1146 continue;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1147
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1148 menuitem = gtk_image_menu_item_new_with_label(buddy->name);
9340
7fa8eff579b5 [gaim-migrate @ 10148]
Tim Ringenbach <marv@pidgin.im>
parents: 9337
diff changeset
1149 buf = gaim_gtk_blist_get_status_icon(bnode,
7fa8eff579b5 [gaim-migrate @ 10148]
Tim Ringenbach <marv@pidgin.im>
parents: 9337
diff changeset
1150 GAIM_STATUS_ICON_SMALL);
7fa8eff579b5 [gaim-migrate @ 10148]
Tim Ringenbach <marv@pidgin.im>
parents: 9337
diff changeset
1151 image = gtk_image_new_from_pixbuf(buf);
7fa8eff579b5 [gaim-migrate @ 10148]
Tim Ringenbach <marv@pidgin.im>
parents: 9337
diff changeset
1152 g_object_unref(G_OBJECT(buf));
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1153 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1154 image);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1155 gtk_widget_show(image);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1156 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1157 gtk_widget_show(menuitem);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1158
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1159 submenu = gtk_menu_new();
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1160 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1161 gtk_widget_show(submenu);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1162
10484
ec82cbb21fe8 [gaim-migrate @ 11774]
Nathan Walp <nwalp@pidgin.im>
parents: 10483
diff changeset
1163 gaim_gtk_blist_make_buddy_menu(submenu, buddy, TRUE);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1164 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1165 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1166 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1167 return menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1168 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1169
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1170 static gboolean
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1171 gaim_gtk_blist_show_context_menu(GaimBlistNode *node,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1172 GtkMenuPositionFunc func,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1173 GtkWidget *tv,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1174 guint button,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1175 guint32 time)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1176 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1177 struct _gaim_gtk_blist_node *gtknode;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1178 GtkWidget *menu = NULL;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1179 gboolean handled = FALSE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1180
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1181 gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1182
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1183 /* Create a menu based on the thing we right-clicked on */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1184 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8945
diff changeset
1185 GaimGroup *g = (GaimGroup *)node;
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
1186
8952
e3f4657fa555 [gaim-migrate @ 9724]
Luke Schierer <lschiere@pidgin.im>
parents: 8945
diff changeset
1187 menu = create_group_menu(node, g);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1188 } else if (GAIM_BLIST_NODE_IS_CHAT(node)) {
8586
5af95c2b1179 [gaim-migrate @ 9336]
Ethan Blanton <elb@pidgin.im>
parents: 8573
diff changeset
1189 GaimChat *c = (GaimChat *)node;
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
1190
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
1191 menu = create_chat_menu(node, c);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1192 } else if ((GAIM_BLIST_NODE_IS_CONTACT(node)) && (gtknode->contact_expanded)) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1193 menu = create_contact_menu(node);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1194 } else if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1195 GaimBuddy *b;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1196
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1197 if (GAIM_BLIST_NODE_IS_CONTACT(node))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1198 b = gaim_contact_get_priority_buddy((GaimContact*)node);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1199 else
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1200 b = (GaimBuddy *)node;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1201
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
1202 menu = create_buddy_menu(node, b);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1203 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1204
11059
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1205 #ifdef _WIN32
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1206 /* Unhook the tooltip-timeout since we don't want a tooltip
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1207 * to appear and obscure the context menu we are about to show
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1208 This is a workaround for GTK+ bug 107320. */
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1209 if (gtkblist->timeout) {
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1210 g_source_remove(gtkblist->timeout);
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1211 gtkblist->timeout = 0;
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1212 }
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1213 #endif
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1214
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1215 /* Now display the menu */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1216 if (menu != NULL) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1217 gtk_widget_show_all(menu);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1218 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, func, tv, button, time);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1219 handled = TRUE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1220 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1221
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1222 return handled;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1223 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1224
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1225 static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1226 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1227 GtkTreePath *path;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1228 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1229 GValue val;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1230 GtkTreeIter iter;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1231 GtkTreeSelection *sel;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1232 GaimPlugin *prpl = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1233 GaimPluginProtocolInfo *prpl_info = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1234 struct _gaim_gtk_blist_node *gtknode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1235 gboolean handled = FALSE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1236
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1237 /* Here we figure out which node was clicked */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1238 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL))
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1239 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1240 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1241 val.g_type = 0;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1242 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1243 node = g_value_get_pointer(&val);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1244 gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1245
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1246 /* Right click draws a context menu */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1247 if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS)) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1248 handled = gaim_gtk_blist_show_context_menu(node, NULL, tv, 3, event->time);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1249
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1250 /* CTRL+middle click expands or collapse a contact */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1251 } else if ((event->button == 2) && (event->type == GDK_BUTTON_PRESS) &&
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1252 (event->state & GDK_CONTROL_MASK) && (GAIM_BLIST_NODE_IS_CONTACT(node))) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1253 if (gtknode->contact_expanded)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1254 gaim_gtk_blist_collapse_contact_cb(NULL, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1255 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1256 gaim_gtk_blist_expand_contact_cb(NULL, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1257 handled = TRUE;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1258
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1259 /* Double middle click gets info */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1260 } else if ((event->button == 2) && (event->type == GDK_2BUTTON_PRESS) &&
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1261 ((GAIM_BLIST_NODE_IS_CONTACT(node)) || (GAIM_BLIST_NODE_IS_BUDDY(node)))) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1262 GaimBuddy *b;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1263 if(GAIM_BLIST_NODE_IS_CONTACT(node))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1264 b = gaim_contact_get_priority_buddy((GaimContact*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1265 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1266 b = (GaimBuddy *)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1267
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
1268 prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1269 if (prpl != NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1270 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1271
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1272 if (prpl && prpl_info->get_info)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1273 serv_get_info(b->account->gc, b->name);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1274 handled = TRUE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1275 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1276
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1277 #if (1)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1278 /*
10814
364a2ef907ae [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10780
diff changeset
1279 * This code only exists because GTK+ doesn't work. If we return
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1280 * FALSE here, as would be normal the event propoagates down and
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1281 * somehow gets interpreted as the start of a drag event.
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1282 *
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1283 * Um, isn't it _normal_ to return TRUE here? Since the event
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1284 * was handled? --Mark
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1285 */
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1286 if(handled) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1287 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1288 gtk_tree_selection_select_path(sel, path);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1289 gtk_tree_path_free(path);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1290 return TRUE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1291 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1292 #endif
7753
f1fda2e85015 [gaim-migrate @ 8398]
Ethan Blanton <elb@pidgin.im>
parents: 7737
diff changeset
1293 gtk_tree_path_free(path);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1294
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1295 return FALSE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1296 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1297
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1298 static gboolean
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1299 gaim_gtk_blist_popup_menu_cb(GtkWidget *tv, void *user_data)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1300 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1301 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1302 GValue val;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1303 GtkTreeIter iter;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1304 GtkTreeSelection *sel;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1305 gboolean handled = FALSE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1306
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1307 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1308 if (!gtk_tree_selection_get_selected(sel, NULL, &iter))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1309 return FALSE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1310
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1311 val.g_type = 0;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1312 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel),
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1313 &iter, NODE_COLUMN, &val);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1314 node = g_value_get_pointer(&val);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1315
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1316 /* Shift+F10 draws a context menu */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1317 handled = gaim_gtk_blist_show_context_menu(node, gaim_gtk_treeview_popup_menu_position_func, tv, 0, GDK_CURRENT_TIME);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1318
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1319 return handled;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1320 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
1321
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
1322 static void gaim_gtk_blist_buddy_details_cb(gpointer data, guint action, GtkWidget *item)
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
1323 {
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1324 gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
12569
853e85b6d98c [gaim-migrate @ 14888]
Richard Laager <rlaager@wiktel.com>
parents: 12530
diff changeset
1325
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
1326 gaim_prefs_set_bool("/gaim/gtk/blist/show_buddy_icons",
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
1327 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
12569
853e85b6d98c [gaim-migrate @ 14888]
Richard Laager <rlaager@wiktel.com>
parents: 12530
diff changeset
1328
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1329 gaim_gtk_clear_cursor(gtkblist->window);
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
1330 }
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
1331
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1332 static void gaim_gtk_blist_show_idle_time_cb(gpointer data, guint action, GtkWidget *item)
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1333 {
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1334 gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1335
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1336 gaim_prefs_set_bool("/gaim/gtk/blist/show_idle_time",
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1337 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1338
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1339 gaim_gtk_clear_cursor(gtkblist->window);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1340 }
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
1341
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1342 static void gaim_gtk_blist_show_empty_groups_cb(gpointer data, guint action, GtkWidget *item)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1343 {
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1344 gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
12569
853e85b6d98c [gaim-migrate @ 14888]
Richard Laager <rlaager@wiktel.com>
parents: 12530
diff changeset
1345
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1346 gaim_prefs_set_bool("/gaim/gtk/blist/show_empty_groups",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1347 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
12569
853e85b6d98c [gaim-migrate @ 14888]
Richard Laager <rlaager@wiktel.com>
parents: 12530
diff changeset
1348
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1349 gaim_gtk_clear_cursor(gtkblist->window);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1350 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1351
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1352 static void gaim_gtk_blist_edit_mode_cb(gpointer callback_data, guint callback_action,
12569
853e85b6d98c [gaim-migrate @ 14888]
Richard Laager <rlaager@wiktel.com>
parents: 12530
diff changeset
1353 GtkWidget *checkitem)
853e85b6d98c [gaim-migrate @ 14888]
Richard Laager <rlaager@wiktel.com>
parents: 12530
diff changeset
1354 {
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1355 gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1356
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1357 gaim_prefs_set_bool("/gaim/gtk/blist/show_offline_buddies",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1358 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem)));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1359
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
1360 gaim_gtk_clear_cursor(gtkblist->window);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1361 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1362
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1363 static void gaim_gtk_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item)
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1364 {
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1365 gaim_prefs_set_bool("/gaim/gtk/sound/mute", GTK_CHECK_MENU_ITEM(item)->active);
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1366 }
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1367
12816
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
1368 static void
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
1369 gaim_gtk_blist_mute_pref_cb(const char *name, GaimPrefType type,
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
1370 gconstpointer value, gpointer data)
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1371 {
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1372 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(gtkblist->ift,
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1373 N_("/Tools/Mute Sounds"))), (gboolean)GPOINTER_TO_INT(value));
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1374 }
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1375
12816
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
1376 static void
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
1377 gaim_gtk_blist_sound_method_pref_cb(const char *name, GaimPrefType type,
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
1378 gconstpointer value, gpointer data)
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1379 {
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1380 gboolean sensitive = TRUE;
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1381
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1382 if(!strcmp(value, "none"))
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1383 sensitive = FALSE;
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1384
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1385 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), sensitive);
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1386 }
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
1387
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1388 static void
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1389 add_buddies_from_vcard(const char *prpl_id, GaimGroup *group, GList *list,
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1390 const char *alias)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1391 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1392 GList *l;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1393 GaimAccount *account = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1394 GaimConnection *gc;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1395
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1396 if (list == NULL)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1397 return;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1398
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1399 for (l = gaim_connections_get_all(); l != NULL; l = l->next)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1400 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1401 gc = (GaimConnection *)l->data;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1402 account = gaim_connection_get_account(gc);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1403
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1404 if (!strcmp(gaim_account_get_protocol_id(account), prpl_id))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1405 break;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1406
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1407 account = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1408 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1409
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1410 if (account != NULL)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1411 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1412 for (l = list; l != NULL; l = l->next)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1413 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1414 gaim_blist_request_add_buddy(account, l->data,
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1415 (group ? group->name : NULL),
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1416 alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1417 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1418 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1419
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1420 g_list_foreach(list, (GFunc)g_free, NULL);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1421 g_list_free(list);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1422 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1423
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1424 static gboolean
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1425 parse_vcard(const char *vcard, GaimGroup *group)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1426 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1427 char *temp_vcard;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1428 char *s, *c;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1429 char *alias = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1430 GList *aims = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1431 GList *icqs = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1432 GList *yahoos = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1433 GList *msns = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1434 GList *jabbers = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1435
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1436 s = temp_vcard = g_strdup(vcard);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1437
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1438 while (*s != '\0' && strncmp(s, "END:vCard", strlen("END:vCard")))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1439 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1440 char *field, *value;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1441
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1442 field = s;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1443
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1444 /* Grab the field */
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1445 while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ':')
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1446 s++;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1447
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1448 if (*s == '\r') s++;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1449 if (*s == '\n')
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1450 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1451 s++;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1452 continue;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1453 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1454
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1455 if (*s != '\0') *s++ = '\0';
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1456
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1457 if ((c = strchr(field, ';')) != NULL)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1458 *c = '\0';
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1459
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1460 /* Proceed to the end of the line */
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1461 value = s;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1462
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1463 while (*s != '\r' && *s != '\n' && *s != '\0')
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1464 s++;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1465
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1466 if (*s == '\r') *s++ = '\0';
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1467 if (*s == '\n') *s++ = '\0';
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1468
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1469 /* We only want to worry about a few fields here. */
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1470 if (!strcmp(field, "FN"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1471 alias = g_strdup(value);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1472 else if (!strcmp(field, "X-AIM") || !strcmp(field, "X-ICQ") ||
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1473 !strcmp(field, "X-YAHOO") || !strcmp(field, "X-MSN") ||
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1474 !strcmp(field, "X-JABBER"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1475 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1476 char **values = g_strsplit(value, ":", 0);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1477 char **im;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1478
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1479 for (im = values; *im != NULL; im++)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1480 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1481 if (!strcmp(field, "X-AIM"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1482 aims = g_list_append(aims, g_strdup(*im));
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1483 else if (!strcmp(field, "X-ICQ"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1484 icqs = g_list_append(icqs, g_strdup(*im));
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1485 else if (!strcmp(field, "X-YAHOO"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1486 yahoos = g_list_append(yahoos, g_strdup(*im));
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1487 else if (!strcmp(field, "X-MSN"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1488 msns = g_list_append(msns, g_strdup(*im));
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1489 else if (!strcmp(field, "X-JABBER"))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1490 jabbers = g_list_append(jabbers, g_strdup(*im));
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1491 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1492
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1493 g_strfreev(values);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1494 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1495 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1496
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1497 g_free(temp_vcard);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1498
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1499 if (aims == NULL && icqs == NULL && yahoos == NULL &&
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1500 msns == NULL && jabbers == NULL)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1501 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1502 if (alias != NULL)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1503 g_free(alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1504
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1505 return FALSE;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1506 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1507
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1508 add_buddies_from_vcard("prpl-oscar", group, aims, alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1509 add_buddies_from_vcard("prpl-oscar", group, icqs, alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1510 add_buddies_from_vcard("prpl-yahoo", group, yahoos, alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1511 add_buddies_from_vcard("prpl-msn", group, msns, alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1512 add_buddies_from_vcard("prpl-jabber", group, jabbers, alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1513
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1514 if (alias != NULL)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1515 g_free(alias);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1516
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1517 return TRUE;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1518 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1519
11059
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1520 #ifdef _WIN32
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1521 static void gaim_gtk_blist_drag_begin(GtkWidget *widget,
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1522 GdkDragContext *drag_context, gpointer user_data)
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1523 {
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1524 gaim_gtk_blist_tooltip_destroy();
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1525
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1526
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1527 /* Unhook the tooltip-timeout since we don't want a tooltip
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1528 * to appear and obscure the dragging operation.
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1529 * This is a workaround for GTK+ bug 107320. */
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1530 if (gtkblist->timeout) {
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1531 g_source_remove(gtkblist->timeout);
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1532 gtkblist->timeout = 0;
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1533 }
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1534 }
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1535 #endif
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1536
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1537 static void gaim_gtk_blist_drag_data_get_cb(GtkWidget *widget,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1538 GdkDragContext *dc,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1539 GtkSelectionData *data,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1540 guint info,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1541 guint time,
11059
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1542 gpointer null)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1543 {
11059
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
1544
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1545 if (data->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1546 {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1547 GtkTreeRowReference *ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1548 GtkTreePath *sourcerow = gtk_tree_row_reference_get_path(ref);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1549 GtkTreeIter iter;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1550 GaimBlistNode *node = NULL;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1551 GValue val;
5273
2e1238f4b4e3 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1552 if(!sourcerow)
2e1238f4b4e3 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1553 return;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1554 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, sourcerow);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1555 val.g_type = 0;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1556 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1557 node = g_value_get_pointer(&val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1558 gtk_selection_data_set (data,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 gdk_atom_intern ("GAIM_BLIST_NODE", FALSE),
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1560 8, /* bits */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1561 (void*)&node,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1562 sizeof (node));
5273
2e1238f4b4e3 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1563
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1564 gtk_tree_path_free(sourcerow);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1565 }
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1566 else if (data->target == gdk_atom_intern("application/x-im-contact", FALSE))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1567 {
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1568 GtkTreeRowReference *ref;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1569 GtkTreePath *sourcerow;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1570 GtkTreeIter iter;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1571 GaimBlistNode *node = NULL;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1572 GaimBuddy *buddy;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1573 GaimConnection *gc;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1574 GValue val;
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1575 GString *str;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1576 const char *protocol;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1577 char *mime_str;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1578
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1579 ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row");
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1580 sourcerow = gtk_tree_row_reference_get_path(ref);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1581
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1582 if (!sourcerow)
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1583 return;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1584
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1585 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1586 sourcerow);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1587 val.g_type = 0;
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1588 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1589 NODE_COLUMN, &val);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1590
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1591 node = g_value_get_pointer(&val);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1592
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1593 if (GAIM_BLIST_NODE_IS_CONTACT(node))
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1594 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1595 buddy = gaim_contact_get_priority_buddy((GaimContact *)node);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1596 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1597 else if (!GAIM_BLIST_NODE_IS_BUDDY(node))
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1598 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1599 gtk_tree_path_free(sourcerow);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1600 return;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1601 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1602 else
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1603 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1604 buddy = (GaimBuddy *)node;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1605 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1606
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1607 gc = gaim_account_get_connection(buddy->account);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1608
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1609 if (gc == NULL)
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1610 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1611 gtk_tree_path_free(sourcerow);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1612 return;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1613 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1614
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1615 protocol =
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1616 GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->list_icon(buddy->account,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1617 buddy);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1618
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1619 str = g_string_new(NULL);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1620 g_string_printf(str,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1621 "MIME-Version: 1.0\r\n"
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1622 "Content-Type: application/x-im-contact\r\n"
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1623 "X-IM-Protocol: %s\r\n"
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1624 "X-IM-Username: %s\r\n",
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1625 protocol,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1626 buddy->name);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1627
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1628 if (buddy->alias != NULL)
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1629 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1630 g_string_append_printf(str,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1631 "X-IM-Alias: %s\r\n",
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1632 buddy->alias);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1633 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1634
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1635 str = g_string_append(str, "\r\n");
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1636
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1637 mime_str = g_string_free(str, FALSE);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1638
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1639 gtk_selection_data_set(data,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1640 gdk_atom_intern("application/x-im-contact", FALSE),
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1641 8, /* bits */
11137
096020ae09a9 [gaim-migrate @ 13201]
Mark Doliner <mark@kingant.net>
parents: 11134
diff changeset
1642 (const guchar *)mime_str,
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1643 strlen(mime_str) + 1);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1644
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1645 g_free(mime_str);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1646 gtk_tree_path_free(sourcerow);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1647 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1648 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1649
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1650 static void gaim_gtk_blist_drag_data_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1651 GtkSelectionData *sd, guint info, guint t)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1652 {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1653 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE) && sd->data) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1654 GaimBlistNode *n = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1655 GtkTreePath *path = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1656 GtkTreeViewDropPosition position;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1657 memcpy(&n, sd->data, sizeof(n));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1658 if(gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), x, y, &path, &position)) {
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1659 /* if we're here, I think it means the drop is ok */
7642
9008b5be4275 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7636
diff changeset
1660 GtkTreeIter iter;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1662 GValue val;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1663 struct _gaim_gtk_blist_node *gtknode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1664
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1665 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1666 &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1667 val.g_type = 0;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1668 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1669 &iter, NODE_COLUMN, &val);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670 node = g_value_get_pointer(&val);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1671 gtknode = node->ui_data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1672
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1673 if (GAIM_BLIST_NODE_IS_CONTACT(n)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1674 GaimContact *c = (GaimContact*)n;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1675 if (GAIM_BLIST_NODE_IS_CONTACT(node) && gtknode->contact_expanded) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1676 gaim_blist_merge_contact(c, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1677 } else if (GAIM_BLIST_NODE_IS_CONTACT(node) ||
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1678 GAIM_BLIST_NODE_IS_CHAT(node)) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1679 switch(position) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 case GTK_TREE_VIEW_DROP_AFTER:
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1682 gaim_blist_add_contact(c, (GaimGroup*)node->parent,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1683 node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1684 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1685 case GTK_TREE_VIEW_DROP_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1686 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1687 gaim_blist_add_contact(c, (GaimGroup*)node->parent,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1688 node->prev);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1689 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1690 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1691 } else if(GAIM_BLIST_NODE_IS_GROUP(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1692 gaim_blist_add_contact(c, (GaimGroup*)node, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1693 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1694 gaim_blist_merge_contact(c, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1695 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1696 } else if (GAIM_BLIST_NODE_IS_BUDDY(n)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1697 GaimBuddy *b = (GaimBuddy*)n;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1698 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1699 switch(position) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1700 case GTK_TREE_VIEW_DROP_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1701 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1702 gaim_blist_add_buddy(b, (GaimContact*)node->parent,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1703 (GaimGroup*)node->parent->parent, node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1704 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1705 case GTK_TREE_VIEW_DROP_BEFORE:
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1707 gaim_blist_add_buddy(b, (GaimContact*)node->parent,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1708 (GaimGroup*)node->parent->parent,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1709 node->prev);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1710 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1711 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1712 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1713 gaim_blist_add_buddy(b, NULL, (GaimGroup*)node->parent,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1714 NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1716 gaim_blist_add_buddy(b, NULL, (GaimGroup*)node, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1717 } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1718 if(gtknode->contact_expanded) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1719 switch(position) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1720 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1721 case GTK_TREE_VIEW_DROP_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1722 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1723 gaim_blist_add_buddy(b, (GaimContact*)node,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1724 (GaimGroup*)node->parent, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1725 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1726 case GTK_TREE_VIEW_DROP_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1727 gaim_blist_add_buddy(b, NULL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1728 (GaimGroup*)node->parent, node->prev);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1729 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1730 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1731 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1732 switch(position) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1733 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1734 case GTK_TREE_VIEW_DROP_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1735 gaim_blist_add_buddy(b, NULL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1736 (GaimGroup*)node->parent, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1737 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1738 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1739 case GTK_TREE_VIEW_DROP_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1740 gaim_blist_add_buddy(b, NULL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1741 (GaimGroup*)node->parent, node->prev);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1742 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1743 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1744 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1745 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1746 } else if (GAIM_BLIST_NODE_IS_CHAT(n)) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1747 GaimChat *chat = (GaimChat *)n;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1748 if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1749 switch(position) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1750 case GTK_TREE_VIEW_DROP_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1751 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1752 case GTK_TREE_VIEW_DROP_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1753 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1754 gaim_blist_add_chat(chat,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1755 (GaimGroup*)node->parent->parent,
13542
2235ada6c746 [gaim-migrate @ 15919]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13540
diff changeset
1756 node->parent);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1757 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1758 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1759 } else if(GAIM_BLIST_NODE_IS_CONTACT(node) ||
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1760 GAIM_BLIST_NODE_IS_CHAT(node)) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1761 switch(position) {
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1762 case GTK_TREE_VIEW_DROP_AFTER:
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1763 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1764 gaim_blist_add_chat(chat, (GaimGroup*)node->parent, node);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1765 break;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1766 case GTK_TREE_VIEW_DROP_BEFORE:
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1767 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1768 gaim_blist_add_chat(chat, (GaimGroup*)node->parent, node->prev);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1769 break;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1770 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1771 } else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1772 gaim_blist_add_chat(chat, (GaimGroup*)node, NULL);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1773 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 } else if (GAIM_BLIST_NODE_IS_GROUP(n)) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1775 GaimGroup *g = (GaimGroup*)n;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776 if (GAIM_BLIST_NODE_IS_GROUP(node)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777 switch (position) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1779 case GTK_TREE_VIEW_DROP_AFTER:
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1780 gaim_blist_add_group(g, node);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 case GTK_TREE_VIEW_DROP_BEFORE:
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 gaim_blist_add_group(g, node->prev);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 break;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1787 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1788 gaim_blist_add_group(g, node->parent->parent);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1789 } else if(GAIM_BLIST_NODE_IS_CONTACT(node) ||
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1790 GAIM_BLIST_NODE_IS_CHAT(node)) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1791 gaim_blist_add_group(g, node->parent);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795 gtk_tree_path_free(path);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
1796 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 }
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1799 else if (sd->target == gdk_atom_intern("application/x-im-contact",
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1800 FALSE) && sd->data)
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1801 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1802 GaimGroup *group = NULL;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1803 GtkTreePath *path = NULL;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1804 GtkTreeViewDropPosition position;
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7706
diff changeset
1805 GaimAccount *account;
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1806 char *protocol = NULL;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1807 char *username = NULL;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1808 char *alias = NULL;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1809
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1810 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1811 x, y, &path, &position))
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1812 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1813 GtkTreeIter iter;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1814 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1815 GValue val;
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1816
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1817 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1818 &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1819 val.g_type = 0;
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1820 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1821 &iter, NODE_COLUMN, &val);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1822 node = g_value_get_pointer(&val);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1823
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1824 if (GAIM_BLIST_NODE_IS_BUDDY(node))
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1825 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1826 group = (GaimGroup *)node->parent->parent;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1827 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1828 else if (GAIM_BLIST_NODE_IS_CHAT(node) ||
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1829 GAIM_BLIST_NODE_IS_CONTACT(node))
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1830 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1831 group = (GaimGroup *)node->parent;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1832 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1833 else if (GAIM_BLIST_NODE_IS_GROUP(node))
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1834 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1835 group = (GaimGroup *)node;
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1836 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1837 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1838
11137
096020ae09a9 [gaim-migrate @ 13201]
Mark Doliner <mark@kingant.net>
parents: 11134
diff changeset
1839 if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account,
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7706
diff changeset
1840 &protocol, &username, &alias))
7706
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1841 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1842 if (account == NULL)
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1843 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1844 gaim_notify_error(NULL, NULL,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1845 _("You are not currently signed on with an account that "
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1846 "can add that buddy."), NULL);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1847 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1848 else
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1849 {
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1850 gaim_blist_request_add_buddy(account, username,
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1851 (group ? group->name : NULL),
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1852 alias);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1853 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1854 }
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1855
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1856 if (username != NULL) g_free(username);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1857 if (protocol != NULL) g_free(protocol);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1858 if (alias != NULL) g_free(alias);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1859
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1860 if (path != NULL)
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1861 gtk_tree_path_free(path);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1862
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1863 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
e6244f1a19a5 [gaim-migrate @ 8351]
Sean Egan <seanegan@gmail.com>
parents: 7693
diff changeset
1864 }
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1865 else if (sd->target == gdk_atom_intern("text/x-vcard", FALSE) && sd->data)
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1866 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1867 gboolean result;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1868 GaimGroup *group = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1869 GtkTreePath *path = NULL;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1870 GtkTreeViewDropPosition position;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1871
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1872 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1873 x, y, &path, &position))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1874 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1875 GtkTreeIter iter;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1876 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1877 GValue val;
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1878
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1879 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1880 &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1881 val.g_type = 0;
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1882 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1883 &iter, NODE_COLUMN, &val);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1884 node = g_value_get_pointer(&val);
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1885
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1886 if (GAIM_BLIST_NODE_IS_BUDDY(node))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1887 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1888 group = (GaimGroup *)node->parent->parent;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1889 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1890 else if (GAIM_BLIST_NODE_IS_CHAT(node) ||
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1891 GAIM_BLIST_NODE_IS_CONTACT(node))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1892 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1893 group = (GaimGroup *)node->parent;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1894 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1895 else if (GAIM_BLIST_NODE_IS_GROUP(node))
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1896 {
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1897 group = (GaimGroup *)node;
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1898 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1899 }
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1900
11137
096020ae09a9 [gaim-migrate @ 13201]
Mark Doliner <mark@kingant.net>
parents: 11134
diff changeset
1901 result = parse_vcard((const gchar *)sd->data, group);
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1902
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1903 gtk_drag_finish(dc, result, (dc->action == GDK_ACTION_MOVE), t);
9525
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9498
diff changeset
1904 } else if (sd->target == gdk_atom_intern("text/uri-list", FALSE) && sd->data) {
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1905 GtkTreePath *path = NULL;
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1906 GtkTreeViewDropPosition position;
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1907
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1908 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
1909 x, y, &path, &position))
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1910 {
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1911 GtkTreeIter iter;
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1912 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1913 GValue val;
10382
9f28196ed769 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
1914
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1915 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1916 &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
1917 val.g_type = 0;
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1918 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1919 &iter, NODE_COLUMN, &val);
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1920 node = g_value_get_pointer(&val);
10382
9f28196ed769 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
1921
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1922 if (GAIM_BLIST_NODE_IS_BUDDY(node) || GAIM_BLIST_NODE_IS_CONTACT(node)) {
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1923 GaimBuddy *b = GAIM_BLIST_NODE_IS_BUDDY(node) ? (GaimBuddy*)node : gaim_contact_get_priority_buddy((GaimContact*)node);
10229
9aa0b6d11bbf [gaim-migrate @ 11364]
Sean Egan <seanegan@gmail.com>
parents: 10222
diff changeset
1924 gaim_dnd_file_manage(sd, b->account, b->name);
9aa0b6d11bbf [gaim-migrate @ 11364]
Sean Egan <seanegan@gmail.com>
parents: 10222
diff changeset
1925 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
9aa0b6d11bbf [gaim-migrate @ 11364]
Sean Egan <seanegan@gmail.com>
parents: 10222
diff changeset
1926 } else {
9aa0b6d11bbf [gaim-migrate @ 11364]
Sean Egan <seanegan@gmail.com>
parents: 10222
diff changeset
1927 gtk_drag_finish(dc, FALSE, FALSE, t);
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
1928 }
10382
9f28196ed769 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
1929 }
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
1930 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1933 static GdkPixbuf *gaim_gtk_blist_get_buddy_icon(GaimBlistNode *node,
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1934 gboolean scaled, gboolean greyed)
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1935 {
10483
748aa3c6de36 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
1936 GdkPixbuf *buf, *ret = NULL;
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1937 GdkPixbufLoader *loader;
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1938 GaimBuddyIcon *icon;
11137
096020ae09a9 [gaim-migrate @ 13201]
Mark Doliner <mark@kingant.net>
parents: 11134
diff changeset
1939 const guchar *data;
096020ae09a9 [gaim-migrate @ 13201]
Mark Doliner <mark@kingant.net>
parents: 11134
diff changeset
1940 gsize len;
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1941 GaimBuddy *buddy = (GaimBuddy *)node;
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1942
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1943 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1944 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1945 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1946 buddy = (GaimBuddy*)node;
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1947 } else {
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1948 return NULL;
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1949 }
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1950
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1951 #if 0
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1952 if (!gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"))
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1953 return NULL;
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1954 #endif
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1955
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1956 if (!(icon = gaim_buddy_get_icon(buddy)))
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1957 if (!(icon = gaim_buddy_icons_find(buddy->account, buddy->name))) /* Not sure I like this...*/
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1958 return NULL;
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1959
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1960 loader = gdk_pixbuf_loader_new();
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1961 data = gaim_buddy_icon_get_data(icon, &len);
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1962 gdk_pixbuf_loader_write(loader, data, len, NULL);
12601
e63fb8e9f4ac [gaim-migrate @ 14935]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
1963 gdk_pixbuf_loader_close(loader, NULL);
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1964 buf = gdk_pixbuf_loader_get_pixbuf(loader);
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1965 if (buf)
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1966 g_object_ref(G_OBJECT(buf));
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1967 g_object_unref(G_OBJECT(loader));
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1968
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1969 if (buf) {
10544
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1970 GaimAccount *account = gaim_buddy_get_account(buddy);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1971 GaimPluginProtocolInfo *prpl_info = NULL;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1972 int orig_width, orig_height;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1973 int scale_width, scale_height;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1974
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1975 if(account && account->gc)
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1976 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1977
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1978 if (greyed) {
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1979 GaimPresence *presence = gaim_buddy_get_presence(buddy);
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1980 if (!GAIM_BUDDY_IS_ONLINE(buddy))
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1981 gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.0, FALSE);
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1982 if (gaim_presence_is_idle(presence))
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1983 gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.25, FALSE);
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1984 }
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1985
10544
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1986 /* i'd use the gaim_gtk_buddy_icon_get_scale_size() thing,
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1987 * but it won't tell me the original size, which I need for scaling
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1988 * purposes */
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1989 scale_width = orig_width = gdk_pixbuf_get_width(buf);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1990 scale_height = orig_height = gdk_pixbuf_get_height(buf);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1991
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1992 gaim_buddy_icon_get_scale_size(prpl_info ? &prpl_info->icon_spec : NULL, &scale_width, &scale_height);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1993
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
1994 if (scaled) {
10544
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1995 if(scale_height > scale_width) {
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1996 scale_width = 30.0 * (double)scale_width / (double)scale_height;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1997 scale_height = 30;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1998 } else {
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
1999 scale_height = 30.0 * (double)scale_height / (double)scale_width;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2000 scale_width = 30;
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2001 }
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2002
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2003 ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 30, 30);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2004 gdk_pixbuf_fill(ret, 0x00000000);
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2005 gdk_pixbuf_scale(buf, ret, (30-scale_width)/2, (30-scale_height)/2, scale_width, scale_height, (30-scale_width)/2, (30-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR);
10483
748aa3c6de36 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2006 } else {
748aa3c6de36 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2007 ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR);
748aa3c6de36 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2008 }
10544
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2009 g_object_unref(G_OBJECT(buf));
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
2010 }
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
2011
10483
748aa3c6de36 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2012 return ret;
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
2013 }
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
2014
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2015 struct tooltip_data {
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2016 PangoLayout *layout;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2017 GdkPixbuf *status_icon;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2018 GdkPixbuf *avatar;
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2019 int avatar_width;
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2020 int width;
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2021 int height;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2022 };
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2023
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2024 static struct tooltip_data * create_tip_for_node(GaimBlistNode *node, gboolean full)
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2025 {
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2026 char *tooltip_text = NULL;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2027 struct tooltip_data *td = g_new0(struct tooltip_data, 1);
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2028
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2029 td->status_icon = gaim_gtk_blist_get_status_icon(node, GAIM_STATUS_ICON_LARGE);
12971
7bd4dbf26c00 [gaim-migrate @ 15324]
Richard Laager <rlaager@wiktel.com>
parents: 12970
diff changeset
2030 td->avatar = gaim_gtk_blist_get_buddy_icon(node, !full, FALSE);
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2031 tooltip_text = gaim_get_tooltip_text(node, full);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2032 td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL);
12940
b25f48c9f6d7 [gaim-migrate @ 15293]
Richard Laager <rlaager@wiktel.com>
parents: 12919
diff changeset
2033 pango_layout_set_markup(td->layout, tooltip_text, -1);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2034 pango_layout_set_wrap(td->layout, PANGO_WRAP_WORD);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2035 pango_layout_set_width(td->layout, 300000);
11983
39f2aa4350d8 [gaim-migrate @ 14276]
Tim Ringenbach <marv@pidgin.im>
parents: 11924
diff changeset
2036
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2037 pango_layout_get_size (td->layout, &td->width, &td->height);
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2038 td->width = PANGO_PIXELS(td->width) + 38 + 8;
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2039 td->height = MAX(PANGO_PIXELS(td->height + 4) + 8, 38);
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2040
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2041 if(td->avatar) {
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2042 td->avatar_width = gdk_pixbuf_get_width(td->avatar);
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2043 td->width += td->avatar_width + 8;
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2044 td->height = MAX(td->height, gdk_pixbuf_get_height(td->avatar) + 8);
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2045 }
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2046
12649
773f694e83bf [gaim-migrate @ 14987]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12601
diff changeset
2047 g_free(tooltip_text);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2048 return td;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2049 }
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2050
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2051 static void gaim_gtk_blist_paint_tip(GtkWidget *widget, GdkEventExpose *event, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2052 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2053 GtkStyle *style;
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2054 int current_height, max_width;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2055 GList *l;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2056
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2057 if(gtkblist->tooltipdata == NULL)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2058 return;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2059
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2060 style = gtkblist->tipwindow->style;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2061 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2062 NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2063
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2064 max_width = 0;
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2065 for(l = gtkblist->tooltipdata; l; l = l->next)
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2066 {
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2067 struct tooltip_data *td = l->data;
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2068 max_width = MAX(max_width, td->width);
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2069 }
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2070
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2071 current_height = 4;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2072 for(l = gtkblist->tooltipdata; l; l = l->next)
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
2073 {
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2074 struct tooltip_data *td = l->data;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2075
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2076 #if GTK_CHECK_VERSION(2,2,0)
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2077 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon,
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2078 0, 0, 4, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2079 if(td->avatar)
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2080 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL,
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2081 td->avatar, 0, 0, max_width - (td->avatar_width + 4), current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2082 #else
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2083 gdk_pixbuf_render_to_drawable(td->status_icon, GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, 4, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2084 if(td->avatar)
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2085 gdk_pixbuf_render_to_drawable(td->avatar,
11983
39f2aa4350d8 [gaim-migrate @ 14276]
Tim Ringenbach <marv@pidgin.im>
parents: 11924
diff changeset
2086 GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0,
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2087 max_width - (td->avatar_width + 4),
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2088 current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2089 #endif
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2090
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2091 gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
12519
e63a80be5227 [gaim-migrate @ 14831]
Sean Egan <seanegan@gmail.com>
parents: 12479
diff changeset
2092 NULL, gtkblist->tipwindow, "tooltip", 38 + 4, current_height, td->layout);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2093
11895
589f290eb8cd [gaim-migrate @ 14186]
Nathan Walp <nwalp@pidgin.im>
parents: 11894
diff changeset
2094 current_height += td->height;
589f290eb8cd [gaim-migrate @ 14186]
Nathan Walp <nwalp@pidgin.im>
parents: 11894
diff changeset
2095
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2096 if(l->next)
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2097 gtk_paint_hline(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, NULL, NULL, NULL, 4, max_width - 4, current_height-6);
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2098
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2099 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2100 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2101
8254
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2102 static void gaim_gtk_blist_tooltip_destroy()
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2103 {
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2104 while(gtkblist->tooltipdata) {
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2105 struct tooltip_data *td = gtkblist->tooltipdata->data;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2106
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2107 if(td->avatar)
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2108 g_object_unref(td->avatar);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2109 if(td->status_icon)
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2110 g_object_unref(td->status_icon);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2111 g_object_unref(td->layout);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2112 g_free(td);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2113 gtkblist->tooltipdata = g_list_delete_link(gtkblist->tooltipdata, gtkblist->tooltipdata);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2114 }
11636
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2115
8254
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2116 if (gtkblist->tipwindow == NULL)
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2117 return;
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2118
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2119 gtk_widget_destroy(gtkblist->tipwindow);
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2120 gtkblist->tipwindow = NULL;
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2121 }
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2122
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2123 static gboolean gaim_gtk_blist_expand_timeout(GtkWidget *tv)
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2124 {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2125 GtkTreePath *path;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2126 GtkTreeIter iter;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2127 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2128 GValue val;
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2129 struct _gaim_gtk_blist_node *gtknode;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2130
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2131 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2132 return FALSE;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2133 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2134 val.g_type = 0;
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2135 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2136 node = g_value_get_pointer(&val);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2137
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
2138 if(!GAIM_BLIST_NODE_IS_CONTACT(node)) {
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
2139 gtk_tree_path_free(path);
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2140 return FALSE;
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
2141 }
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2142
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2143 gtknode = node->ui_data;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2144
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2145 if (!gtknode->contact_expanded) {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2146 GtkTreeIter i;
10382
9f28196ed769 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2147
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2148 gaim_gtk_blist_expand_contact_cb(NULL, node);
10382
9f28196ed769 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2149
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2150 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->contact_rect);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2151 gdk_drawable_get_size(GDK_DRAWABLE(tv->window), &(gtkblist->contact_rect.width), NULL);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2152 gtkblist->mouseover_contact = node;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2153 gtk_tree_path_down (path);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2154 while (gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &i, path)) {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2155 GdkRectangle rect;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2156 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2157 gtkblist->contact_rect.height += rect.height;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2158 gtk_tree_path_next(path);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2159 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2160 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2161 gtk_tree_path_free(path);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2162 return FALSE;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2163 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2164
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2165 static gboolean buddy_is_displayable(GaimBuddy *buddy)
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2166 {
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2167 struct _gaim_gtk_blist_node *gtknode;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2168
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2169 if(!buddy)
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2170 return FALSE;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2171
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2172 gtknode = ((GaimBlistNode*)buddy)->ui_data;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2173
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2174 return (gaim_account_is_connected(buddy->account) &&
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2175 (gaim_presence_is_online(buddy->presence) ||
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2176 (gtknode && gtknode->recent_signonoff) ||
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2177 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies") ||
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2178 gaim_blist_node_get_bool((GaimBlistNode*)buddy, "show_offline")));
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2179 }
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2180
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2181 static gboolean gaim_gtk_blist_tooltip_timeout(GtkWidget *tv)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2182 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2183 GtkTreePath *path;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2184 GtkTreeIter iter;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2185 GaimBlistNode *node;
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2186 GValue val;
9869
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2187 int scr_w, scr_h, w, h, x, y;
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2188 #if GTK_CHECK_VERSION(2,2,0)
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2189 int mon_num;
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2190 GdkScreen *screen = NULL;
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2191 #endif
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2192 gboolean tooltip_top = FALSE;
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2193 struct _gaim_gtk_blist_node *gtknode;
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2194 GdkRectangle mon_size;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2195
11636
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2196 /*
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2197 * Attempt to free the previous tooltip. I have a feeling
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2198 * this is never needed... but just in case.
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2199 */
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2200 gaim_gtk_blist_tooltip_destroy();
2f7558b0c01b [gaim-migrate @ 13912]
Mark Doliner <mark@kingant.net>
parents: 11634
diff changeset
2201
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2202 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
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2203 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2204 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2205 val.g_type = 0;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2206 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2207 node = g_value_get_pointer(&val);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2208
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
2209 gtk_tree_path_free(path);
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
2210
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2211 gtkblist->tipwindow = gtk_window_new(GTK_WINDOW_POPUP);
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2212
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2213 if(GAIM_BLIST_NODE_IS_CHAT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)) {
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2214 struct tooltip_data *td = create_tip_for_node(node, TRUE);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2215 gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td);
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2216 w = td->width;
12941
586f2b04e0c5 [gaim-migrate @ 15294]
Richard Laager <rlaager@wiktel.com>
parents: 12940
diff changeset
2217 h = td->height;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2218 } else if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2219 GaimBlistNode *child;
11988
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
2220 GaimBuddy *b = gaim_contact_get_priority_buddy((GaimContact *)node);
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2221 w = h = 0;
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2222 for(child = node->child; child; child = child->next)
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2223 {
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2224 if(GAIM_BLIST_NODE_IS_BUDDY(child) && buddy_is_displayable((GaimBuddy*)child)) {
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2225 struct tooltip_data *td = create_tip_for_node(child, (b == (GaimBuddy*)child));
11988
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
2226 if (b == (GaimBuddy *)child) {
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
2227 gtkblist->tooltipdata = g_list_prepend(gtkblist->tooltipdata, td);
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
2228 } else {
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
2229 gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td);
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
2230 }
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2231 w = MAX(w, td->width);
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2232 h += td->height;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2233 }
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2234 }
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2235 } else {
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2236 gtk_widget_destroy(gtkblist->tipwindow);
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2237 gtkblist->tipwindow = NULL;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2238 return FALSE;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2239 }
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2240
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2241 if (gtkblist->tooltipdata == NULL) {
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2242 gtk_widget_destroy(gtkblist->tipwindow);
11892
31d3cdab1690 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2243 gtkblist->tipwindow = NULL;
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2244 return FALSE;
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2245 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2246
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2247 gtknode = node->ui_data;
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2248
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2249 gtk_widget_set_app_paintable(gtkblist->tipwindow, TRUE);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2250 gtk_window_set_resizable(GTK_WINDOW(gtkblist->tipwindow), FALSE);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2251 gtk_widget_set_name(gtkblist->tipwindow, "gtk-tooltips");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2252 g_signal_connect(G_OBJECT(gtkblist->tipwindow), "expose_event",
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2253 G_CALLBACK(gaim_gtk_blist_paint_tip), NULL);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2254 gtk_widget_ensure_style (gtkblist->tipwindow);
7837
d20f729d3f18 [gaim-migrate @ 8490]
Nathan Walp <nwalp@pidgin.im>
parents: 7811
diff changeset
2255
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2256
9869
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2257 #if GTK_CHECK_VERSION(2,2,0)
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2258 gdk_display_get_pointer(gdk_display_get_default(), &screen, &x, &y, NULL);
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2259 mon_num = gdk_screen_get_monitor_at_point(screen, x, y);
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2260 gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size);
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2261
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2262 scr_w = mon_size.width + mon_size.x;
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2263 scr_h = mon_size.height + mon_size.y;
9869
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2264 #else
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2265 scr_w = gdk_screen_width();
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2266 scr_h = gdk_screen_height();
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2267 gdk_window_get_pointer(NULL, &x, &y, NULL);
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2268 mon_size.x = 0;
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2269 mon_size.y = 0;
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2270 #endif
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2271
9869
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2272 #if GTK_CHECK_VERSION(2,2,0)
10046
dcdda2857ca8 [gaim-migrate @ 11007]
Mark Doliner <mark@kingant.net>
parents: 10036
diff changeset
2273 if (w > mon_size.width)
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2274 w = mon_size.width - 10;
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2275
10046
dcdda2857ca8 [gaim-migrate @ 11007]
Mark Doliner <mark@kingant.net>
parents: 10036
diff changeset
2276 if (h > mon_size.height)
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2277 h = mon_size.height - 10;
9869
348636e6ba89 [gaim-migrate @ 10748]
Mark Doliner <mark@kingant.net>
parents: 9834
diff changeset
2278 #endif
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2279
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2280 if (GTK_WIDGET_NO_WINDOW(gtkblist->window))
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2281 y+=gtkblist->window->allocation.y;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2282
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2283 x -= ((w >> 1) + 4);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2284
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2285 if ((y + h + 4) > scr_h || tooltip_top)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2286 y = y - h - 5;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2287 else
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2288 y = y + 6;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2289
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2290 if (y < mon_size.y)
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2291 y = mon_size.y;
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2292
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2293 if (y != mon_size.y) {
7719
853ef377a850 [gaim-migrate @ 8364]
Sean Egan <seanegan@gmail.com>
parents: 7712
diff changeset
2294 if ((x + w) > scr_w)
853ef377a850 [gaim-migrate @ 8364]
Sean Egan <seanegan@gmail.com>
parents: 7712
diff changeset
2295 x -= (x + w + 5) - scr_w;
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2296 else if (x < mon_size.x)
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2297 x = mon_size.x;
7719
853ef377a850 [gaim-migrate @ 8364]
Sean Egan <seanegan@gmail.com>
parents: 7712
diff changeset
2298 } else {
853ef377a850 [gaim-migrate @ 8364]
Sean Egan <seanegan@gmail.com>
parents: 7712
diff changeset
2299 x -= (w / 2 + 10);
9773
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2300 if (x < mon_size.x)
09f18996c2ea [gaim-migrate @ 10641]
Mark Doliner <mark@kingant.net>
parents: 9770
diff changeset
2301 x = mon_size.x;
7719
853ef377a850 [gaim-migrate @ 8364]
Sean Egan <seanegan@gmail.com>
parents: 7712
diff changeset
2302 }
853ef377a850 [gaim-migrate @ 8364]
Sean Egan <seanegan@gmail.com>
parents: 7712
diff changeset
2303
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2304 gtk_widget_set_size_request(gtkblist->tipwindow, w, h);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2305 gtk_window_move(GTK_WINDOW(gtkblist->tipwindow), x, y);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2306 gtk_widget_show(gtkblist->tipwindow);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2307
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2308 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2309 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2310
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2311 static gboolean gaim_gtk_blist_drag_motion_cb(GtkWidget *tv, GdkDragContext *drag_context,
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2312 gint x, gint y, guint time, gpointer user_data)
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2313 {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2314 GtkTreePath *path;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2315 int delay;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2316
12679
b18738b03b35 [gaim-migrate @ 15022]
Mark Doliner <mark@kingant.net>
parents: 12656
diff changeset
2317 /*
b18738b03b35 [gaim-migrate @ 15022]
Mark Doliner <mark@kingant.net>
parents: 12656
diff changeset
2318 * When dragging a buddy into a contact, this is the delay before
b18738b03b35 [gaim-migrate @ 15022]
Mark Doliner <mark@kingant.net>
parents: 12656
diff changeset
2319 * the contact auto-expands.
b18738b03b35 [gaim-migrate @ 15022]
Mark Doliner <mark@kingant.net>
parents: 12656
diff changeset
2320 */
b18738b03b35 [gaim-migrate @ 15022]
Mark Doliner <mark@kingant.net>
parents: 12656
diff changeset
2321 delay = 900;
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2322
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2323 if (gtkblist->drag_timeout) {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2324 if ((y > gtkblist->tip_rect.y) && ((y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y))
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2325 return FALSE;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2326 /* We've left the cell. Remove the timeout and create a new one below */
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2327 g_source_remove(gtkblist->drag_timeout);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2328 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2329
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2330 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), x, y, &path, NULL, NULL, NULL);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2331 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->tip_rect);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2332
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2333 if (path)
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2334 gtk_tree_path_free(path);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2335 gtkblist->drag_timeout = g_timeout_add(delay, (GSourceFunc)gaim_gtk_blist_expand_timeout, tv);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2336
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2337 if (gtkblist->mouseover_contact) {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2338 if ((y < gtkblist->contact_rect.y) || ((y - gtkblist->contact_rect.height) > gtkblist->contact_rect.y)) {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2339 gaim_gtk_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2340 gtkblist->mouseover_contact = NULL;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2341 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2342 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2343
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2344 return FALSE;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2345 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2346
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2347 static gboolean gaim_gtk_blist_motion_cb (GtkWidget *tv, GdkEventMotion *event, gpointer null)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2348 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2349 GtkTreePath *path;
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2350 int delay;
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2351
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2352 delay = gaim_prefs_get_int("/gaim/gtk/blist/tooltip_delay");
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2353
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2354 if (delay == 0)
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2355 return FALSE;
8083
08d993c1d843 [gaim-migrate @ 8782]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
2356
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2357 if (gtkblist->timeout) {
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2358 if ((event->y > gtkblist->tip_rect.y) && ((event->y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y))
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2359 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2360 /* We've left the cell. Remove the timeout and create a new one below */
8254
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2361 gaim_gtk_blist_tooltip_destroy();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2362 g_source_remove(gtkblist->timeout);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2363 }
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2364
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2365 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL);
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2366 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->tip_rect);
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2367
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2368 if (path)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2369 gtk_tree_path_free(path);
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2370 gtkblist->timeout = g_timeout_add(delay, (GSourceFunc)gaim_gtk_blist_tooltip_timeout, tv);
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2371
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2372 if (gtkblist->mouseover_contact) {
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2373 if ((event->y < gtkblist->contact_rect.y) || ((event->y - gtkblist->contact_rect.height) > gtkblist->contact_rect.y)) {
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2374 gaim_gtk_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2375 gtkblist->mouseover_contact = NULL;
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2376 }
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2377 }
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2378
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2379 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2380 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2381
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2382 static void gaim_gtk_blist_leave_cb (GtkWidget *w, GdkEventCrossing *e, gpointer n)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2383 {
8083
08d993c1d843 [gaim-migrate @ 8782]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
2384
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2385 if (gtkblist->timeout) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2386 g_source_remove(gtkblist->timeout);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2387 gtkblist->timeout = 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2388 }
10382
9f28196ed769 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2389
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2390 if (gtkblist->drag_timeout) {
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2391 g_source_remove(gtkblist->drag_timeout);
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2392 gtkblist->drag_timeout = 0;
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2393 }
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
2394
8254
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
2395 gaim_gtk_blist_tooltip_destroy();
7720
5fe29daf52d7 [gaim-migrate @ 8365]
Sean Egan <seanegan@gmail.com>
parents: 7719
diff changeset
2396
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2397 if (gtkblist->mouseover_contact &&
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
2398 !((e->x > gtkblist->contact_rect.x) && (e->x < (gtkblist->contact_rect.x + gtkblist->contact_rect.width)) &&
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
2399 (e->y > gtkblist->contact_rect.y) && (e->y < (gtkblist->contact_rect.y + gtkblist->contact_rect.height)))) {
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
2400 gaim_gtk_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2401 gtkblist->mouseover_contact = NULL;
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
2402 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2403 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2404
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2405 static void
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2406 toggle_debug(void)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2407 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2408 gaim_prefs_set_bool("/gaim/gtk/debug/enabled",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2409 !gaim_prefs_get_bool("/gaim/gtk/debug/enabled"));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2410 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2411
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2412
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2413 /***************************************************
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2414 * Crap *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2415 ***************************************************/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2416 static GtkItemFactoryEntry blist_menu[] =
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2417 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2418 /* Buddies menu */
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2419 { N_("/_Buddies"), NULL, NULL, 0, "<Branch>", NULL },
9714
2273790bb518 [gaim-migrate @ 10575]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2420 { N_("/Buddies/New Instant _Message..."), "<CTL>M", gaim_gtkdialogs_im, 0, "<StockItem>", GAIM_STOCK_IM },
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
2421 { N_("/Buddies/Join a _Chat..."), "<CTL>C", gaim_gtk_blist_joinchat_show, 0, "<StockItem>", GAIM_STOCK_CHAT },
9714
2273790bb518 [gaim-migrate @ 10575]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2422 { N_("/Buddies/Get User _Info..."), "<CTL>I", gaim_gtkdialogs_info, 0, "<StockItem>", GAIM_STOCK_INFO },
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
2423 { N_("/Buddies/View User _Log..."), "<CTL>L", gaim_gtkdialogs_log, 0, "<StockItem>", GAIM_STOCK_LOG },
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2424 { "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL },
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2425 { N_("/Buddies/Show _Offline Buddies"), NULL, gaim_gtk_blist_edit_mode_cb, 1, "<CheckItem>", NULL },
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2426 { N_("/Buddies/Show _Empty Groups"), NULL, gaim_gtk_blist_show_empty_groups_cb, 1, "<CheckItem>", NULL },
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2427 { N_("/Buddies/Show Buddy _Details"), NULL, gaim_gtk_blist_buddy_details_cb, 1, "<CheckItem>", NULL },
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
2428 { N_("/Buddies/Show Idle _Times"), NULL, gaim_gtk_blist_show_idle_time_cb, 1, "<CheckItem>", NULL },
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2429 { N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "<Branch>", NULL },
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2430 { "/Buddies/sep2", NULL, NULL, 0, "<Separator>", NULL },
7853
340df1652af1 [gaim-migrate @ 8507]
Mark Doliner <mark@kingant.net>
parents: 7843
diff changeset
2431 { N_("/Buddies/_Add Buddy..."), "<CTL>B", gaim_gtk_blist_add_buddy_cb, 0, "<StockItem>", GTK_STOCK_ADD },
340df1652af1 [gaim-migrate @ 8507]
Mark Doliner <mark@kingant.net>
parents: 7843
diff changeset
2432 { N_("/Buddies/Add C_hat..."), NULL, gaim_gtk_blist_add_chat_cb, 0, "<StockItem>", GTK_STOCK_ADD },
340df1652af1 [gaim-migrate @ 8507]
Mark Doliner <mark@kingant.net>
parents: 7843
diff changeset
2433 { N_("/Buddies/Add _Group..."), NULL, gaim_blist_request_add_group, 0, "<StockItem>", GTK_STOCK_ADD },
12799
6234099a4b37 [gaim-migrate @ 15146]
Mark Doliner <mark@kingant.net>
parents: 12797
diff changeset
2434 { "/Buddies/sep3", NULL, NULL, 0, "<Separator>", NULL },
12300
6487e68dcef9 [gaim-migrate @ 14604]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12298
diff changeset
2435 { N_("/Buddies/_Quit"), "<CTL>Q", gaim_core_quit, 0, "<StockItem>", GTK_STOCK_QUIT },
6487e68dcef9 [gaim-migrate @ 14604]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12298
diff changeset
2436
6487e68dcef9 [gaim-migrate @ 14604]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12298
diff changeset
2437 /* Accounts menu */
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2438 { N_("/_Accounts"), NULL, NULL, 0, "<Branch>", NULL },
12348
4f7797a3024b [gaim-migrate @ 14652]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12341
diff changeset
2439 { N_("/Accounts/Add\\/Edit"), "<CTL>A", gaim_gtk_accounts_window_show, 0, "<StockItem>", GAIM_STOCK_ACCOUNTS },
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2440
8470
9949b752d1ab [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2441 /* Tools */
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2442 { N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
12191
bc2b9f925979 [gaim-migrate @ 14493]
Richard Laager <rlaager@wiktel.com>
parents: 12179
diff changeset
2443 { N_("/Tools/Buddy _Pounces"), NULL, gaim_gtk_pounces_manager_show, 0, "<StockItem>", GAIM_STOCK_POUNCE },
12163
f6f08fd1841a [gaim-migrate @ 14464]
Richard Laager <rlaager@wiktel.com>
parents: 12136
diff changeset
2444 { N_("/Tools/Plu_gins"), "<CTL>U", gaim_gtk_plugin_dialog_show, 0, "<StockItem>", GAIM_STOCK_PLUGIN },
12136
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
2445 { N_("/Tools/Pr_eferences"), "<CTL>P", gaim_gtk_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
10694
06f68443e6e5 [gaim-migrate @ 12246]
Mark Doliner <mark@kingant.net>
parents: 10664
diff changeset
2446 { N_("/Tools/Pr_ivacy"), NULL, gaim_gtk_privacy_dialog_show, 0, "<StockItem>", GTK_STOCK_DIALOG_ERROR },
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2447 { "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
10019
8cc6f0bfa215 [gaim-migrate @ 10943]
Luke Schierer <lschiere@pidgin.im>
parents: 10018
diff changeset
2448 { N_("/Tools/_File Transfers"), "<CTL>T", gaim_show_xfer_dialog, 0, "<StockItem>", GAIM_STOCK_FILE_TRANSFER },
10694
06f68443e6e5 [gaim-migrate @ 12246]
Mark Doliner <mark@kingant.net>
parents: 10664
diff changeset
2449 { N_("/Tools/R_oom List"), NULL, gaim_gtk_roomlist_dialog_show, 0, "<StockItem>", GTK_STOCK_INDEX },
12334
2823118073fa [gaim-migrate @ 14638]
Mark Doliner <mark@kingant.net>
parents: 12333
diff changeset
2450 { N_("/Tools/System _Log"), NULL, gtk_blist_show_systemlog_cb, 0, "<StockItem>", GAIM_STOCK_LOG },
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2451 { "/Tools/sep3", NULL, NULL, 0, "<Separator>", NULL },
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2452 { N_("/Tools/Mute _Sounds"), "<CTL>S", gaim_gtk_blist_mute_sounds_cb, 0, "<CheckItem>", NULL },
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2453
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2454 /* Help */
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
2455 { N_("/_Help"), NULL, NULL, 0, "<Branch>", NULL },
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2456 { N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "<StockItem>", GTK_STOCK_HELP },
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
2457 { N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "<StockItem>", GAIM_STOCK_DEBUG },
9753
60705fd4f411 [gaim-migrate @ 10620]
Mark Doliner <mark@kingant.net>
parents: 9749
diff changeset
2458 { N_("/Help/_About"), NULL, gaim_gtkdialogs_about, 0, "<StockItem>", GAIM_STOCK_ABOUT },
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2459 };
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2460
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2461 /*********************************************************
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2462 * Private Utility functions *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2463 *********************************************************/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2464
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2465 static char *gaim_get_tooltip_text(GaimBlistNode *node, gboolean full)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2466 {
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2467 GString *str = g_string_new("");
5237
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2468 GaimPlugin *prpl;
757d680f923d [gaim-migrate @ 5607]
Nathan Walp <nwalp@pidgin.im>
parents: 5234
diff changeset
2469 GaimPluginProtocolInfo *prpl_info = NULL;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2470 char *tmp;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2471
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2472 if (GAIM_BLIST_NODE_IS_CHAT(node))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2473 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2474 GaimChat *chat;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2475 GList *cur;
5274
ad299f62b9b6 [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2476 struct proto_chat_entry *pce;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2477 char *name, *value;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2478
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2479 chat = (GaimChat *)node;
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
2480 prpl = gaim_find_prpl(gaim_account_get_protocol_id(chat->account));
5274
ad299f62b9b6 [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2481 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
ad299f62b9b6 [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2482
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2483 tmp = g_markup_escape_text(gaim_chat_get_name(chat), -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2484 g_string_append_printf(str, "<span size='larger' weight='bold'>%s</span>", tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2485 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2486
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2487 if (g_list_length(gaim_connections_get_all()) > 1)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2488 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2489 tmp = g_markup_escape_text(chat->account->username, -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2490 g_string_append_printf(str, _("\n<b>Account:</b> %s"), tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2491 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2492 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2493
9959
b6a74cbfd182 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
2494 if (prpl_info->chat_info != NULL)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2495 cur = prpl_info->chat_info(chat->account->gc);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2496 else
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2497 cur = NULL;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2498
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2499 while (cur != NULL)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2500 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2501 pce = cur->data;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2502
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2503 if (!pce->secret && (!pce->required &&
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2504 g_hash_table_lookup(chat->components, pce->identifier) == NULL))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2505 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2506 tmp = gaim_text_strip_mnemonic(pce->label);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2507 name = g_markup_escape_text(tmp, -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2508 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2509 value = g_markup_escape_text(g_hash_table_lookup(
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2510 chat->components, pce->identifier), -1);
10924
7a82d86ab44a [gaim-migrate @ 12695]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10918
diff changeset
2511 g_string_append_printf(str, "\n<b>%s</b> %s",
7a82d86ab44a [gaim-migrate @ 12695]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10918
diff changeset
2512 name ? name : "",
7a82d86ab44a [gaim-migrate @ 12695]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10918
diff changeset
2513 value ? value : "");
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2514 g_free(name);
8020
35c2526dba16 [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 8003
diff changeset
2515 g_free(value);
35c2526dba16 [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 8003
diff changeset
2516 }
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2517
5274
ad299f62b9b6 [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2518 g_free(pce);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2519 cur = g_list_remove(cur, pce);
5274
ad299f62b9b6 [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2520 }
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2521 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2522 else if (GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2523 {
12942
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2524 /* NOTE: THIS FUNCTION IS NO LONGER CALLED FOR CONTACTS
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2525 * See create_tip_for_node(). */
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2526
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2527 GaimContact *c;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2528 GaimBuddy *b;
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2529 GaimPresence *presence;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2530 char *tmp;
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10544
diff changeset
2531 time_t idle_secs, signon;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2532
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2533 if (GAIM_BLIST_NODE_IS_CONTACT(node))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2534 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2535 c = (GaimContact *)node;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2536 b = gaim_contact_get_priority_buddy(c);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2537 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2538 else
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2539 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2540 b = (GaimBuddy *)node;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2541 c = gaim_buddy_get_contact(b);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2542 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2543
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
2544 prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account));
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2545 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2546
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2547 presence = gaim_buddy_get_presence(b);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2548
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2549 /* Buddy Name */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2550 tmp = g_markup_escape_text(gaim_buddy_get_name(b), -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2551 g_string_append_printf(str, "<span size='larger' weight='bold'>%s</span>", tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2552 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2553
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2554 /* Account */
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2555 if (full && g_list_length(gaim_connections_get_all()) > 1)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2556 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2557 tmp = g_markup_escape_text(gaim_account_get_username(
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2558 gaim_buddy_get_account(b)), -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2559 g_string_append_printf(str, _("\n<b>Account:</b> %s"), tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2560 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2561 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2562
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2563 /* Alias */
12942
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2564 /* If there's not a contact alias, the node is being displayed with
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2565 * this alias, so there's no point in showing it in the tooltip. */
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2566 if (full && b->alias != NULL && b->alias[0] != '\0' &&
13217
502a4de3365c [gaim-migrate @ 15581]
Richard Laager <rlaager@wiktel.com>
parents: 13201
diff changeset
2567 (c->alias != NULL && c->alias[0] != '\0') &&
502a4de3365c [gaim-migrate @ 15581]
Richard Laager <rlaager@wiktel.com>
parents: 13201
diff changeset
2568 strcmp(c->alias, b->alias) != 0)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2569 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2570 tmp = g_markup_escape_text(b->alias, -1);
12942
432894b3bdad [gaim-migrate @ 15295]
Richard Laager <rlaager@wiktel.com>
parents: 12941
diff changeset
2571 g_string_append_printf(str, _("\n<b>Buddy Alias:</b> %s"), tmp);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2572 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2573 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2574
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2575 /* Nickname/Server Alias */
12966
03679a4db953 [gaim-migrate @ 15319]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
2576 /* I'd like to only show this if there's a contact or buddy
03679a4db953 [gaim-migrate @ 15319]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
2577 * alias, but many people on MSN set long nicknames, which
03679a4db953 [gaim-migrate @ 15319]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
2578 * get ellipsized, so the only way to see the whole thing is
03679a4db953 [gaim-migrate @ 15319]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
2579 * to look at the tooltip. */
03679a4db953 [gaim-migrate @ 15319]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
2580 if (full && b->server_alias != NULL && b->server_alias[0] != '\0')
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2581 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2582 tmp = g_markup_escape_text(b->server_alias, -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2583 g_string_append_printf(str, _("\n<b>Nickname:</b> %s"), tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2584 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2585 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2586
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2587 /* Logged In */
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10544
diff changeset
2588 signon = gaim_presence_get_login_time(presence);
12530
74f449e10d88 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2589 if (full && GAIM_BUDDY_IS_ONLINE(b) && signon > 0)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2590 {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10544
diff changeset
2591 tmp = gaim_str_seconds_to_string(time(NULL) - signon);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2592 g_string_append_printf(str, _("\n<b>Logged In:</b> %s"), tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2593 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2594 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2595
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2596 /* Idle */
12979
78f8ef7f0f6d [gaim-migrate @ 15332]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12971
diff changeset
2597 if (gaim_presence_is_idle(presence))
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2598 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2599 idle_secs = gaim_presence_get_idle_time(presence);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2600 if (idle_secs > 0)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2601 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2602 tmp = gaim_str_seconds_to_string(time(NULL) - idle_secs);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2603 g_string_append_printf(str, _("\n<b>Idle:</b> %s"), tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2604 g_free(tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2605 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2606 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2607
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2608 /* Last Seen */
12883
d486bb706e82 [gaim-migrate @ 15235]
Richard Laager <rlaager@wiktel.com>
parents: 12849
diff changeset
2609 if (full && !GAIM_BUDDY_IS_ONLINE(b))
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2610 {
11023
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2611 struct _gaim_gtk_blist_node *gtknode = ((GaimBlistNode *)c)->ui_data;
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2612 GaimBlistNode *bnode;
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2613 int lastseen = 0;
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2614
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2615 if (!gtknode->contact_expanded || GAIM_BLIST_NODE_IS_CONTACT(node))
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2616 {
11437
1c20849fc716 [gaim-migrate @ 13674]
Richard Laager <rlaager@wiktel.com>
parents: 11436
diff changeset
2617 /* We're either looking at a buddy for a collapsed contact or
11438
5451fe2d89c0 [gaim-migrate @ 13675]
Richard Laager <rlaager@wiktel.com>
parents: 11437
diff changeset
2618 * an expanded contact itself so we show the most recent
11023
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2619 * (largest) last_seen time for any of the buddies under
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2620 * the contact. */
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2621 for (bnode = ((GaimBlistNode *)c)->child ; bnode != NULL ; bnode = bnode->next)
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2622 {
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2623 int value = gaim_blist_node_get_int(bnode, "last_seen");
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2624 if (value > lastseen)
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2625 lastseen = value;
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2626 }
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2627 }
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2628 else
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2629 {
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2630 /* We're dealing with a buddy under an expanded contact,
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2631 * so we show the last_seen time for the buddy. */
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2632 lastseen = gaim_blist_node_get_int(&b->node, "last_seen");
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2633 }
9a99b0815459 [gaim-migrate @ 12895]
Mark Doliner <mark@kingant.net>
parents: 11018
diff changeset
2634
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2635 if (lastseen > 0)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2636 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2637 tmp = gaim_str_seconds_to_string(time(NULL) - lastseen);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2638 g_string_append_printf(str, _("\n<b>Last Seen:</b> %s ago"), tmp);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2639 g_free(tmp);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2640 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2641 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2642
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2643
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2644 /* Offline? */
12970
ec9b92104904 [gaim-migrate @ 15323]
Richard Laager <rlaager@wiktel.com>
parents: 12966
diff changeset
2645 /* FIXME: Why is this status special-cased by the core? -- rlaager */
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2646 if (!GAIM_BUDDY_IS_ONLINE(b)) {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2647 g_string_append_printf(str, _("\n<b>Status:</b> Offline"));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2648 }
10992
2bda44d66641 [gaim-migrate @ 12830]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10968
diff changeset
2649
2bda44d66641 [gaim-migrate @ 12830]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10968
diff changeset
2650 if (prpl_info && prpl_info->tooltip_text)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2651 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2652 /* Additional text from the PRPL */
12970
ec9b92104904 [gaim-migrate @ 15323]
Richard Laager <rlaager@wiktel.com>
parents: 12966
diff changeset
2653 prpl_info->tooltip_text(b, str, full);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2654 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2655
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2656 /* These are Easter Eggs. Patches to remove them will be rejected. */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2657 if (!g_ascii_strcasecmp(b->name, "robflynn"))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2658 g_string_append(str, _("\n<b>Description:</b> Spooky"));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2659 if (!g_ascii_strcasecmp(b->name, "seanegn"))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2660 g_string_append(str, _("\n<b>Status:</b> Awesome"));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2661 if (!g_ascii_strcasecmp(b->name, "chipx86"))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2662 g_string_append(str, _("\n<b>Status:</b> Rockin'"));
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2663 }
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2664
8824
f08245ed03aa [gaim-migrate @ 9587]
Sean Egan <seanegan@gmail.com>
parents: 8823
diff changeset
2665 gaim_signal_emit(gaim_gtk_blist_get_handle(),
12713
d7043c3c793d [gaim-migrate @ 15057]
Richard Laager <rlaager@wiktel.com>
parents: 12679
diff changeset
2666 "drawing-tooltip", node, str, full);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2667
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
2668 return g_string_free(str, FALSE);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2669 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2670
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2671 struct _emblem_data {
9954
a9fb4493ae22 [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9949
diff changeset
2672 const char *filename;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2673 int x;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2674 int y;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2675 };
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2676
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2677 GdkPixbuf *
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2678 gaim_gtk_blist_get_status_icon(GaimBlistNode *node, GaimStatusIconSize size)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2679 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2680 GdkPixbuf *scale, *status = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2681 int i, scalesize = 30;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2682 char *filename;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2683 const char *protoname = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2684 struct _gaim_gtk_blist_node *gtknode = node->ui_data;
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2685 struct _gaim_gtk_blist_node *gtkbuddynode = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2686 struct _emblem_data emblems[4] = {{NULL, 15, 15}, {NULL, 0, 15},
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2687 {NULL, 0, 0}, {NULL, 15, 0}};
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2688 GaimPresence *presence = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2689 GaimBuddy *buddy = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2690 GaimChat *chat = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2691
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2692 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2693 if(!gtknode->contact_expanded) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2694 buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2695 gtkbuddynode = ((GaimBlistNode*)buddy)->ui_data;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2696 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2697 } else if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2698 buddy = (GaimBuddy*)node;
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2699 gtkbuddynode = node->ui_data;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2700 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2701 chat = (GaimChat*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2702 } else {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2703 return NULL;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2704 }
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2705
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2706 if(buddy || chat) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2707 GaimAccount *account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2708 GaimPlugin *prpl;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2709 GaimPluginProtocolInfo *prpl_info;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2710
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2711 if(buddy)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2712 account = buddy->account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2713 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2714 account = chat->account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2715
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
2716 prpl = gaim_find_prpl(gaim_account_get_protocol_id(account));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2717 if(!prpl)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2718 return NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2719
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2720 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2721
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2722 if(prpl_info && prpl_info->list_icon) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2723 protoname = prpl_info->list_icon(account, buddy);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2724 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2725 if(prpl_info && prpl_info->list_emblems && buddy) {
11924
ced9410eeb73 [gaim-migrate @ 14215]
Mark Doliner <mark@kingant.net>
parents: 11923
diff changeset
2726 if(gtknode && !gtknode->recent_signonoff)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2727 prpl_info->list_emblems(buddy, &emblems[0].filename,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2728 &emblems[1].filename, &emblems[2].filename,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2729 &emblems[3].filename);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2730 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2731 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2732
12744
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2733 if(buddy) {
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2734 GaimConversation *conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM,
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2735 gaim_buddy_get_name(buddy),
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2736 gaim_buddy_get_account(buddy));
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2737 if(conv != NULL) {
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2738 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2739 if(gtkconv != NULL && gaim_gtkconv_is_hidden(gtkconv)) {
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2740 /* add pending emblem */
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2741 if(size == GAIM_STATUS_ICON_SMALL) {
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2742 emblems[0].filename="pending";
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2743 }
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2744 else {
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2745 emblems[3].filename=emblems[2].filename;
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2746 emblems[2].filename="pending";
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2747 }
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2748 }
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2749 }
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2750 }
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
2751
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2752 if(size == GAIM_STATUS_ICON_SMALL) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2753 scalesize = 15;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2754 /* So that only the se icon will composite */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2755 emblems[1].filename = emblems[2].filename = emblems[3].filename = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2756 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2757
11917
5d9172e67615 [gaim-migrate @ 14208]
Nathan Walp <nwalp@pidgin.im>
parents: 11915
diff changeset
2758 if(buddy && GAIM_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2759 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", "login.png", NULL);
11917
5d9172e67615 [gaim-migrate @ 14208]
Nathan Walp <nwalp@pidgin.im>
parents: 11915
diff changeset
2760 } else if(buddy && !GAIM_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2761 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", "logout.png", NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2762 } else if(buddy || chat) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2763 char *image = g_strdup_printf("%s.png", protoname);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2764 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", image, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2765 g_free(image);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2766 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2767 /* gaim dude */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2768 filename = g_build_filename(DATADIR, "pixmaps", "gaim.png", NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2769 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2770
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2771 status = gdk_pixbuf_new_from_file(filename, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2772 g_free(filename);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2773
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2774 if(!status)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2775 return NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2776
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2777 scale = gdk_pixbuf_scale_simple(status, scalesize, scalesize,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2778 GDK_INTERP_BILINEAR);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2779 g_object_unref(status);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2780
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2781 for(i=0; i<4; i++) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2782 if(emblems[i].filename) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2783 GdkPixbuf *emblem;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2784 char *image = g_strdup_printf("%s.png", emblems[i].filename);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2785 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", image, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2786 g_free(image);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2787 emblem = gdk_pixbuf_new_from_file(filename, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2788 g_free(filename);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2789 if(emblem) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2790 if(i == 0 && size == GAIM_STATUS_ICON_SMALL) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2791 gdk_pixbuf_composite(emblem,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2792 scale, 5, 5,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2793 10, 10,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2794 5, 5,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2795 .6, .6,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2796 GDK_INTERP_BILINEAR,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2797 255);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2798 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2799 gdk_pixbuf_composite(emblem,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2800 scale, emblems[i].x, emblems[i].y,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2801 15, 15,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2802 emblems[i].x, emblems[i].y,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2803 1, 1,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2804 GDK_INTERP_BILINEAR,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2805 255);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2806 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2807 g_object_unref(emblem);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2808 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2809 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2810 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2811
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2812 if(buddy) {
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2813 presence = gaim_buddy_get_presence(buddy);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2814
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2815 if (!GAIM_BUDDY_IS_ONLINE(buddy))
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2816 gdk_pixbuf_saturate_and_pixelate(scale, scale, 0.0, FALSE);
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
2817 else if (gaim_presence_is_idle(presence))
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2818 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2819 gdk_pixbuf_saturate_and_pixelate(scale, scale, 0.25, FALSE);
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2820 }
11111
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2821
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2822 if (!gaim_privacy_check(buddy->account, gaim_buddy_get_name(buddy)))
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2823 {
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2824 GdkPixbuf *emblem;
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2825 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", "blocked.png", NULL);
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2826
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2827 emblem = gdk_pixbuf_new_from_file(filename, NULL);
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2828 g_free(filename);
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2829
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2830 if (emblem)
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2831 {
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2832 gdk_pixbuf_composite(emblem, scale,
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2833 0, 0, scalesize, scalesize,
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2834 0, 0,
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2835 (double)scalesize / gdk_pixbuf_get_width(emblem),
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2836 (double)scalesize / gdk_pixbuf_get_height(emblem),
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2837 GDK_INTERP_BILINEAR,
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2838 224);
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2839 g_object_unref(emblem);
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2840 }
f03dce7ea408 [gaim-migrate @ 13163]
Richard Laager <rlaager@wiktel.com>
parents: 11059
diff changeset
2841 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2842 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2843
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2844 return scale;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2845 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2846
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2847 static gchar *gaim_gtk_blist_get_name_markup(GaimBuddy *b, gboolean selected)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2848 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2849 const char *name;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2850 char *esc, *text = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2851 GaimPlugin *prpl;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2852 GaimPluginProtocolInfo *prpl_info = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2853 GaimContact *contact;
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2854 GaimPresence *presence;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2855 struct _gaim_gtk_blist_node *gtkcontactnode = NULL;
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
2856 char *idletime = NULL, *statustext = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2857 time_t t;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2858 /* XXX Clean up this crap */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2859
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2860 contact = (GaimContact*)((GaimBlistNode*)b)->parent;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2861 if(contact)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2862 gtkcontactnode = ((GaimBlistNode*)contact)->ui_data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2863
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2864 if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2865 name = contact->alias;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2866 else
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9606
diff changeset
2867 name = gaim_buddy_get_alias(b);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2868 esc = g_markup_escape_text(name, strlen(name));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2869
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7950
diff changeset
2870 prpl = gaim_find_prpl(gaim_account_get_protocol_id(b->account));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2871
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2872 if (prpl != NULL)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2873 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2874
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2875 presence = gaim_buddy_get_presence(b);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2876
13034
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2877 if (!gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"))
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2878 {
13038
4005ad2b3ca9 [gaim-migrate @ 15397]
Richard Laager <rlaager@wiktel.com>
parents: 13034
diff changeset
2879 if (!selected && gaim_presence_is_idle(presence))
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2880 {
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
2881 text = g_strdup_printf("<span color='%s'>%s</span>",
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
2882 dim_grey(), esc);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2883 g_free(esc);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2884 return text;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2885 }
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2886 else
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2887 return esc;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2888 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2889
8122
36674144c510 [gaim-migrate @ 8826]
Christian Hammond <chipx86@chipx86.com>
parents: 8113
diff changeset
2890 if (prpl_info && prpl_info->status_text && b->account->gc) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2891 char *tmp = prpl_info->status_text(b);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2892 const char *end;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2893
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2894 if(tmp && !g_utf8_validate(tmp, -1, &end)) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2895 char *new = g_strndup(tmp,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2896 g_utf8_pointer_to_offset(tmp, end));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2897 g_free(tmp);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2898 tmp = new;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2899 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2900
10288
627b081e9617 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
2901 #if !GTK_CHECK_VERSION(2,6,0)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2902 if(tmp) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2903 char buf[32];
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2904 char *c = tmp;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2905 int length = 0, vis=0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2906 gboolean inside = FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2907 g_strdelimit(tmp, "\n", ' ');
11920
52f27ffe68a5 [gaim-migrate @ 14211]
Mark Doliner <mark@kingant.net>
parents: 11917
diff changeset
2908 gaim_str_strip_char(tmp, '\r');
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2909
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2910 while(*c && vis < 20) {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2911 if(*c == '&')
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2912 inside = TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2913 else if(*c == ';')
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2914 inside = FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2915 if(!inside)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2916 vis++;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2917 c = g_utf8_next_char(c); /* this is fun */
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2918 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2919
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2920 length = c - tmp;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
2921
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2922 if(vis == 20)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2923 g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2924 else
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2925 g_snprintf(buf, sizeof(buf), "%%s ");
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2926
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2927 statustext = g_strdup_printf(buf, tmp);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2928
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2929 g_free(tmp);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2930 }
10288
627b081e9617 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
2931 #else
12437
92df64b6985b [gaim-migrate @ 14744]
Nathan Walp <nwalp@pidgin.im>
parents: 12436
diff changeset
2932 if(tmp)
92df64b6985b [gaim-migrate @ 14744]
Nathan Walp <nwalp@pidgin.im>
parents: 12436
diff changeset
2933 g_strdelimit(tmp, "\n", ' ');
10288
627b081e9617 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
2934 statustext = tmp;
627b081e9617 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
2935 #endif
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2936 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2937
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
2938 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") &&
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
2939 gaim_presence_is_idle(presence))
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
2940 {
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2941 time_t idle_secs = gaim_presence_get_idle_time(presence);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2942
10351
7fcdd669eb49 [gaim-migrate @ 11566]
Sean Egan <seanegan@gmail.com>
parents: 10325
diff changeset
2943 if (idle_secs > 0) {
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2944 int ihrs, imin;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2945
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2946 time(&t);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2947 ihrs = (t - idle_secs) / 3600;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2948 imin = ((t - idle_secs) / 60) % 60;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2949
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2950 if (ihrs)
12450
a25babbba950 [gaim-migrate @ 14759]
Mark Doliner <mark@kingant.net>
parents: 12437
diff changeset
2951 idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin);
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2952 else
12450
a25babbba950 [gaim-migrate @ 14759]
Mark Doliner <mark@kingant.net>
parents: 12437
diff changeset
2953 idletime = g_strdup_printf(_("Idle %dm"), imin);
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
2954 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2955 else
12450
a25babbba950 [gaim-migrate @ 14759]
Mark Doliner <mark@kingant.net>
parents: 12437
diff changeset
2956 idletime = g_strdup(_("Idle"));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2957 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2958
13034
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2959 if(!gaim_presence_is_online(presence) && !statustext)
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2960 statustext = g_strdup(_("Offline"));
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2961
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2962 if (statustext == NULL && idletime == NULL)
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2963 {
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2964 if (!selected && gaim_presence_is_idle(presence))
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2965 text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2966 else
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2967 text = g_strdup(esc);
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2968 }
13201
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2969 else if (!selected)
13034
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2970 {
13201
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2971 if (gaim_presence_is_idle(presence))
13034
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2972 {
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2973 text = g_strdup_printf("<span color='%s'>%s</span>\n"
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2974 "<span color='%s' size='smaller'>%s%s%s</span>",
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2975 dim_grey(), esc, dim_grey(),
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2976 idletime != NULL ? idletime : "",
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2977 (idletime != NULL && statustext != NULL) ? " - " : "",
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2978 statustext != NULL ? statustext : "");
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2979 }
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2980 else
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2981 {
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
2982 text = g_strdup_printf("%s\n"
13140
00f6445c6879 [gaim-migrate @ 15502]
Richard Laager <rlaager@wiktel.com>
parents: 13132
diff changeset
2983 "<span color='%s' size='smaller'>%s%s%s</span>",
00f6445c6879 [gaim-migrate @ 15502]
Richard Laager <rlaager@wiktel.com>
parents: 13132
diff changeset
2984 esc, dim_grey(),
12366
b0f518af7cad [gaim-migrate @ 14670]
Mark Doliner <mark@kingant.net>
parents: 12357
diff changeset
2985 idletime != NULL ? idletime : "",
11134
f78e7e982cf4 [gaim-migrate @ 13195]
Richard Laager <rlaager@wiktel.com>
parents: 11111
diff changeset
2986 (idletime != NULL && statustext != NULL) ? " - " : "",
12366
b0f518af7cad [gaim-migrate @ 14670]
Mark Doliner <mark@kingant.net>
parents: 12357
diff changeset
2987 statustext != NULL ? statustext : "");
13034
615c84e94745 [gaim-migrate @ 15392]
Richard Laager <rlaager@wiktel.com>
parents: 13030
diff changeset
2988 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2989 }
13201
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2990 else
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2991 text = g_strdup_printf("%s\n"
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2992 "<span size='smaller'>%s%s%s</span>",
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2993 esc,
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2994 idletime != NULL ? idletime : "",
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2995 (idletime != NULL && statustext != NULL) ? " - " : "",
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2996 statustext != NULL ? statustext : "");
6ff5271afedc [gaim-migrate @ 15564]
Richard Laager <rlaager@wiktel.com>
parents: 13196
diff changeset
2997
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
2998
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
2999 g_free(idletime);
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3000 g_free(statustext);
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3001 g_free(esc);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3002
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3003 return text;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3004 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3005
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3006 static void gaim_gtk_blist_restore_position()
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3007 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3008 int blist_x, blist_y, blist_width, blist_height;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3009
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3010 blist_width = gaim_prefs_get_int("/gaim/gtk/blist/width");
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3011
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3012 /* if the window exists, is hidden, we're saving positions, and the
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3013 * position is sane... */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3014 if (gtkblist && gtkblist->window &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3015 !GTK_WIDGET_VISIBLE(gtkblist->window) && blist_width != 0) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3016
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3017 blist_x = gaim_prefs_get_int("/gaim/gtk/blist/x");
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3018 blist_y = gaim_prefs_get_int("/gaim/gtk/blist/y");
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3019 blist_height = gaim_prefs_get_int("/gaim/gtk/blist/height");
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3020
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3021 /* ...check position is on screen... */
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3022 if (blist_x >= gdk_screen_width())
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3023 blist_x = gdk_screen_width() - 100;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3024 else if (blist_x + blist_width < 0)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3025 blist_x = 100;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3026
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3027 if (blist_y >= gdk_screen_height())
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3028 blist_y = gdk_screen_height() - 100;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3029 else if (blist_y + blist_height < 0)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3030 blist_y = 100;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3031
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3032 /* ...and move it back. */
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3033 gtk_window_move(GTK_WINDOW(gtkblist->window), blist_x, blist_y);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3034 gtk_window_resize(GTK_WINDOW(gtkblist->window), blist_width, blist_height);
12279
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
3035 if (gaim_prefs_get_bool("/gaim/gtk/blist/list_maximized"))
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
3036 gtk_window_maximize(GTK_WINDOW(gtkblist->window));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3037 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3038 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3039
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3040 static gboolean gaim_gtk_blist_refresh_timer(GaimBuddyList *list)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3041 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3042 GaimBlistNode *gnode, *cnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3043
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3044 for(gnode = list->root; gnode; gnode = gnode->next) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3045 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3046 continue;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3047 for(cnode = gnode->child; cnode; cnode = cnode->next) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3048 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
3049 GaimBuddy *buddy;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
3050
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
3051 buddy = gaim_contact_get_priority_buddy((GaimContact*)cnode);
10012
a38881ec9c0f [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3052
a38881ec9c0f [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3053 if (buddy &&
a38881ec9c0f [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3054 gaim_presence_is_idle(gaim_buddy_get_presence(buddy)))
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
3055 gaim_gtk_blist_update(list, cnode);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3056 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3057 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3058 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3059
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3060 /* keep on going */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3061 return TRUE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3062 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3063
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3064 static void gaim_gtk_blist_hide_node(GaimBuddyList *list, GaimBlistNode *node)
5260
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3065 {
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3066 struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3067 GtkTreeIter iter;
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3068
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3069 if (!gtknode || !gtknode->row || !gtkblist)
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3070 return;
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3071
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3072 if(gtkblist->selected_node == node)
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3073 gtkblist->selected_node = NULL;
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3074
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3075 if (get_iter_from_node(node, &iter)) {
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3076 gtk_tree_store_remove(gtkblist->treemodel, &iter);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3077 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_BUDDY(node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3078 || GAIM_BLIST_NODE_IS_CHAT(node)) {
5260
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3079 gaim_gtk_blist_update(list, node->parent);
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3080 }
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3081 }
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3082 gtk_tree_row_reference_free(gtknode->row);
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3083 gtknode->row = NULL;
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3084 }
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3085
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3086 static const char *require_connection[] =
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3087 {
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3088 N_("/Buddies/New Instant Message..."),
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3089 N_("/Buddies/Join a Chat..."),
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3090 N_("/Buddies/Get User Info..."),
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3091 N_("/Buddies/Add Buddy..."),
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3092 N_("/Buddies/Add Chat..."),
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3093 N_("/Buddies/Add Group..."),
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3094 };
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3095
10357
6bd4921bb85e [gaim-migrate @ 11575]
Mark Doliner <mark@kingant.net>
parents: 10354
diff changeset
3096 static const int require_connection_size = sizeof(require_connection)
6bd4921bb85e [gaim-migrate @ 11575]
Mark Doliner <mark@kingant.net>
parents: 10354
diff changeset
3097 / sizeof(*require_connection);
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3098
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3099 /**
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3100 * Rebuild dynamic menus and make menu items sensitive/insensitive
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3101 * where appropriate.
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3102 */
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3103 static void
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3104 update_menu_bar(GaimGtkBuddyList *gtkblist)
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3105 {
8937
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
3106 GtkWidget *widget;
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3107 gboolean sensitive;
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3108 int i;
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3109
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3110 g_return_if_fail(gtkblist != NULL);
8259
4f9f68ab8770 [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
3111
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
3112 gaim_gtk_blist_update_accounts_menu();
8937
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
3113
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3114 sensitive = (gaim_connections_get_all() != NULL);
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3115
10357
6bd4921bb85e [gaim-migrate @ 11575]
Mark Doliner <mark@kingant.net>
parents: 10354
diff changeset
3116 for (i = 0; i < require_connection_size; i++)
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3117 {
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3118 widget = gtk_item_factory_get_widget(gtkblist->ift, require_connection[i]);
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3119 gtk_widget_set_sensitive(widget, sensitive);
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3120 }
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3121
8940
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
3122 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Join a Chat..."));
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
3123 gtk_widget_set_sensitive(widget, gaim_gtk_blist_joinchat_is_showable());
b875f5d57b81 [gaim-migrate @ 9710]
Mark Doliner <mark@kingant.net>
parents: 8939
diff changeset
3124
11988
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
3125 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Add Chat..."));
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
3126 gtk_widget_set_sensitive(widget, gaim_gtk_blist_joinchat_is_showable());
9ccbd9f8e8c6 [gaim-migrate @ 14281]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11986
diff changeset
3127
12136
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
3128 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Buddy Pounces"));
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
3129 gtk_widget_set_sensitive(widget, (gaim_connections_get_all() != NULL));
8938
88ec59dec95a [gaim-migrate @ 9708]
Mark Doliner <mark@kingant.net>
parents: 8937
diff changeset
3130
88ec59dec95a [gaim-migrate @ 9708]
Mark Doliner <mark@kingant.net>
parents: 8937
diff changeset
3131 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Privacy"));
13001
4bbd39576c52 [gaim-migrate @ 15354]
Richard Laager <rlaager@wiktel.com>
parents: 12979
diff changeset
3132 gtk_widget_set_sensitive(widget, (gaim_connections_get_all() != NULL));
12136
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
3133
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
3134 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Room List"));
370f9d7868f9 [gaim-migrate @ 14436]
Richard Laager <rlaager@wiktel.com>
parents: 12133
diff changeset
3135 gtk_widget_set_sensitive(widget, gaim_gtk_roomlist_is_showable());
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3136 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3137
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3138 static void
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3139 sign_on_off_cb(GaimConnection *gc, GaimBuddyList *blist)
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3140 {
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3141 GaimGtkBuddyList *gtkblist = GAIM_GTK_BLIST(blist);
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3142
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3143 update_menu_bar(gtkblist);
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3144 }
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3145
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3146 static void
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3147 plugin_changed_cb(GaimPlugin *p, gpointer *data)
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3148 {
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3149 gaim_gtk_blist_update_plugin_actions();
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3150 }
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3151
12133
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3152 static void
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3153 unseen_conv_menu()
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3154 {
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3155 static GtkWidget *menu = NULL;
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3156 GList *convs = NULL;
12133
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3157
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3158 if (menu)
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3159 gtk_widget_destroy(menu);
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3160
12175
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3161 menu = gtk_menu_new();
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3162
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3163 convs = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT, TRUE, 0);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3164 if (!convs) {
12175
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3165 /* no conversations added, don't show the menu */
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3166 gtk_widget_destroy(menu);
12133
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3167 return;
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3168 }
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3169 gaim_gtk_conversations_fill_menu(menu, convs);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3170 g_list_free(convs);
12133
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3171 gtk_widget_show_all(menu);
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3172 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3,
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3173 gtk_get_current_event_time());
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3174 }
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3175
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3176 static gboolean
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3177 menutray_press_cb(GtkWidget *widget, GdkEventButton *event)
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3178 {
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3179 GList *convs;
12208
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3180
12133
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3181 switch (event->button) {
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3182 case 1:
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3183 convs = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM,
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3184 GAIM_UNSEEN_TEXT, TRUE, 1);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3185 if (convs) {
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3186 gaim_gtkconv_present_conversation((GaimConversation*)convs->data);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3187 g_list_free(convs);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3188 }
12133
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3189 break;
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3190 case 3:
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3191 unseen_conv_menu();
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3192 break;
8254bb99f929 [gaim-migrate @ 14433]
Richard Laager <rlaager@wiktel.com>
parents: 12124
diff changeset
3193 }
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3194 return TRUE;
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3195 }
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3196
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3197 static void
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3198 conversation_updated_cb(GaimConversation *conv, GaimConvUpdateType type,
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3199 GaimGtkBuddyList *gtkblist)
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3200 {
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3201 GList *convs = NULL;
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3202 GList *l = NULL;
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3203
12175
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3204 if (type != GAIM_CONV_UPDATE_UNSEEN)
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3205 return;
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3206
12744
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
3207 if(conv->account != NULL && conv->name != NULL) {
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
3208 GaimBuddy *buddy = gaim_find_buddy(conv->account, conv->name);
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
3209 if(buddy != NULL)
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
3210 gaim_gtk_blist_update_buddy(NULL, (GaimBlistNode *)buddy);
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
3211 }
fcd9477e4476 [gaim-migrate @ 15091]
Luke Schierer <lschiere@pidgin.im>
parents: 12713
diff changeset
3212
12175
a655bdeb561d [gaim-migrate @ 14477]
Richard Laager <rlaager@wiktel.com>
parents: 12163
diff changeset
3213 if (gtkblist->menutrayicon) {
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3214 gtk_widget_destroy(gtkblist->menutrayicon);
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3215 gtkblist->menutrayicon = NULL;
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3216 }
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3217
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3218 convs = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT, TRUE, 0);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3219 if (convs) {
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3220 GtkWidget *img = NULL;
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3221 GString *tooltip_text = NULL;
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3222
12117
cb77957d644c [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3223 tooltip_text = g_string_new("");
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3224 l = convs;
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3225 while (l != NULL) {
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3226 if (GAIM_IS_GTK_CONVERSATION(l->data)) {
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3227 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION((GaimConversation *)l->data);
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3228
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3229 g_string_append_printf(tooltip_text,
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3230 ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3231 gtkconv->unseen_count,
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3232 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
12117
cb77957d644c [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3233 }
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3234 l = l->next;
12117
cb77957d644c [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3235 }
12239
36d3b1eaf20e [gaim-migrate @ 14541]
Nathan Walp <nwalp@pidgin.im>
parents: 12232
diff changeset
3236 if(tooltip_text->len > 0) {
12302
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3237 /* get rid of the last newline */
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3238 tooltip_text = g_string_truncate(tooltip_text, tooltip_text->len -1);
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3239 img = gtk_image_new_from_stock(GAIM_STOCK_PENDING, GTK_ICON_SIZE_MENU);
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3240
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3241 gtkblist->menutrayicon = gtk_event_box_new();
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3242 gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img);
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3243 gtk_widget_show(img);
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3244 gtk_widget_show(gtkblist->menutrayicon);
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3245 g_signal_connect(G_OBJECT(gtkblist->menutrayicon), "button-press-event", G_CALLBACK(menutray_press_cb), NULL);
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3246
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3247 gaim_gtk_menu_tray_append(GAIM_GTK_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, tooltip_text->str);
12239
36d3b1eaf20e [gaim-migrate @ 14541]
Nathan Walp <nwalp@pidgin.im>
parents: 12232
diff changeset
3248 }
12302
1b6167be6e58 [gaim-migrate @ 14606]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12301
diff changeset
3249 g_string_free(tooltip_text, TRUE);
12468
6faefbebcd24 [gaim-migrate @ 14778]
Richard Laager <rlaager@wiktel.com>
parents: 12466
diff changeset
3250 g_list_free(convs);
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3251 }
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3252 }
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3253
12208
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3254 static void
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3255 conversation_deleting_cb(GaimConversation *conv, GaimGtkBuddyList *gtkblist)
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3256 {
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3257 conversation_updated_cb(conv, GAIM_CONV_UPDATE_UNSEEN, gtkblist);
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3258 }
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3259
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3260 /**********************************************************************************
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3261 * Public API Functions *
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3262 **********************************************************************************/
9774
ec6ff57d7b06 [gaim-migrate @ 10642]
Luke Schierer <lschiere@pidgin.im>
parents: 9773
diff changeset
3263
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3264 static void gaim_gtk_blist_new_list(GaimBuddyList *blist)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3265 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3266 GaimGtkBuddyList *gtkblist;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3267
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3268 gtkblist = g_new0(GaimGtkBuddyList, 1);
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3269 gtkblist->connection_errors = g_hash_table_new_full(g_direct_hash,
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3270 g_direct_equal, NULL, g_free);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3271 blist->ui_data = gtkblist;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3272 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3273
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3274 static void gaim_gtk_blist_new_node(GaimBlistNode *node)
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3275 {
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3276 node->ui_data = g_new0(struct _gaim_gtk_blist_node, 1);
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3277 }
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3278
11018
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3279 gboolean gaim_gtk_blist_node_is_contact_expanded(GaimBlistNode *node)
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3280 {
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3281 if GAIM_BLIST_NODE_IS_BUDDY(node)
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3282 node = node->parent;
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3283
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3284 g_return_val_if_fail(GAIM_BLIST_NODE_IS_CONTACT(node), FALSE);
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3285
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3286 return ((struct _gaim_gtk_blist_node *)node->ui_data)->contact_expanded;
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3287 }
04f280376f06 [gaim-migrate @ 12888]
Mark Doliner <mark@kingant.net>
parents: 11016
diff changeset
3288
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3289 void gaim_gtk_blist_update_columns()
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3290 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3291 if(!gtkblist)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3292 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3293
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3294 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) {
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3295 gtk_tree_view_column_set_visible(gtkblist->buddy_icon_column, TRUE);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3296 gtk_tree_view_column_set_visible(gtkblist->idle_column, FALSE);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3297 } else {
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3298 gtk_tree_view_column_set_visible(gtkblist->idle_column,
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3299 gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time"));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3300 gtk_tree_view_column_set_visible(gtkblist->buddy_icon_column, FALSE);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3301 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3302 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3303
12326
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3304 static void
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3305 show_buddy_icons_pref_cb(const char *name, GaimPrefType type,
12816
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
3306 gconstpointer val, gpointer data)
12326
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3307 {
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3308 gaim_gtk_blist_update_columns();
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3309 }
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3310
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3311 enum {
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3312 DRAG_BUDDY,
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3313 DRAG_ROW,
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3314 DRAG_VCARD,
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3315 DRAG_TEXT,
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3316 DRAG_URI,
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3317 NUM_TARGETS
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3318 };
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3319
13106
a0a4b44239e8 [gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents: 13090
diff changeset
3320 static const char *
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3321 item_factory_translate_func (const char *path, gpointer func_data)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3322 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3323 return _((char *)path);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3324 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3325
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
3326 void gaim_gtk_blist_setup_sort_methods()
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
3327 {
11798
01c3eec6ea3c [gaim-migrate @ 14089]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11797
diff changeset
3328 gaim_gtk_blist_sort_method_reg("none", _("Manually"), sort_method_none);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3329 #if GTK_CHECK_VERSION(2,2,1)
11798
01c3eec6ea3c [gaim-migrate @ 14089]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11797
diff changeset
3330 gaim_gtk_blist_sort_method_reg("alphabetical", _("Alphabetically"), sort_method_alphabetical);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3331 gaim_gtk_blist_sort_method_reg("status", _("By status"), sort_method_status);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3332 gaim_gtk_blist_sort_method_reg("log_size", _("By log size"), sort_method_log);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3333 #endif
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3334 gaim_gtk_blist_sort_method_set(gaim_prefs_get_string("/gaim/gtk/blist/sort_type"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3335 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3336
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3337 static void _prefs_change_redo_list()
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3338 {
13510
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3339 GtkTreeSelection *sel;
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3340 GtkTreeIter iter;
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3341 GaimBlistNode *node = NULL;
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3342
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3343 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3344 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3345 {
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3346 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3347 }
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3348
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3349 redo_buddy_list(gaim_get_blist(), TRUE);
13161
02268b52ced3 [gaim-migrate @ 15524]
Richard Laager <rlaager@wiktel.com>
parents: 13146
diff changeset
3350 #if GTK_CHECK_VERSION(2,6,0)
02268b52ced3 [gaim-migrate @ 15524]
Richard Laager <rlaager@wiktel.com>
parents: 13146
diff changeset
3351 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview));
02268b52ced3 [gaim-migrate @ 15524]
Richard Laager <rlaager@wiktel.com>
parents: 13146
diff changeset
3352 #endif
13510
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3353
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3354 if (node)
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3355 {
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3356 struct _gaim_gtk_blist_node *gtknode;
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3357 GtkTreePath *path;
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3358
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3359 gtknode = node->ui_data;
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3360 if (gtknode && gtknode->row)
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3361 {
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3362 path = gtk_tree_row_reference_get_path(gtknode->row);
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3363 gtk_tree_selection_select_path(sel, path);
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3364 gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(gtkblist->treeview), path, NULL, FALSE, 0, 0);
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3365 gtk_tree_path_free(path);
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3366 }
65486b7e8e45 [gaim-migrate @ 15886]
Richard Laager <rlaager@wiktel.com>
parents: 13509
diff changeset
3367 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3368 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3369
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3370 static void _prefs_change_sort_method(const char *pref_name, GaimPrefType type,
12816
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12799
diff changeset
3371 gconstpointer val, gpointer data)
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3372 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3373 if(!strcmp(pref_name, "/gaim/gtk/blist/sort_type"))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3374 gaim_gtk_blist_sort_method_set(val);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3375 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3376
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3377 /*
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3378 * "This is so dead sexy."
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3379 * "Two thumbs up."
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3380 * "Best movie of the year."
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3381 *
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3382 * This is the function that handles CTRL+F searching in the buddy list.
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3383 * It finds the top-most buddy/group/chat/whatever containing the
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3384 * entered string.
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3385 *
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3386 * It's somewhat ineffecient, because we strip all the HTML from the
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3387 * "name" column of the buddy list (because the GtkTreeModel does not
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3388 * contain the screen name in a non-markedup format). But the alternative
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3389 * is to add an extra column to the GtkTreeModel. And this function is
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3390 * used rarely, so it shouldn't matter TOO much.
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3391 */
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3392 static gboolean
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3393 _search_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data)
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3394 {
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3395 gchar *enteredstring;
13612
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3396 gchar *tmp;
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10435
diff changeset
3397 gchar *withmarkup;
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3398 gchar *nomarkup;
11490
1ae1454204cd [gaim-migrate @ 13733]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11438
diff changeset
3399 gchar *normalized;
13478
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3400 gboolean result;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3401 size_t i;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3402 size_t len;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3403 PangoLogAttr *log_attrs;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3404 gchar *word;
10435
341d4932f89e [gaim-migrate @ 11692]
Mark Doliner <mark@kingant.net>
parents: 10433
diff changeset
3405
341d4932f89e [gaim-migrate @ 11692]
Mark Doliner <mark@kingant.net>
parents: 10433
diff changeset
3406 gtk_tree_model_get(model, iter, column, &withmarkup, -1);
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3407
13612
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3408 tmp = g_utf8_normalize(key, -1, G_NORMALIZE_DEFAULT);
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3409 enteredstring = g_utf8_casefold(tmp, -1);
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3410 g_free(tmp);
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3411
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3412 nomarkup = gaim_markup_strip_html(withmarkup);
13612
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3413 tmp = g_utf8_normalize(nomarkup, -1, G_NORMALIZE_DEFAULT);
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3414 g_free(nomarkup);
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3415 normalized = g_utf8_casefold(tmp, -1);
dd03aa8a28ad [gaim-migrate @ 15998]
Richard Laager <rlaager@wiktel.com>
parents: 13559
diff changeset
3416 g_free(tmp);
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3417
13478
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3418 if (gaim_str_has_prefix(normalized, enteredstring))
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3419 {
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3420 g_free(withmarkup);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3421 g_free(enteredstring);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3422 g_free(normalized);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3423 return FALSE;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3424 }
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3425
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3426
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3427 /* Use Pango to separate by words. */
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3428 len = g_utf8_strlen(normalized, -1);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3429 log_attrs = g_new(PangoLogAttr, len + 1);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3430
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3431 pango_get_log_attrs(normalized, len, -1, NULL, log_attrs, len + 1);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3432
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3433 word = normalized;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3434 result = TRUE;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3435 for (i = 0; i < (len - 1) ; i++)
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3436 {
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3437 if (log_attrs[i].is_word_start &&
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3438 gaim_str_has_prefix(word, enteredstring))
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3439 {
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3440 result = FALSE;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3441 break;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3442 }
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3443 word = g_utf8_next_char(word);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3444 }
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3445 g_free(log_attrs);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3446
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3447 /* The non-Pango version. */
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3448 #if 0
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3449 word = normalized;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3450 result = TRUE;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3451 while (word[0] != '\0')
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3452 {
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3453 gunichar c = g_utf8_get_char(word);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3454 if (!g_unichar_isalnum(c))
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3455 {
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3456 word = g_utf8_find_next_char(word, NULL);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3457 if (gaim_str_has_prefix(word, enteredstring))
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3458 {
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3459 result = FALSE;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3460 break;
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3461 }
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3462 }
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3463 else
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3464 word = g_utf8_find_next_char(word, NULL);
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3465 }
38dcde2c8c4b [gaim-migrate @ 15854]
Richard Laager <rlaager@wiktel.com>
parents: 13450
diff changeset
3466 #endif
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3467
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10435
diff changeset
3468 g_free(withmarkup);
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3469 g_free(enteredstring);
11490
1ae1454204cd [gaim-migrate @ 13733]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11438
diff changeset
3470 g_free(normalized);
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3471
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3472 return result;
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3473 }
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3474
12522
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3475 static void account_modified(GaimAccount *account, GaimGtkBuddyList *gtkblist)
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3476 {
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3477 if (!gtkblist)
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3478 return;
12589
42ea8c3de6de [gaim-migrate @ 14918]
Mark Doliner <mark@kingant.net>
parents: 12583
diff changeset
3479
12522
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3480 update_menu_bar(gtkblist);
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3481 }
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3482
12766
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3483 static void
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3484 account_status_changed(GaimAccount *account, GaimStatus *old,
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3485 GaimStatus *new, GaimGtkBuddyList *gtkblist)
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3486 {
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3487 if (!gtkblist)
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3488 return;
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3489
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3490 update_menu_bar(gtkblist);
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3491 }
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3492
12124
9c123e27e2f6 [gaim-migrate @ 14424]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12119
diff changeset
3493 static gboolean
12461
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3494 gtk_blist_window_key_press_cb(GtkWidget *w, GdkEventKey *event, GaimGtkBuddyList *gtkblist)
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3495 {
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3496 GtkWidget *imhtml;
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3497
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3498 if (!gtkblist)
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3499 return FALSE;
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3500
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3501 imhtml = gtk_window_get_focus(GTK_WINDOW(gtkblist->window));
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3502
12474
24beec3e42ad [gaim-migrate @ 14785]
Luke Schierer <lschiere@pidgin.im>
parents: 12473
diff changeset
3503 if (GTK_IS_IMHTML(imhtml) && gtk_bindings_activate(GTK_OBJECT(imhtml), event->keyval, event->state))
12461
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3504 return TRUE;
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3505 return FALSE;
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3506 }
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3507
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3508 /***********************************/
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3509 /* Connection error handling stuff */
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3510 /***********************************/
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3511
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3512 static void
13315
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3513 ce_modify_account_cb(GaimAccount *account)
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3514 {
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3515 gaim_gtk_account_dialog_show(GAIM_GTK_MODIFY_ACCOUNT_DIALOG, account);
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3516 }
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3517
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3518 static void
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3519 ce_enable_account_cb(GaimAccount *account)
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3520 {
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3521 gaim_account_set_enabled(account, gaim_core_get_ui(), TRUE);
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3522 }
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3523
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3524 static void
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3525 connection_error_button_clicked_cb(GtkButton *widget, gpointer user_data)
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3526 {
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3527 GaimAccount *account;
13023
e8adf8183cf4 [gaim-migrate @ 15376]
Mark Doliner <mark@kingant.net>
parents: 13022
diff changeset
3528 char *primary;
e8adf8183cf4 [gaim-migrate @ 15376]
Mark Doliner <mark@kingant.net>
parents: 13022
diff changeset
3529 const char *text;
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3530
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3531 account = user_data;
13023
e8adf8183cf4 [gaim-migrate @ 15376]
Mark Doliner <mark@kingant.net>
parents: 13022
diff changeset
3532 primary = g_strdup_printf(_("%s disconnected"),
e8adf8183cf4 [gaim-migrate @ 15376]
Mark Doliner <mark@kingant.net>
parents: 13022
diff changeset
3533 gaim_account_get_username(account));
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3534 text = g_hash_table_lookup(gtkblist->connection_errors, account);
13375
a6b846c71358 [gaim-migrate @ 15748]
Mark Doliner <mark@kingant.net>
parents: 13336
diff changeset
3535
13315
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3536 if (gaim_account_is_connected(account))
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3537 {
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3538 gaim_notify_formatted(NULL, _("Connection Error"),
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3539 primary, NULL, text, NULL, NULL);
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3540 }
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3541 else
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3542 {
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3543 gboolean enabled = gaim_account_get_enabled(account, gaim_core_get_ui());
13375
a6b846c71358 [gaim-migrate @ 15748]
Mark Doliner <mark@kingant.net>
parents: 13336
diff changeset
3544 gaim_request_action(account, _("Connection Error"), primary, text, 2,
13315
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3545 account, 3,
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3546 _("OK"), NULL,
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3547 _("Modify Account"), GAIM_CALLBACK(ce_modify_account_cb),
13540
0bdcd590cd05 [gaim-migrate @ 15917]
Richard Laager <rlaager@wiktel.com>
parents: 13510
diff changeset
3548 enabled ? _("Connect") : _("Re-enable Account"),
13375
a6b846c71358 [gaim-migrate @ 15748]
Mark Doliner <mark@kingant.net>
parents: 13336
diff changeset
3549 enabled ? GAIM_CALLBACK(gaim_account_connect) :
13315
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3550 GAIM_CALLBACK(ce_enable_account_cb));
d65250edebe0 [gaim-migrate @ 15681]
Richard Laager <rlaager@wiktel.com>
parents: 13293
diff changeset
3551 }
13629
3275a0f675e2 [gaim-migrate @ 16016]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13612
diff changeset
3552 g_free(primary);
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3553 gtk_widget_destroy(GTK_WIDGET(widget));
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3554 g_hash_table_remove(gtkblist->connection_errors, account);
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3555 }
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3556
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3557 /* Add some buttons that show connection errors */
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3558 static void
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3559 create_connection_error_buttons(gpointer key, gpointer value,
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3560 gpointer user_data)
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3561 {
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3562 GaimAccount *account;
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3563 GaimStatusType *status_type;
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3564 gchar *escaped, *text;
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3565 GtkWidget *button, *label, *image, *hbox;
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3566 GdkPixbuf *pixbuf;
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3567
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3568 account = key;
13049
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3569 escaped = g_markup_escape_text((const gchar *)value, -1);
13023
e8adf8183cf4 [gaim-migrate @ 15376]
Mark Doliner <mark@kingant.net>
parents: 13022
diff changeset
3570 text = g_strdup_printf(_("<span color=\"red\">%s disconnected: %s</span>"),
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3571 gaim_account_get_username(account),
13049
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3572 escaped);
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3573 g_free(escaped);
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3574
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3575 hbox = gtk_hbox_new(FALSE, 0);
13049
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3576
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3577 /* Create the icon */
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3578 status_type = gaim_account_get_status_type_with_primitive(account,
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3579 GAIM_STATUS_OFFLINE);
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3580 pixbuf = gaim_gtk_create_prpl_icon_with_status(account, status_type, 0.5);
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3581 if (pixbuf != NULL) {
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
3582 image = gtk_image_new_from_pixbuf(pixbuf);
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3583 g_object_unref(pixbuf);
13030
d09b19783b8d [gaim-migrate @ 15383]
Mark Doliner <mark@kingant.net>
parents: 13023
diff changeset
3584
d09b19783b8d [gaim-migrate @ 15383]
Mark Doliner <mark@kingant.net>
parents: 13023
diff changeset
3585 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE,
d09b19783b8d [gaim-migrate @ 15383]
Mark Doliner <mark@kingant.net>
parents: 13023
diff changeset
3586 GAIM_HIG_BOX_SPACE);
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3587 }
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3588
13049
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3589 /* Create the text */
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3590 label = gtk_label_new("");
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3591 gtk_label_set_markup(GTK_LABEL(label), text);
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3592 g_free(text);
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3593 #if GTK_CHECK_VERSION(2,6,0)
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3594 g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3595 #endif
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3596 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE,
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3597 GAIM_HIG_BOX_SPACE);
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3598
13049
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3599 /* Create the actual button and put the icon and text on it */
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3600 button = gtk_button_new();
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3601 gtk_container_add(GTK_CONTAINER(button), hbox);
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3602 g_signal_connect(G_OBJECT(button), "clicked",
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3603 G_CALLBACK(connection_error_button_clicked_cb),
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3604 account);
13049
97fa7332b034 [gaim-migrate @ 15410]
Mark Doliner <mark@kingant.net>
parents: 13038
diff changeset
3605 gtk_widget_show_all(button);
13022
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3606 gtk_box_pack_end(GTK_BOX(gtkblist->error_buttons), button,
228b1f95e5b4 [gaim-migrate @ 15375]
Etan Reisner <pidgin@unreliablesource.net>
parents: 13016
diff changeset
3607 FALSE, FALSE, 0);
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3608 }
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3609
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3610 void
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3611 gaim_gtk_blist_update_account_error_state(GaimAccount *account, const char *text)
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3612 {
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3613 GList *l;
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3614
13016
8acf409a2d5f [gaim-migrate @ 15369]
Mark Doliner <mark@kingant.net>
parents: 13015
diff changeset
3615 if (text == NULL)
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3616 g_hash_table_remove(gtkblist->connection_errors, account);
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3617 else
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3618 g_hash_table_insert(gtkblist->connection_errors, account, g_strdup(text));
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3619
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3620 /* Remove the old error buttons */
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3621 for (l = gtk_container_get_children(GTK_CONTAINER(gtkblist->error_buttons));
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3622 l != NULL;
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3623 l = l->next)
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3624 {
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3625 gtk_widget_destroy(GTK_WIDGET(l->data));
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3626 }
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3627
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3628 /* Add new error buttons */
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3629 g_hash_table_foreach(gtkblist->connection_errors,
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3630 create_connection_error_buttons, NULL);
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3631 }
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3632
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3633 /******************************************/
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3634 /* End of connection error handling stuff */
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3635 /******************************************/
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3636
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3637 static void gaim_gtk_blist_show(GaimBuddyList *list)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3638 {
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3639 void *handle;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3640 GtkCellRenderer *rend;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3641 GtkTreeViewColumn *column;
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3642 GtkWidget *menu;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3643 GtkWidget *sw;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3644 GtkAccelGroup *accel_group;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3645 GtkTreeSelection *selection;
9556
75fe1ace4ae4 [gaim-migrate @ 10392]
Sean Egan <seanegan@gmail.com>
parents: 9533
diff changeset
3646 GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
8089
35db601609e3 [gaim-migrate @ 8788]
Sean Egan <seanegan@gmail.com>
parents: 8083
diff changeset
3647 {"application/x-im-contact", 0, DRAG_BUDDY},
9495
960e3fd1da94 [gaim-migrate @ 10321]
Sean Egan <seanegan@gmail.com>
parents: 9466
diff changeset
3648 {"text/x-vcard", 0, DRAG_VCARD },
9525
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9498
diff changeset
3649 {"text/uri-list", 0, DRAG_URI},
a3be930b7fad [gaim-migrate @ 10352]
Sean Egan <seanegan@gmail.com>
parents: 9498
diff changeset
3650 {"text/plain", 0, DRAG_TEXT}};
9556
75fe1ace4ae4 [gaim-migrate @ 10392]
Sean Egan <seanegan@gmail.com>
parents: 9533
diff changeset
3651 GtkTargetEntry ste[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
75fe1ace4ae4 [gaim-migrate @ 10392]
Sean Egan <seanegan@gmail.com>
parents: 9533
diff changeset
3652 {"application/x-im-contact", 0, DRAG_BUDDY},
75fe1ace4ae4 [gaim-migrate @ 10392]
Sean Egan <seanegan@gmail.com>
parents: 9533
diff changeset
3653 {"text/x-vcard", 0, DRAG_VCARD }};
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3654 if (gtkblist && gtkblist->window) {
12119
312efb43c49a [gaim-migrate @ 14419]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12117
diff changeset
3655 gaim_blist_set_visible(gaim_prefs_get_bool("/gaim/gtk/blist/list_visible"));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3656 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3657 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3658
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3659 gtkblist = GAIM_GTK_BLIST(list);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3660
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3661 gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3662 gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list");
9746
3a71d70e3945 [gaim-migrate @ 10611]
Luke Schierer <lschiere@pidgin.im>
parents: 9737
diff changeset
3663 gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List"));
12328
cdb0e57f4a76 [gaim-migrate @ 14632]
Nathan Walp <nwalp@pidgin.im>
parents: 12326
diff changeset
3664 GTK_WINDOW(gtkblist->window)->allow_shrink = TRUE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3665
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3666 gtkblist->vbox = gtk_vbox_new(FALSE, 0);
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3667 gtk_widget_show(gtkblist->vbox);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3668 gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->vbox);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3669
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
3670 g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3671 g_signal_connect(G_OBJECT(gtkblist->window), "configure_event", G_CALLBACK(gtk_blist_configure_cb), NULL);
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
3672 g_signal_connect(G_OBJECT(gtkblist->window), "visibility_notify_event", G_CALLBACK(gtk_blist_visibility_cb), NULL);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
3673 g_signal_connect(G_OBJECT(gtkblist->window), "window_state_event", G_CALLBACK(gtk_blist_window_state_cb), NULL);
12461
27671f780081 [gaim-migrate @ 14771]
Richard Laager <rlaager@wiktel.com>
parents: 12458
diff changeset
3674 g_signal_connect(G_OBJECT(gtkblist->window), "key_press_event", G_CALLBACK(gtk_blist_window_key_press_cb), gtkblist);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3675 gtk_widget_add_events(gtkblist->window, GDK_VISIBILITY_NOTIFY_MASK);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3676
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3677 /******************************* Menu bar *************************************/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3678 accel_group = gtk_accel_group_new();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3679 gtk_window_add_accel_group(GTK_WINDOW (gtkblist->window), accel_group);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3680 g_object_unref(accel_group);
5427
04e1e40b99b0 [gaim-migrate @ 5806]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
3681 gtkblist->ift = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<GaimMain>", accel_group);
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3682 gtk_item_factory_set_translate_func(gtkblist->ift,
13106
a0a4b44239e8 [gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents: 13090
diff changeset
3683 (GtkTranslateFunc)item_factory_translate_func,
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3684 NULL, NULL);
5427
04e1e40b99b0 [gaim-migrate @ 5806]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
3685 gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3686 blist_menu, NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3687 gaim_gtk_load_accels();
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3688 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3689 G_CALLBACK(gaim_gtk_save_accels_cb), NULL);
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3690 menu = gtk_item_factory_get_widget(gtkblist->ift, "<GaimMain>");
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3691 gtkblist->menutray = gaim_gtk_menu_tray_new();
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3692 gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray);
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3693 gtk_widget_show(gtkblist->menutray);
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3694 gtk_widget_show(menu);
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3695 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), menu, FALSE, FALSE, 0);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3696
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
3697 accountmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts"));
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
3698
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3699 /****************************** GtkTreeView **********************************/
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3700 sw = gtk_scrolled_window_new(NULL,NULL);
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3701 gtk_widget_show(sw);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3702 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3703 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3704
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3705 gtkblist->treemodel = gtk_tree_store_new(BLIST_COLUMNS,
11494
3314953511de [gaim-migrate @ 13738]
Tim Ringenbach <marv@pidgin.im>
parents: 11490
diff changeset
3706 GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN,
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
3707 G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3708
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3709 gtkblist->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtkblist->treemodel));
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3710 gtk_widget_show(gtkblist->treeview);
9176
7dc10a14c568 [gaim-migrate @ 9971]
Luke Schierer <lschiere@pidgin.im>
parents: 9113
diff changeset
3711 gtk_widget_set_name(gtkblist->treeview, "gaim_gtkblist_treeview");
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3712
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3713 /* Set up selection stuff */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3714 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3715 g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(gaim_gtk_blist_selection_changed), NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3716
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3717 /* Set up dnd */
7650
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7642
diff changeset
3718 gtk_tree_view_enable_model_drag_source(GTK_TREE_VIEW(gtkblist->treeview),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3719 GDK_BUTTON1_MASK, ste, 3,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3720 GDK_ACTION_COPY);
7650
6db061321ec4 [gaim-migrate @ 8293]
Mark Doliner <mark@kingant.net>
parents: 7642
diff changeset
3721 gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(gtkblist->treeview),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3722 dte, 5,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3723 GDK_ACTION_COPY | GDK_ACTION_MOVE);
7636
01c1b3ea70c6 [gaim-migrate @ 8278]
Sean Egan <seanegan@gmail.com>
parents: 7628
diff changeset
3724
10544
bc7352b57a99 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
3725 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-received", G_CALLBACK(gaim_gtk_blist_drag_data_rcv_cb), NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3726 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-get", G_CALLBACK(gaim_gtk_blist_drag_data_get_cb), NULL);
11059
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
3727 #ifdef _WIN32
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
3728 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-begin", G_CALLBACK(gaim_gtk_blist_drag_begin), NULL);
c86d423df757 [gaim-migrate @ 13012]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11038
diff changeset
3729 #endif
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3730
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
3731 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-motion", G_CALLBACK(gaim_gtk_blist_drag_motion_cb), NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3732
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3733 /* Tooltips */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3734 g_signal_connect(G_OBJECT(gtkblist->treeview), "motion-notify-event", G_CALLBACK(gaim_gtk_blist_motion_cb), NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3735 g_signal_connect(G_OBJECT(gtkblist->treeview), "leave-notify-event", G_CALLBACK(gaim_gtk_blist_leave_cb), NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3736
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3737 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(gtkblist->treeview), FALSE);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3738
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
3739 gtkblist->text_column = column = gtk_tree_view_column_new ();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3740
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3741 rend = gtk_cell_renderer_pixbuf_new();
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3742 gtk_tree_view_column_pack_start(column, rend, FALSE);
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3743 gtk_tree_view_column_set_attributes(column, rend,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3744 "pixbuf", STATUS_ICON_COLUMN,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3745 "visible", STATUS_ICON_VISIBLE_COLUMN,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3746 NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3747 g_object_set(rend, "xalign", 0.0, "ypad", 0, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3748
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
3749 gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3750 gtk_tree_view_column_pack_start (column, rend, TRUE);
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3751 gtk_tree_view_column_set_attributes(column, rend,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3752 "markup", NAME_COLUMN,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
3753 NULL);
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
3754 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3755 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
10285
810613c79589 [gaim-migrate @ 11456]
Sean Egan <seanegan@gmail.com>
parents: 10282
diff changeset
3756 #if GTK_CHECK_VERSION(2,6,0)
810613c79589 [gaim-migrate @ 11456]
Sean Egan <seanegan@gmail.com>
parents: 10282
diff changeset
3757 gtk_tree_view_column_set_expand (column, TRUE);
10501
4806967e093e [gaim-migrate @ 11793]
Sean Egan <seanegan@gmail.com>
parents: 10499
diff changeset
3758 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10285
810613c79589 [gaim-migrate @ 11456]
Sean Egan <seanegan@gmail.com>
parents: 10282
diff changeset
3759 #endif
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3760 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3761
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3762 rend = gtk_cell_renderer_text_new();
10351
7fcdd669eb49 [gaim-migrate @ 11566]
Sean Egan <seanegan@gmail.com>
parents: 10325
diff changeset
3763 gtkblist->idle_column = gtk_tree_view_column_new_with_attributes("Idle", rend, "markup", IDLE_COLUMN, NULL);
7fcdd669eb49 [gaim-migrate @ 11566]
Sean Egan <seanegan@gmail.com>
parents: 10325
diff changeset
3764 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->idle_column);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3765 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3766
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3767 rend = gtk_cell_renderer_pixbuf_new();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3768 gtkblist->buddy_icon_column = gtk_tree_view_column_new_with_attributes("Buddy Icon", rend, "pixbuf", BUDDY_ICON_COLUMN, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3769 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3770 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->buddy_icon_column);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3771
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3772 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3773 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3774 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-collapsed", G_CALLBACK(gtk_blist_row_collapsed_cb), NULL);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3775 g_signal_connect(G_OBJECT(gtkblist->treeview), "button-press-event", G_CALLBACK(gtk_blist_button_press_cb), NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3776 g_signal_connect(G_OBJECT(gtkblist->treeview), "key-press-event", G_CALLBACK(gtk_blist_key_press_cb), NULL);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8137
diff changeset
3777 g_signal_connect(G_OBJECT(gtkblist->treeview), "popup-menu", G_CALLBACK(gaim_gtk_blist_popup_menu_cb), NULL);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3778
5419
ab1cb8b5e42b [gaim-migrate @ 5798]
Mark Doliner <mark@kingant.net>
parents: 5398
diff changeset
3779 /* Enable CTRL+F searching */
ab1cb8b5e42b [gaim-migrate @ 5798]
Mark Doliner <mark@kingant.net>
parents: 5398
diff changeset
3780 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN);
10433
f7f06cb69d5e [gaim-migrate @ 11689]
Mark Doliner <mark@kingant.net>
parents: 10418
diff changeset
3781 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(gtkblist->treeview), _search_func, NULL, NULL);
5419
ab1cb8b5e42b [gaim-migrate @ 5798]
Mark Doliner <mark@kingant.net>
parents: 5398
diff changeset
3782
12583
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3783 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3784 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3785 gaim_gtk_blist_update_columns();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3786
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3787 /* Create an empty vbox used for showing connection errors */
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3788 gtkblist->error_buttons = gtk_vbox_new(FALSE, 0);
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3789 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->error_buttons, FALSE, FALSE, 0);
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3790
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
3791 /* Add the statusbox */
12583
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3792 gtkblist->statusbox = gtk_gaim_status_box_new();
12592
37160dd563fa [gaim-migrate @ 14922]
Richard Laager <rlaager@wiktel.com>
parents: 12589
diff changeset
3793 gtk_widget_set_name(gtkblist->statusbox, "gaim_gtkblist_statusbox");
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3794
12583
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3795 gtk_widget_show(gtkblist->statusbox);
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3796 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->statusbox, FALSE, TRUE, 0);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3797
10178
96a850ab30c8 [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
3798
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3799 /* set the Show Offline Buddies option. must be done
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3800 * after the treeview or faceprint gets mad. -Robot101
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3801 */
5427
04e1e40b99b0 [gaim-migrate @ 5806]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
3802 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))),
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3803 gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies"));
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3804
5427
04e1e40b99b0 [gaim-migrate @ 5806]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
3805 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Empty Groups"))),
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3806 gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups"));
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3807
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
3808 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Tools/Mute Sounds"))),
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
3809 gaim_prefs_get_bool("/gaim/gtk/sound/mute"));
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3810
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
3811 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Buddy Details"))),
11920
52f27ffe68a5 [gaim-migrate @ 14211]
Mark Doliner <mark@kingant.net>
parents: 11917
diff changeset
3812 gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons"));
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3813
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3814 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Idle Times"))),
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3815 gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time"));
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3816
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
3817 if(!strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none"))
11494
3314953511de [gaim-migrate @ 13738]
Tim Ringenbach <marv@pidgin.im>
parents: 11490
diff changeset
3818 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3819
10353
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
3820 /* Update some dynamic things */
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
3821 update_menu_bar(gtkblist);
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
3822 gaim_gtk_blist_update_plugin_actions();
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
3823 gaim_gtk_blist_update_sort_methods();
10353
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
3824
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3825 /* OK... let's show this bad boy. */
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
3826 gaim_gtk_blist_refresh(list);
12119
312efb43c49a [gaim-migrate @ 14419]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12117
diff changeset
3827 gaim_gtk_blist_restore_position();
312efb43c49a [gaim-migrate @ 14419]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12117
diff changeset
3828 gtk_widget_show_all(GTK_WIDGET(gtkblist->window));
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
3829 gaim_blist_set_visible(gaim_prefs_get_bool("/gaim/gtk/blist/list_visible"));
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3830
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3831 /* start the refresh timer */
10351
7fcdd669eb49 [gaim-migrate @ 11566]
Sean Egan <seanegan@gmail.com>
parents: 10325
diff changeset
3832 gtkblist->refresh_timer = g_timeout_add(30000, (GSourceFunc)gaim_gtk_blist_refresh_timer, list);
10353
fc7168f9ecb0 [gaim-migrate @ 11570]
Mark Doliner <mark@kingant.net>
parents: 10352
diff changeset
3833
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3834 handle = gaim_gtk_blist_get_handle();
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3835
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3836 /* things that affect how buddies are displayed */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3837 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons",
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3838 _prefs_change_redo_list, NULL);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3839 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time",
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3840 _prefs_change_redo_list, NULL);
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3841 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_empty_groups",
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3842 _prefs_change_redo_list, NULL);
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3843 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_offline_buddies",
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3844 _prefs_change_redo_list, NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3845
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3846 /* sorting */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3847 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/sort_type",
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3848 _prefs_change_sort_method, NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3849
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3850 /* things that affect what columns are displayed */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3851 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_buddy_icons",
12326
a0b0e0e95ed0 [gaim-migrate @ 14630]
Mark Doliner <mark@kingant.net>
parents: 12319
diff changeset
3852 show_buddy_icons_pref_cb, NULL);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3853 gaim_prefs_connect_callback(handle, "/gaim/gtk/blist/show_idle_time",
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
3854 show_buddy_icons_pref_cb, NULL);
8259
4f9f68ab8770 [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
3855
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
3856 /* menus */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3857 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/mute",
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3858 gaim_gtk_blist_mute_pref_cb, NULL);
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3859 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/method",
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3860 gaim_gtk_blist_sound_method_pref_cb, NULL);
10074
2e225cd35615 [gaim-migrate @ 11054]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10046
diff changeset
3861
8259
4f9f68ab8770 [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
3862 /* Setup some gaim signal handlers. */
12522
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3863 gaim_signal_connect(gaim_accounts_get_handle(), "account-enabled",
12583
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3864 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12070
e4666705944b [gaim-migrate @ 14365]
Tim Ringenbach <marv@pidgin.im>
parents: 12043
diff changeset
3865 gaim_signal_connect(gaim_accounts_get_handle(), "account-disabled",
12583
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3866 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12226
df0e16ecfb2a [gaim-migrate @ 14528]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12208
diff changeset
3867 gaim_signal_connect(gaim_accounts_get_handle(), "account-removed",
12583
301e9f0841d7 [gaim-migrate @ 14911]
Sean Egan <seanegan@gmail.com>
parents: 12576
diff changeset
3868 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12766
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3869 gaim_signal_connect(gaim_accounts_get_handle(), "account-status-changed",
42af52cb61f7 [gaim-migrate @ 15113]
Mark Doliner <mark@kingant.net>
parents: 12744
diff changeset
3870 gtkblist, GAIM_CALLBACK(account_status_changed), gtkblist);
12522
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3871
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3872 gaim_signal_connect(gaim_gtk_account_get_handle(), "account-modified",
560ddc8d26f3 [gaim-migrate @ 14834]
Richard Laager <rlaager@wiktel.com>
parents: 12519
diff changeset
3873 gtkblist, GAIM_CALLBACK(account_modified), gtkblist);
12070
e4666705944b [gaim-migrate @ 14365]
Tim Ringenbach <marv@pidgin.im>
parents: 12043
diff changeset
3874
8937
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
3875 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
3876 gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
3877 gaim_signal_connect(gaim_connections_get_handle(), "signed-off",
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
3878 gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
3879
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3880 gaim_signal_connect(gaim_plugins_get_handle(), "plugin-load",
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3881 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL);
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3882 gaim_signal_connect(gaim_plugins_get_handle(), "plugin-unload",
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3883 gtkblist, GAIM_CALLBACK(plugin_changed_cb), NULL);
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
3884
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3885 gaim_signal_connect(gaim_conversations_get_handle(), "conversation-updated",
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3886 gtkblist, GAIM_CALLBACK(conversation_updated_cb),
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3887 gtkblist);
12208
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3888 gaim_signal_connect(gaim_conversations_get_handle(), "deleting-conversation",
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3889 gtkblist, GAIM_CALLBACK(conversation_deleting_cb),
ddcd92a32eeb [gaim-migrate @ 14510]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12191
diff changeset
3890 gtkblist);
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12115
diff changeset
3891
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
3892 /* emit our created signal */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
3893 gaim_signal_emit(handle, "gtkblist-created", list);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3894 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3895
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3896 static void redo_buddy_list(GaimBuddyList *list, gboolean remove)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3897 {
12112
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3898 GaimBlistNode *node = list->root;
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3899
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3900 while (node)
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3901 {
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3902 if (!GAIM_BLIST_NODE_IS_GROUP(node) && remove)
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3903 gaim_gtk_blist_hide_node(list, node);
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3904
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3905 gaim_gtk_blist_update(list, node);
875f59f9c0bb [gaim-migrate @ 14412]
Sean Egan <seanegan@gmail.com>
parents: 12080
diff changeset
3906 node = gaim_blist_node_next(node, FALSE);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3907 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3908 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3909
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3910 void gaim_gtk_blist_refresh(GaimBuddyList *list)
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
3911 {
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
3912 redo_buddy_list(list, FALSE);
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
3913 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
3914
5297
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3915 void
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3916 gaim_gtk_blist_update_refresh_timeout()
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3917 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3918 GaimBuddyList *blist;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3919 GaimGtkBuddyList *gtkblist;
5297
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3920
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3921 blist = gaim_get_blist();
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3922 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3923
10351
7fcdd669eb49 [gaim-migrate @ 11566]
Sean Egan <seanegan@gmail.com>
parents: 10325
diff changeset
3924 gtkblist->refresh_timer = g_timeout_add(30000,(GSourceFunc)gaim_gtk_blist_refresh_timer, blist);
5297
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3925 }
d4c9c5491812 [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
3926
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3927 static gboolean get_iter_from_node(GaimBlistNode *node, GtkTreeIter *iter) {
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3928 struct _gaim_gtk_blist_node *gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3929 GtkTreePath *path;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3930
5263
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3931 if (!gtknode) {
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3932 return FALSE;
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3933 }
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3934
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3935 if (!gtkblist) {
10006
9baedaca25c7 [gaim-migrate @ 10923]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
3936 gaim_debug_error("gtkblist", "get_iter_from_node was called, but we don't seem to have a blist\n");
5263
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3937 return FALSE;
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3938 }
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3939
b476a30ef4e3 [gaim-migrate @ 5635]
Luke Schierer <lschiere@pidgin.im>
parents: 5260
diff changeset
3940 if (!gtknode->row)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3941 return FALSE;
11494
3314953511de [gaim-migrate @ 13738]
Tim Ringenbach <marv@pidgin.im>
parents: 11490
diff changeset
3942
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3943
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3944 if ((path = gtk_tree_row_reference_get_path(gtknode->row)) == NULL)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3945 return FALSE;
11016
6417b2f5de4e [gaim-migrate @ 12885]
Sean Egan <seanegan@gmail.com>
parents: 10992
diff changeset
3946
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3947 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), iter, path)) {
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3948 gtk_tree_path_free(path);
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3949 return FALSE;
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3950 }
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3951 gtk_tree_path_free(path);
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
3952 return TRUE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3953 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3954
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3955 static void gaim_gtk_blist_remove(GaimBuddyList *list, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3956 {
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3957 struct _gaim_gtk_blist_node *gtknode = node->ui_data;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3958
10222
224c9f244a3a [gaim-migrate @ 11351]
Sean Egan <seanegan@gmail.com>
parents: 10209
diff changeset
3959 gaim_request_close_with_handle(node);
224c9f244a3a [gaim-migrate @ 11351]
Sean Egan <seanegan@gmail.com>
parents: 10209
diff changeset
3960
5260
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
3961 gaim_gtk_blist_hide_node(list, node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3962
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3963 if(node->parent)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3964 gaim_gtk_blist_update(list, node->parent);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
3965
10504
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
3966 /* There's something I don't understand here - Ethan */
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
3967 /* Ethan said that back in 2003, but this g_free has been left commented
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
3968 * out ever since. I can't find any reason at all why this is bad and
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
3969 * valgrind found several reasons why it's good. If this causes problems
1a97d5e88d12 [gaim-migrate @ 11796]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10501
diff changeset
3970 * comment it out again. Stu */
10510
1044c0930e03 [gaim-migrate @ 11808]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10504
diff changeset
3971 /* Of course it still causes problems - this breaks dragging buddies into
10515
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
3972 * contacts, the dragged buddy mysteriously 'disappears'. Stu. */
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
3973 /* I think it's fixed now. Stu. */
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3974
11915
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3975 if(gtknode) {
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3976 if(gtknode->recent_signonoff_timer > 0)
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3977 gaim_timeout_remove(gtknode->recent_signonoff_timer);
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3978
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3979 g_free(node->ui_data);
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3980 node->ui_data = NULL;
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
3981 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3982 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3983
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3984 static gboolean do_selection_changed(GaimBlistNode *new_selection)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3985 {
5254
d1e1ca490894 [gaim-migrate @ 5626]
Luke Schierer <lschiere@pidgin.im>
parents: 5241
diff changeset
3986 GaimBlistNode *old_selection = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3987
5254
d1e1ca490894 [gaim-migrate @ 5626]
Luke Schierer <lschiere@pidgin.im>
parents: 5241
diff changeset
3988 /* test for gtkblist because crazy timeout means we can be called after the blist is gone */
d1e1ca490894 [gaim-migrate @ 5626]
Luke Schierer <lschiere@pidgin.im>
parents: 5241
diff changeset
3989 if (gtkblist && new_selection != gtkblist->selected_node) {
d1e1ca490894 [gaim-migrate @ 5626]
Luke Schierer <lschiere@pidgin.im>
parents: 5241
diff changeset
3990 old_selection = gtkblist->selected_node;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3991 gtkblist->selected_node = new_selection;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3992 if(new_selection)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3993 gaim_gtk_blist_update(NULL, new_selection);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3994 if(old_selection)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3995 gaim_gtk_blist_update(NULL, old_selection);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3996 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3997
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3998 return FALSE;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3999 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4000
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4001 static void gaim_gtk_blist_selection_changed(GtkTreeSelection *selection, gpointer data)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4002 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4003 GaimBlistNode *new_selection = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4004 GtkTreeIter iter;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4005
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4006 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4007 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4008 NODE_COLUMN, &new_selection, -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4009 }
5254
d1e1ca490894 [gaim-migrate @ 5626]
Luke Schierer <lschiere@pidgin.im>
parents: 5241
diff changeset
4010
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4011 /* we set this up as a timeout, otherwise the blist flickers */
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4012 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4013 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4014
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4015 static gboolean insert_node(GaimBuddyList *list, GaimBlistNode *node, GtkTreeIter *iter)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4016 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4017 GtkTreeIter parent_iter, cur, *curptr = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4018 struct _gaim_gtk_blist_node *gtknode = node->ui_data;
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
4019 GtkTreePath *newpath;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4020
10515
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4021 if(!iter)
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4022 return FALSE;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4023
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4024 if(node->parent && !get_iter_from_node(node->parent, &parent_iter))
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4025 return FALSE;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4026
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4027 if(get_iter_from_node(node, &cur))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4028 curptr = &cur;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4029
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4030 if(GAIM_BLIST_NODE_IS_CONTACT(node) || GAIM_BLIST_NODE_IS_CHAT(node)) {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
4031 current_sort_method->func(node, list, parent_iter, curptr, iter);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4032 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
4033 sort_method_none(node, list, parent_iter, curptr, iter);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4034 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4035
10515
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4036 if(gtknode != NULL) {
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4037 gtk_tree_row_reference_free(gtknode->row);
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4038 } else {
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4039 gaim_gtk_blist_new_node(node);
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4040 gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4041 }
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4042
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4043 newpath = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4044 iter);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4045 gtknode->row =
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4046 gtk_tree_row_reference_new(GTK_TREE_MODEL(gtkblist->treemodel),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4047 newpath);
11494
3314953511de [gaim-migrate @ 13738]
Tim Ringenbach <marv@pidgin.im>
parents: 11490
diff changeset
4048
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
4049 gtk_tree_path_free(newpath);
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
4050
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4051 gtk_tree_store_set(gtkblist->treemodel, iter,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4052 NODE_COLUMN, node,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4053 -1);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4054
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4055 if(node->parent) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4056 GtkTreePath *expand = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4057 struct _gaim_gtk_blist_node *gtkparentnode = node->parent->ui_data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4058
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4059 if(GAIM_BLIST_NODE_IS_GROUP(node->parent)) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
4060 if(!gaim_blist_node_get_bool(node->parent, "collapsed"))
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4061 expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4062 } else if(GAIM_BLIST_NODE_IS_CONTACT(node->parent) &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4063 gtkparentnode->contact_expanded) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4064 expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4065 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4066 if(expand) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
4067 gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), expand, FALSE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4068 gtk_tree_path_free(expand);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4069 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4070 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4071
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4072 return TRUE;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4073 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4074
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4075 static void gaim_gtk_blist_update_group(GaimBuddyList *list, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4076 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4077 GaimGroup *group;
8203
72311ba4ad8b [gaim-migrate @ 8926]
Mark Doliner <mark@kingant.net>
parents: 8198
diff changeset
4078 int count;
12341
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4079 gboolean show = FALSE;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4080
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4081 g_return_if_fail(GAIM_BLIST_NODE_IS_GROUP(node));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4082
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4083 group = (GaimGroup*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4084
8203
72311ba4ad8b [gaim-migrate @ 8926]
Mark Doliner <mark@kingant.net>
parents: 8198
diff changeset
4085 if(gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies"))
72311ba4ad8b [gaim-migrate @ 8926]
Mark Doliner <mark@kingant.net>
parents: 8198
diff changeset
4086 count = gaim_blist_get_group_size(group, FALSE);
72311ba4ad8b [gaim-migrate @ 8926]
Mark Doliner <mark@kingant.net>
parents: 8198
diff changeset
4087 else
72311ba4ad8b [gaim-migrate @ 8926]
Mark Doliner <mark@kingant.net>
parents: 8198
diff changeset
4088 count = gaim_blist_get_group_online_count(group);
13195
c242836ff793 [gaim-migrate @ 15558]
Mark Doliner <mark@kingant.net>
parents: 13161
diff changeset
4089
12341
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4090 if (count > 0 || gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups"))
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4091 show = TRUE;
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4092 else {
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4093 GaimBlistNode *n;
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4094 n = node->child;
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4095 while (n && !GAIM_BLIST_NODE_IS_GROUP(n)) {
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4096 if (GAIM_BLIST_NODE_IS_BUDDY(n)) {
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4097 if (buddy_is_displayable((GaimBuddy*)n)) {
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4098 show = TRUE;
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4099 break;
13195
c242836ff793 [gaim-migrate @ 15558]
Mark Doliner <mark@kingant.net>
parents: 13161
diff changeset
4100 }
12341
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4101 }
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4102 n = gaim_blist_node_next(n, FALSE);
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4103 }
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4104 }
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4105
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4106 if (show) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4107 char *mark, *esc;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4108 GtkTreeIter iter;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4109
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4110 if(!insert_node(list, node, &iter))
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4111 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4112
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4113 esc = g_markup_escape_text(group->name, -1);
8945
6d7b403b11bb [gaim-migrate @ 9717]
Mark Doliner <mark@kingant.net>
parents: 8940
diff changeset
4114 mark = g_strdup_printf("<span weight='bold'>%s</span> (%d/%d)",
6d7b403b11bb [gaim-migrate @ 9717]
Mark Doliner <mark@kingant.net>
parents: 8940
diff changeset
4115 esc, gaim_blist_get_group_online_count(group),
6d7b403b11bb [gaim-migrate @ 9717]
Mark Doliner <mark@kingant.net>
parents: 8940
diff changeset
4116 gaim_blist_get_group_size(group, FALSE));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4117 g_free(esc);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4118
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4119 gtk_tree_store_set(gtkblist->treemodel, &iter,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4120 STATUS_ICON_COLUMN, NULL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4121 STATUS_ICON_VISIBLE_COLUMN, FALSE,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4122 NAME_COLUMN, mark,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4123 NODE_COLUMN, node,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4124 -1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4125 g_free(mark);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4126 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4127 gaim_gtk_blist_hide_node(list, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4128 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4129 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4130
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4131 static void buddy_node(GaimBuddy *buddy, GtkTreeIter *iter, GaimBlistNode *node)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4132 {
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4133 GaimPresence *presence;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4134 GdkPixbuf *status, *avatar;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4135 char *mark;
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
4136 char *idle = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4137 gboolean selected = (gtkblist->selected_node == node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4138
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4139 presence = gaim_buddy_get_presence(buddy);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4140
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4141 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)buddy,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4142 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4143 ? GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4144
10482
1ac8f10ce68d [gaim-migrate @ 11772]
Sean Egan <seanegan@gmail.com>
parents: 10477
diff changeset
4145 avatar = gaim_gtk_blist_get_buddy_icon((GaimBlistNode *)buddy, TRUE, TRUE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4146 mark = gaim_gtk_blist_get_name_markup(buddy, selected);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4147
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
4148 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") &&
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
4149 gaim_presence_is_idle(presence))
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4150 {
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4151 time_t idle_secs = gaim_presence_get_idle_time(presence);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4152
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4153 if (idle_secs > 0)
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4154 {
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4155 time_t t;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4156 int ihrs, imin;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4157 time(&t);
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4158 ihrs = (t - idle_secs) / 3600;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4159 imin = ((t - idle_secs) / 60) % 60;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4160
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4161 if (ihrs > 0)
12357
8dd086d0f2b3 [gaim-migrate @ 14661]
Richard Laager <rlaager@wiktel.com>
parents: 12348
diff changeset
4162 idle = g_strdup_printf("%d:%02d", ihrs, imin);
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4163 else
12357
8dd086d0f2b3 [gaim-migrate @ 14661]
Richard Laager <rlaager@wiktel.com>
parents: 12348
diff changeset
4164 idle = g_strdup_printf("%d", imin);
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4165 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4166 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4167
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
4168 if (gaim_presence_is_idle(presence))
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4169 {
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
4170 if (idle && !selected) {
10118
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
4171 char *i2 = g_strdup_printf("<span color='%s'>%s</span>",
ab8e8069b71e [gaim-migrate @ 11155]
Sean Egan <seanegan@gmail.com>
parents: 10087
diff changeset
4172 dim_grey(), idle);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4173 g_free(idle);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4174 idle = i2;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4175 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4176 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4177
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4178 gtk_tree_store_set(gtkblist->treemodel, iter,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4179 STATUS_ICON_COLUMN, status,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4180 STATUS_ICON_VISIBLE_COLUMN, TRUE,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4181 NAME_COLUMN, mark,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4182 IDLE_COLUMN, idle,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4183 BUDDY_ICON_COLUMN, avatar,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4184 -1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4185
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4186 g_free(mark);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
4187 g_free(idle);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4188 if(status)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4189 g_object_unref(status);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4190 if(avatar)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4191 g_object_unref(avatar);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4192 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4193
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
4194
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4195 static void gaim_gtk_blist_update_contact(GaimBuddyList *list, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4196 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4197 GaimContact *contact;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4198 GaimBuddy *buddy;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4199 struct _gaim_gtk_blist_node *gtknode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4200
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4201 g_return_if_fail(GAIM_BLIST_NODE_IS_CONTACT(node));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4202
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4203 /* First things first, update the group */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4204 gaim_gtk_blist_update_group(list, node->parent);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4205
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4206 contact = (GaimContact*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4207 buddy = gaim_contact_get_priority_buddy(contact);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4208
11890
fdb78734e2ae [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
4209 if (buddy_is_displayable(buddy))
10006
9baedaca25c7 [gaim-migrate @ 10923]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
4210 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4211 GtkTreeIter iter;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4212
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4213 if(!insert_node(list, node, &iter))
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4214 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4215
10515
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4216 gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
ef9b6ef0c858 [gaim-migrate @ 11816]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10510
diff changeset
4217
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4218 if(gtknode->contact_expanded) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4219 GdkPixbuf *status;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4220 char *mark;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4221
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4222 status = gaim_gtk_blist_get_status_icon(node,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4223 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ?
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4224 GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4225
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4226 mark = g_markup_escape_text(gaim_contact_get_alias(contact), -1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4227
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4228 gtk_tree_store_set(gtkblist->treemodel, &iter,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4229 STATUS_ICON_COLUMN, status,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4230 STATUS_ICON_VISIBLE_COLUMN, TRUE,
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4231 NAME_COLUMN, mark,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4232 IDLE_COLUMN, NULL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4233 BUDDY_ICON_COLUMN, NULL,
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4234 -1);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4235 g_free(mark);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4236 if(status)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4237 g_object_unref(status);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4238 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4239 buddy_node(buddy, &iter, node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4240 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4241 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4242 gaim_gtk_blist_hide_node(list, node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4243 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4244 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4245
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4246 static void gaim_gtk_blist_update_buddy(GaimBuddyList *list, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4247 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4248 GaimContact *contact;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4249 GaimBuddy *buddy;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4250 struct _gaim_gtk_blist_node *gtkparentnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4251
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4252 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4253
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4254 buddy = (GaimBuddy*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4255 contact = (GaimContact*)node->parent;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4256
11624
45d54425dc65 [gaim-migrate @ 13899]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11577
diff changeset
4257 if (contact == NULL)
45d54425dc65 [gaim-migrate @ 13899]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11577
diff changeset
4258 return;
45d54425dc65 [gaim-migrate @ 13899]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11577
diff changeset
4259
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4260 /* First things first, update the contact */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4261 gaim_gtk_blist_update_contact(list, node->parent);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4262
10918
893921a6cc6e [gaim-migrate @ 12681]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10884
diff changeset
4263 gtkparentnode = (struct _gaim_gtk_blist_node *)node->parent->ui_data;
893921a6cc6e [gaim-migrate @ 12681]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10884
diff changeset
4264
12341
eea31c8cc9f7 [gaim-migrate @ 14645]
Mark Doliner <mark@kingant.net>
parents: 12338
diff changeset
4265 if (gtkparentnode->contact_expanded && buddy_is_displayable(buddy))
10006
9baedaca25c7 [gaim-migrate @ 10923]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
4266 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4267 GtkTreeIter iter;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4268
10006
9baedaca25c7 [gaim-migrate @ 10923]
Mark Doliner <mark@kingant.net>
parents: 9993
diff changeset
4269 if (!insert_node(list, node, &iter))
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4270 return;
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4271
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4272 buddy_node(buddy, &iter, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4273
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4274 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4275 gaim_gtk_blist_hide_node(list, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4276 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4277
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4278 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4279
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4280 static void gaim_gtk_blist_update_chat(GaimBuddyList *list, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4281 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4282 GaimChat *chat;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4283
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4284 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT(node));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4285
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4286 /* First things first, update the group */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4287 gaim_gtk_blist_update_group(list, node->parent);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4288
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4289 chat = (GaimChat*)node;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4290
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4291 if(gaim_account_is_connected(chat->account)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4292 GtkTreeIter iter;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4293 GdkPixbuf *status;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4294 char *mark;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4295
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4296 if(!insert_node(list, node, &iter))
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4297 return;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4298
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4299 status = gaim_gtk_blist_get_status_icon(node,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4300 (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ?
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4301 GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4302
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4303 mark = g_markup_escape_text(gaim_chat_get_name(chat), -1);
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4304
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4305 gtk_tree_store_set(gtkblist->treemodel, &iter,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4306 STATUS_ICON_COLUMN, status,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4307 STATUS_ICON_VISIBLE_COLUMN, TRUE,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4308 NAME_COLUMN, mark,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4309 -1);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4310
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 g_free(mark);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4312 if(status)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4313 g_object_unref(status);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4314 } else {
5260
5331d5f11089 [gaim-migrate @ 5632]
Luke Schierer <lschiere@pidgin.im>
parents: 5256
diff changeset
4315 gaim_gtk_blist_hide_node(list, node);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4316 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4317 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4318
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4319 static void gaim_gtk_blist_update(GaimBuddyList *list, GaimBlistNode *node)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4320 {
12797
eda1572c788b [gaim-migrate @ 15144]
Richard Laager <rlaager@wiktel.com>
parents: 12766
diff changeset
4321 if(!gtkblist || !node)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4322 return;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4323
13195
c242836ff793 [gaim-migrate @ 15558]
Mark Doliner <mark@kingant.net>
parents: 13161
diff changeset
4324 if (node->ui_data == NULL)
c242836ff793 [gaim-migrate @ 15558]
Mark Doliner <mark@kingant.net>
parents: 13161
diff changeset
4325 gaim_gtk_blist_new_node(node);
c242836ff793 [gaim-migrate @ 15558]
Mark Doliner <mark@kingant.net>
parents: 13161
diff changeset
4326
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4327 switch(node->type) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4328 case GAIM_BLIST_GROUP_NODE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4329 gaim_gtk_blist_update_group(list, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4330 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4331 case GAIM_BLIST_CONTACT_NODE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4332 gaim_gtk_blist_update_contact(list, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4333 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4334 case GAIM_BLIST_BUDDY_NODE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4335 gaim_gtk_blist_update_buddy(list, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4336 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4337 case GAIM_BLIST_CHAT_NODE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4338 gaim_gtk_blist_update_chat(list, node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4339 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4340 case GAIM_BLIST_OTHER_NODE:
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4341 return;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4342 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
4343
13146
a3c1112bb190 [gaim-migrate @ 15509]
Richard Laager <rlaager@wiktel.com>
parents: 13140
diff changeset
4344 #if !GTK_CHECK_VERSION(2,6,0)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4345 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview));
13146
a3c1112bb190 [gaim-migrate @ 15509]
Richard Laager <rlaager@wiktel.com>
parents: 13140
diff changeset
4346 #endif
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4347 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4348
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4349
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4350 static void gaim_gtk_blist_destroy(GaimBuddyList *list)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4351 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4352 if (!gtkblist)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4353 return;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4354
8937
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
4355 gaim_signal_disconnect(gaim_connections_get_handle(), "signed-on",
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
4356 gtkblist, GAIM_CALLBACK(sign_on_off_cb));
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
4357 gaim_signal_disconnect(gaim_connections_get_handle(), "signed-off",
fd1a4ff1f7ed [gaim-migrate @ 9707]
Mark Doliner <mark@kingant.net>
parents: 8911
diff changeset
4358 gtkblist, GAIM_CALLBACK(sign_on_off_cb));
8259
4f9f68ab8770 [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
4359
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4360 gtk_widget_destroy(gtkblist->window);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4361
8254
8a9a6eb3ded0 [gaim-migrate @ 8977]
Mark Doliner <mark@kingant.net>
parents: 8252
diff changeset
4362 gaim_gtk_blist_tooltip_destroy();
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4363
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4364 if (gtkblist->refresh_timer)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4365 g_source_remove(gtkblist->refresh_timer);
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4366 if (gtkblist->timeout)
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4367 g_source_remove(gtkblist->timeout);
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
4368 if (gtkblist->drag_timeout)
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
4369 g_source_remove(gtkblist->drag_timeout);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4370
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
4371 g_hash_table_destroy(gtkblist->connection_errors);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4372 gtkblist->refresh_timer = 0;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4373 gtkblist->timeout = 0;
10354
0c985021a1d8 [gaim-migrate @ 11571]
Sean Egan <seanegan@gmail.com>
parents: 10353
diff changeset
4374 gtkblist->drag_timeout = 0;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4375 gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4376 gtkblist->treemodel = NULL;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4377 gtkblist->idle_column = NULL;
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
4378 gtkblist->buddy_icon_column = NULL;
5427
04e1e40b99b0 [gaim-migrate @ 5806]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
4379 g_object_unref(G_OBJECT(gtkblist->ift));
13015
2d71d4081e06 [gaim-migrate @ 15368]
Mark Doliner <mark@kingant.net>
parents: 13001
diff changeset
4380 g_free(gtkblist);
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
4381 accountmenu = NULL;
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4382 gtkblist = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4383
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10079
diff changeset
4384 gaim_prefs_disconnect_by_handle(gaim_gtk_blist_get_handle());
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4385 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4386
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4387 static void gaim_gtk_blist_set_visible(GaimBuddyList *list, gboolean show)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4388 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4389 if (!(gtkblist && gtkblist->window))
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4390 return;
10325
1657438d537b [gaim-migrate @ 11532]
Mark Doliner <mark@kingant.net>
parents: 10320
diff changeset
4391
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4392 if (show) {
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4393 if(!GAIM_WINDOW_ICONIFIED(gtkblist->window) && !GTK_WIDGET_VISIBLE(gtkblist->window))
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4394 gaim_signal_emit(gaim_gtk_blist_get_handle(), "gtkblist-unhiding", gtkblist);
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4395 gaim_gtk_blist_restore_position();
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4396 gtk_window_present(GTK_WINDOW(gtkblist->window));
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4397 } else {
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4398 if(visibility_manager_count) {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4399 gaim_signal_emit(gaim_gtk_blist_get_handle(), "gtkblist-hiding", gtkblist);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4400 gtk_widget_hide(gtkblist->window);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4401 } else {
12479
53e2dc07d9e2 [gaim-migrate @ 14790]
Richard Laager <rlaager@wiktel.com>
parents: 12478
diff changeset
4402 if (!GTK_WIDGET_VISIBLE(gtkblist->window))
53e2dc07d9e2 [gaim-migrate @ 14790]
Richard Laager <rlaager@wiktel.com>
parents: 12478
diff changeset
4403 gtk_widget_show(gtkblist->window);
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4404 gtk_window_iconify(GTK_WINDOW(gtkblist->window));
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
4405 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4406 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4407 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4408
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4409 static GList *
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4410 groups_tree(void)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4411 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4412 GList *tmp = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4413 char *tmp2;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4414 GaimGroup *g;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4415 GaimBlistNode *gnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4416
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4417 if (gaim_get_blist()->root == NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4418 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4419 tmp2 = g_strdup(_("Buddies"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4420 tmp = g_list_append(tmp, tmp2);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4421 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4422 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4423 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4424 for (gnode = gaim_get_blist()->root;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4425 gnode != NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4426 gnode = gnode->next)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4427 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4428 if (GAIM_BLIST_NODE_IS_GROUP(gnode))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4429 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4430 g = (GaimGroup *)gnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4431 tmp2 = g->name;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4432 tmp = g_list_append(tmp, tmp2);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4433 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4434 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4435 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4436
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4437 return tmp;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4438 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4439
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4440 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4441 add_buddy_select_account_cb(GObject *w, GaimAccount *account,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4442 GaimGtkAddBuddyData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4443 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4444 /* Save our account */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4445 data->account = account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4446 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4447
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4448 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4449 destroy_add_buddy_dialog_cb(GtkWidget *win, GaimGtkAddBuddyData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4450 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4451 g_free(data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4452 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4453
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4454 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4455 add_buddy_cb(GtkWidget *w, int resp, GaimGtkAddBuddyData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4456 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4457 const char *grp, *who, *whoalias;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4458 GaimConversation *c;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4459 GaimBuddy *b;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4460 GaimGroup *g;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4461
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4462 if (resp == GTK_RESPONSE_OK)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4463 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4464 who = gtk_entry_get_text(GTK_ENTRY(data->entry));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4465 grp = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4466 whoalias = gtk_entry_get_text(GTK_ENTRY(data->entry_for_alias));
9658
0b570eec4eca [gaim-migrate @ 10506]
Mark Doliner <mark@kingant.net>
parents: 9646
diff changeset
4467 if (*whoalias == '\0')
0b570eec4eca [gaim-migrate @ 10506]
Mark Doliner <mark@kingant.net>
parents: 9646
diff changeset
4468 whoalias = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4469
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4470 if ((g = gaim_find_group(grp)) == NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4471 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4472 g = gaim_group_new(grp);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4473 gaim_blist_add_group(g, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4474 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4475
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4476 b = gaim_buddy_new(data->account, who, whoalias);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4477 gaim_blist_add_buddy(b, NULL, g, NULL);
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4478 gaim_account_add_buddy(data->account, b);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4479
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
4480 /*
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
4481 * XXX
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4482 * It really seems like it would be better if the call to
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4483 * gaim_account_add_buddy() and gaim_conversation_update() were done in
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4484 * blist.c, possibly in the gaim_blist_add_buddy() function. Maybe
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4485 * gaim_account_add_buddy() should be renamed to
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4486 * gaim_blist_add_new_buddy() or something, and have it call
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
4487 * gaim_blist_add_buddy() after it creates it. --Mark
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
4488 *
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
4489 * No that's not good. blist.c should only deal with adding nodes to the
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4490 * local list. We need a new, non-gtk file that calls both
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4491 * gaim_account_add_buddy and gaim_blist_add_buddy().
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11638
diff changeset
4492 * Or something. --Mark
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
4493 */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7879
diff changeset
4494
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11258
diff changeset
4495 c = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, who, data->account);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4496 if (c != NULL) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4497 gaim_buddy_icon_update(gaim_conv_im_get_icon(GAIM_CONV_IM(c)));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4498 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4499 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4500
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4501 gtk_widget_destroy(data->window);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4502 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4503
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4504 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4505 gaim_gtk_blist_request_add_buddy(GaimAccount *account, const char *username,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4506 const char *group, const char *alias)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4507 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4508 GtkWidget *table;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4509 GtkWidget *label;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4510 GtkWidget *hbox;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4511 GtkWidget *vbox;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4512 GtkWidget *img;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4513 GaimGtkBuddyList *gtkblist;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4514 GaimGtkAddBuddyData *data = g_new0(GaimGtkAddBuddyData, 1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4515
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4516 data->account =
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4517 (account != NULL
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4518 ? account
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4519 : gaim_connection_get_account(gaim_connections_get_all()->data));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4520
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4521 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4522 GTK_ICON_SIZE_DIALOG);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4523
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4524 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4525
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4526 data->window = gtk_dialog_new_with_buttons(_("Add Buddy"),
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4527 NULL, GTK_DIALOG_NO_SEPARATOR,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4528 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4529 GTK_STOCK_ADD, GTK_RESPONSE_OK,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4530 NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4531
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4532 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4533 gtk_container_set_border_width(GTK_CONTAINER(data->window), GAIM_HIG_BOX_SPACE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4534 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4535 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BORDER);
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4536 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4537 gtk_window_set_role(GTK_WINDOW(data->window), "add_buddy");
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4538 gtk_window_set_type_hint(GTK_WINDOW(data->window),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
4539 GDK_WINDOW_TYPE_HINT_DIALOG);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4540
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4541 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4542 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4543 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4544 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4545
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4546 vbox = gtk_vbox_new(FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4547 gtk_container_add(GTK_CONTAINER(hbox), vbox);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4548
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4549 label = gtk_label_new(
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4550 _("Please enter the screen name of the person you would like "
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4551 "to add to your buddy list. You may optionally enter an alias, "
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4552 "or nickname, for the buddy. The alias will be displayed in "
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4553 "place of the screen name whenever possible.\n"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4554
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4555 gtk_widget_set_size_request(GTK_WIDGET(label), 400, -1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4556 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4557 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4558 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4559
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4560 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4561 gtk_container_add(GTK_CONTAINER(vbox), hbox);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4562
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4563 g_signal_connect(G_OBJECT(data->window), "destroy",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4564 G_CALLBACK(destroy_add_buddy_dialog_cb), data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4565
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4566 table = gtk_table_new(4, 2, FALSE);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4567 gtk_table_set_row_spacings(GTK_TABLE(table), 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4568 gtk_table_set_col_spacings(GTK_TABLE(table), 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4569 gtk_container_set_border_width(GTK_CONTAINER(table), 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4570 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4571
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13542
diff changeset
4572 label = gtk_label_new(_("Screen name:"));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4573 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4574 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4575
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4576 data->entry = gtk_entry_new();
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4577 gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 0, 1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4578 gtk_widget_grab_focus(data->entry);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4579
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4580 if (username != NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4581 gtk_entry_set_text(GTK_ENTRY(data->entry), username);
12337
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4582 else
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4583 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window),
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4584 GTK_RESPONSE_OK, FALSE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4585
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4586 gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE);
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4587 gaim_set_accessible_label (data->entry, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4588
12337
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4589 g_signal_connect(G_OBJECT(data->entry), "changed",
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4590 G_CALLBACK(gaim_gtk_set_sensitive_if_input),
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4591 data->window);
610327016c4a [gaim-migrate @ 14641]
Mark Doliner <mark@kingant.net>
parents: 12334
diff changeset
4592
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4593 label = gtk_label_new(_("Alias:"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4594 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4595 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4596
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4597 data->entry_for_alias = gtk_entry_new();
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4598 gtk_table_attach_defaults(GTK_TABLE(table),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4599 data->entry_for_alias, 1, 2, 1, 2);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4600
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4601 if (alias != NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4602 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4603
10734
8b2c81d9b271 [gaim-migrate @ 12336]
Luke Schierer <lschiere@pidgin.im>
parents: 10694
diff changeset
4604 if (username != NULL)
8b2c81d9b271 [gaim-migrate @ 12336]
Luke Schierer <lschiere@pidgin.im>
parents: 10694
diff changeset
4605 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias));
8b2c81d9b271 [gaim-migrate @ 12336]
Luke Schierer <lschiere@pidgin.im>
parents: 10694
diff changeset
4606
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4607 gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE);
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4608 gaim_set_accessible_label (data->entry_for_alias, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4609
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4610 label = gtk_label_new(_("Group:"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4611 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4612 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4613
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4614 data->combo = gtk_combo_new();
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4615 gtk_combo_set_popdown_strings(GTK_COMBO(data->combo), groups_tree());
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4616 gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 2, 3);
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4617 gaim_set_accessible_label (data->combo, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4618
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4619 /* Set up stuff for the account box */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4620 label = gtk_label_new(_("Account:"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4621 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4622 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4623
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4624 data->account_box = gaim_gtk_account_option_menu_new(account, FALSE,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4625 G_CALLBACK(add_buddy_select_account_cb), NULL, data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4626
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4627 gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 1, 2, 3, 4);
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4628 gaim_set_accessible_label (data->account_box, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4629 /* End of account box */
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4630
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4631 g_signal_connect(G_OBJECT(data->window), "response",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4632 G_CALLBACK(add_buddy_cb), data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4633
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4634 gtk_widget_show_all(data->window);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4635
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4636 if (group != NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4637 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry), group);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4638 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4639
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4640 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4641 add_chat_cb(GtkWidget *w, GaimGtkAddChatData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4642 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4643 GHashTable *components;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4644 GList *tmp;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4645 GaimChat *chat;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4646 GaimGroup *group;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4647 const char *group_name;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4648 const char *value;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4649
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4650 components = g_hash_table_new_full(g_str_hash, g_str_equal,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4651 g_free, g_free);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4652
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4653 for (tmp = data->entries; tmp; tmp = tmp->next)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4654 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4655 if (g_object_get_data(tmp->data, "is_spin"))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4656 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4657 g_hash_table_replace(components,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4658 g_strdup(g_object_get_data(tmp->data, "identifier")),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4659 g_strdup_printf("%d",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4660 gtk_spin_button_get_value_as_int(tmp->data)));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4661 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4662 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4663 {
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4664 value = gtk_entry_get_text(tmp->data);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4665 if (*value != '\0')
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4666 g_hash_table_replace(components,
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4667 g_strdup(g_object_get_data(tmp->data, "identifier")),
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4668 g_strdup(value));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4669 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4670 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4671
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4672 chat = gaim_chat_new(data->account,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4673 gtk_entry_get_text(GTK_ENTRY(data->alias_entry)),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4674 components);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4675
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4676 group_name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4677
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4678 if ((group = gaim_find_group(group_name)) == NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4679 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4680 group = gaim_group_new(group_name);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4681 gaim_blist_add_group(group, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4682 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4683
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4684 if (chat != NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4685 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4686 gaim_blist_add_chat(chat, group, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4687 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4688
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4689 gtk_widget_destroy(data->window);
9812
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4690 g_free(data->default_chat_name);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4691 g_list_free(data->entries);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4692 g_free(data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4693 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4694
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4695 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4696 add_chat_resp_cb(GtkWidget *w, int resp, GaimGtkAddChatData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4697 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4698 if (resp == GTK_RESPONSE_OK)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4699 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4700 add_chat_cb(NULL, data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4701 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4702 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4703 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4704 gtk_widget_destroy(data->window);
9812
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4705 g_free(data->default_chat_name);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4706 g_list_free(data->entries);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4707 g_free(data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4708 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4709 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4710
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4711 /*
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4712 * Check the values of all the text entry boxes. If any required input
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4713 * strings are empty then don't allow the user to click on "OK."
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4714 */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4715 static void
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4716 addchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4717 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4718 GaimGtkAddChatData *data;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4719 GList *tmp;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4720 const char *text;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4721 gboolean required;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4722 gboolean sensitive = TRUE;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4723
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4724 data = user_data;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4725
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4726 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4727 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4728 if (!g_object_get_data(tmp->data, "is_spin"))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4729 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4730 required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4731 text = gtk_entry_get_text(tmp->data);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4732 if (required && (*text == '\0'))
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4733 sensitive = FALSE;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4734 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4735 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4736
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4737 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4738 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4739
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4740 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4741 rebuild_addchat_entries(GaimGtkAddChatData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4742 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4743 GaimConnection *gc;
9959
b6a74cbfd182 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
4744 GList *list = NULL, *tmp = NULL;
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4745 GHashTable *defaults = NULL;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4746 struct proto_chat_entry *pce;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4747 gboolean focus = TRUE;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4748
10127
23e101b522f1 [gaim-migrate @ 11165]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10118
diff changeset
4749 g_return_if_fail(data->account != NULL);
23e101b522f1 [gaim-migrate @ 11165]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10118
diff changeset
4750
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4751 gc = gaim_account_get_connection(data->account);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4752
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4753 while (GTK_BOX(data->entries_box)->children)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4754 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4755 gtk_container_remove(GTK_CONTAINER(data->entries_box),
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4756 ((GtkBoxChild *)GTK_BOX(data->entries_box)->children->data)->widget);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4757 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4758
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4759 if (data->entries != NULL)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4760 g_list_free(data->entries);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4761
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4762 data->entries = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4763
9959
b6a74cbfd182 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
4764 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
b6a74cbfd182 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
4765 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4766
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4767 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4768 defaults = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, data->default_chat_name);
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4769
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4770 for (tmp = list; tmp; tmp = tmp->next)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4771 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4772 GtkWidget *label;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4773 GtkWidget *rowbox;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4774 GtkWidget *input;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4775
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4776 pce = tmp->data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4777
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4778 rowbox = gtk_hbox_new(FALSE, 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4779 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4780
7889
7e1bb4deca24 [gaim-migrate @ 8547]
Nathan Walp <nwalp@pidgin.im>
parents: 7887
diff changeset
4781 label = gtk_label_new_with_mnemonic(pce->label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4782 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4783 gtk_size_group_add_widget(data->sg, label);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4784 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4785
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4786 if (pce->is_int)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4787 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4788 GtkObject *adjust;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4789 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4790 1, 10, 10);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4791 input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4792 gtk_widget_set_size_request(input, 50, -1);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4793 gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4794 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4795 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4796 {
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4797 char *value;
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4798 input = gtk_entry_new();
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4799 gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4800 value = g_hash_table_lookup(defaults, pce->identifier);
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4801 if (value != NULL)
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4802 gtk_entry_set_text(GTK_ENTRY(input), value);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4803 if (pce->secret)
11986
bfbb1798535e [gaim-migrate @ 14279]
Mark Doliner <mark@kingant.net>
parents: 11983
diff changeset
4804 {
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4805 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
11986
bfbb1798535e [gaim-migrate @ 14279]
Mark Doliner <mark@kingant.net>
parents: 11983
diff changeset
4806 gtk_entry_set_invisible_char(GTK_ENTRY(input), GAIM_INVISIBLE_CHAR);
bfbb1798535e [gaim-migrate @ 14279]
Mark Doliner <mark@kingant.net>
parents: 11983
diff changeset
4807 }
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4808 gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4809 g_signal_connect(G_OBJECT(input), "changed",
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4810 G_CALLBACK(addchat_set_sensitive_if_input_cb), data);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4811 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4812
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4813 /* Do the following for any type of input widget */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4814 if (focus)
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4815 {
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4816 gtk_widget_grab_focus(input);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4817 focus = FALSE;
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4818 }
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4819 gtk_label_set_mnemonic_widget(GTK_LABEL(label), input);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4820 gaim_set_accessible_label(input, label);
13106
a0a4b44239e8 [gaim-migrate @ 15468]
Richard Laager <rlaager@wiktel.com>
parents: 13090
diff changeset
4821 g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4822 g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4823 g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4824 data->entries = g_list_append(data->entries, input);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4825
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4826 g_free(pce);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4827 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4828
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4829 g_list_free(list);
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4830 g_hash_table_destroy(defaults);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4831
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4832 /* Set whether the "OK" button should be clickable initially */
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4833 addchat_set_sensitive_if_input_cb(NULL, data);
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4834
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4835 gtk_widget_show_all(data->entries_box);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4836 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4837
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4838 static void
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4839 addchat_select_account_cb(GObject *w, GaimAccount *account,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4840 GaimGtkAddChatData *data)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4841 {
9460
eae7e049d639 [gaim-migrate @ 10285]
Luke Schierer <lschiere@pidgin.im>
parents: 9396
diff changeset
4842 if (strcmp(gaim_account_get_protocol_id(data->account),
eae7e049d639 [gaim-migrate @ 10285]
Luke Schierer <lschiere@pidgin.im>
parents: 9396
diff changeset
4843 gaim_account_get_protocol_id(account)) == 0)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4844 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4845 data->account = account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4846 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4847 else
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4848 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4849 data->account = account;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4850 rebuild_addchat_entries(data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4851 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4852 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4853
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
4854 static void
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7856
diff changeset
4855 gaim_gtk_blist_request_add_chat(GaimAccount *account, GaimGroup *group,
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
4856 const char *alias, const char *name)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4857 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4858 GaimGtkAddChatData *data;
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4859 GaimGtkBuddyList *gtkblist;
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4860 GList *l;
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4861 GaimConnection *gc;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4862 GtkWidget *label;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4863 GtkWidget *rowbox;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4864 GtkWidget *hbox;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4865 GtkWidget *vbox;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4866 GtkWidget *img;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4867
9812
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4868 if (account != NULL) {
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4869 gc = gaim_account_get_connection(account);
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4870
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4871 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat == NULL) {
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4872 gaim_notify_error(gc, NULL, _("This protocol does not support chat rooms."), NULL);
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4873 return;
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4874 }
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4875 } else {
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4876 /* Find an account with chat capabilities */
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4877 for (l = gaim_connections_get_all(); l != NULL; l = l->next) {
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4878 gc = (GaimConnection *)l->data;
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4879
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4880 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat != NULL) {
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4881 account = gaim_connection_get_account(gc);
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4882 break;
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4883 }
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4884 }
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4885
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4886 if (account == NULL) {
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4887 gaim_notify_error(NULL, NULL,
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4888 _("You are not currently signed on with any "
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4889 "protocols that have the ability to chat."), NULL);
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4890 return;
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4891 }
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4892 }
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4893
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4894 data = g_new0(GaimGtkAddChatData, 1);
9812
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4895 data->account = account;
d56f24cc4dad [gaim-migrate @ 10683]
Mark Doliner <mark@kingant.net>
parents: 9811
diff changeset
4896 data->default_chat_name = g_strdup(name);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4897
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4898 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4899 GTK_ICON_SIZE_DIALOG);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4900
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4901 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4902
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4903 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4904
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4905 data->window = gtk_dialog_new_with_buttons(_("Add Chat"),
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4906 NULL, GTK_DIALOG_NO_SEPARATOR,
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4907 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4908 GTK_STOCK_ADD, GTK_RESPONSE_OK,
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4909 NULL);
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4910
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4911 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4912 gtk_container_set_border_width(GTK_CONTAINER(data->window), GAIM_HIG_BOX_SPACE);
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4913 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4914 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BORDER);
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4915 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4916 gtk_window_set_role(GTK_WINDOW(data->window), "add_chat");
8975
574393ccd705 [gaim-migrate @ 9749]
Luke Schierer <lschiere@pidgin.im>
parents: 8960
diff changeset
4917 gtk_window_set_type_hint(GTK_WINDOW(data->window),
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
4918 GDK_WINDOW_TYPE_HINT_DIALOG);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4919
11243
a511b77a368b [gaim-migrate @ 13408]
Mark Doliner <mark@kingant.net>
parents: 11137
diff changeset
4920 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4921 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4922 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4923 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4924
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4925 vbox = gtk_vbox_new(FALSE, 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4926 gtk_container_add(GTK_CONTAINER(hbox), vbox);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4927
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4928 label = gtk_label_new(
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4929 _("Please enter an alias, and the appropriate information "
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4930 "about the chat you would like to add to your buddy list.\n"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4931 gtk_widget_set_size_request(label, 400, -1);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4932 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4933 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4934 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4935
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4936 rowbox = gtk_hbox_new(FALSE, 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4937 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4938
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4939 label = gtk_label_new(_("Account:"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4940 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4941 gtk_size_group_add_widget(data->sg, label);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4942 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4943
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4944 data->account_menu = gaim_gtk_account_option_menu_new(account, FALSE,
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
4945 G_CALLBACK(addchat_select_account_cb),
9987
5eedb0a9093d [gaim-migrate @ 10900]
Luke Schierer <lschiere@pidgin.im>
parents: 9959
diff changeset
4946 chat_account_filter_func, data);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4947 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4948 gaim_set_accessible_label (data->account_menu, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4949
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4950 data->entries_box = gtk_vbox_new(FALSE, 5);
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
4951 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4952 gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4953
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4954 rebuild_addchat_entries(data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4955
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4956 rowbox = gtk_hbox_new(FALSE, 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4957 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4958
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4959 label = gtk_label_new(_("Alias:"));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4960 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4961 gtk_size_group_add_widget(data->sg, label);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4962 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4963
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4964 data->alias_entry = gtk_entry_new();
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7856
diff changeset
4965 if (alias != NULL)
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7856
diff changeset
4966 gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4967 gtk_box_pack_end(GTK_BOX(rowbox), data->alias_entry, TRUE, TRUE, 0);
10311
b7566fc34c6c [gaim-migrate @ 11505]
Mark Doliner <mark@kingant.net>
parents: 10297
diff changeset
4968 gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE);
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4969 gaim_set_accessible_label (data->alias_entry, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4970
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4971 rowbox = gtk_hbox_new(FALSE, 5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4972 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4973
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
4974 label = gtk_label_new(_("Group:"));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4975 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4976 gtk_size_group_add_widget(data->sg, label);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4977 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4978
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
4979 data->group_combo = gtk_combo_new();
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
4980 gtk_combo_set_popdown_strings(GTK_COMBO(data->group_combo), groups_tree());
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4981 gtk_box_pack_end(GTK_BOX(rowbox), data->group_combo, TRUE, TRUE, 0);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4982
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4983 if (group)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4984 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4985 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4986 group->name);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4987 }
8137
4971193f761d [gaim-migrate @ 8842]
Mark Doliner <mark@kingant.net>
parents: 8122
diff changeset
4988 gaim_set_accessible_label (data->group_combo, label);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4989
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4990 g_signal_connect(G_OBJECT(data->window), "response",
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4991 G_CALLBACK(add_chat_resp_cb), data);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4992
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4993 gtk_widget_show_all(data->window);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4994 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4995
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4996 static void
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4997 add_group_cb(GaimConnection *gc, const char *group_name)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
4998 {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
4999 GaimGroup *group;
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
5000
12458
8626cc8d0df9 [gaim-migrate @ 14767]
Mark Doliner <mark@kingant.net>
parents: 12450
diff changeset
5001 if ((group_name == NULL) || (*group_name == '\0'))
8626cc8d0df9 [gaim-migrate @ 14767]
Mark Doliner <mark@kingant.net>
parents: 12450
diff changeset
5002 return;
8626cc8d0df9 [gaim-migrate @ 14767]
Mark Doliner <mark@kingant.net>
parents: 12450
diff changeset
5003
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
5004 group = gaim_group_new(group_name);
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9236
diff changeset
5005 gaim_blist_add_group(group, NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5006 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5007
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5008 static void
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5009 gaim_gtk_blist_request_add_group(void)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5010 {
7853
340df1652af1 [gaim-migrate @ 8507]
Mark Doliner <mark@kingant.net>
parents: 7843
diff changeset
5011 gaim_request_input(NULL, _("Add Group"), NULL,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5012 _("Please enter the name of the group to be added."),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8592
diff changeset
5013 NULL, FALSE, FALSE, NULL,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5014 _("Add"), G_CALLBACK(add_group_cb),
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5015 _("Cancel"), NULL, NULL);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5016 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5017
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5018 void
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5019 gaim_gtk_blist_toggle_visibility()
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5020 {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5021 if (gtkblist && gtkblist->window) {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5022 if (GTK_WIDGET_VISIBLE(gtkblist->window)) {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5023 gaim_blist_set_visible(GAIM_WINDOW_ICONIFIED(gtkblist->window) || gtk_blist_obscured);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5024 } else {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5025 gaim_blist_set_visible(TRUE);
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5026 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5027 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5028 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5029
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5030 void
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5031 gaim_gtk_blist_visibility_manager_add()
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5032 {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5033 visibility_manager_count++;
12479
53e2dc07d9e2 [gaim-migrate @ 14790]
Richard Laager <rlaager@wiktel.com>
parents: 12478
diff changeset
5034 gaim_debug_info("gtkblist", "added visibility manager: %d\n", visibility_manager_count);
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5035 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5036
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5037 void
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5038 gaim_gtk_blist_visibility_manager_remove()
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5039 {
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5040 if (visibility_manager_count)
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5041 visibility_manager_count--;
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5042 if (!visibility_manager_count)
12115
e9790eb93216 [gaim-migrate @ 14415]
Luke Schierer <lschiere@pidgin.im>
parents: 12113
diff changeset
5043 gaim_blist_set_visible(gaim_prefs_get_bool("/gaim/gtk/blist/list_visible"));
12479
53e2dc07d9e2 [gaim-migrate @ 14790]
Richard Laager <rlaager@wiktel.com>
parents: 12478
diff changeset
5044 gaim_debug_info("gtkblist", "removed visibility manager: %d\n", visibility_manager_count);
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5045 }
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5046
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5047
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5048 static GaimBlistUiOps blist_ui_ops =
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5049 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5050 gaim_gtk_blist_new_list,
5256
1d1c45d9b7fc [gaim-migrate @ 5628]
Luke Schierer <lschiere@pidgin.im>
parents: 5254
diff changeset
5051 gaim_gtk_blist_new_node,
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5052 gaim_gtk_blist_show,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5053 gaim_gtk_blist_update,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5054 gaim_gtk_blist_remove,
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5055 gaim_gtk_blist_destroy,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5056 gaim_gtk_blist_set_visible,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5057 gaim_gtk_blist_request_add_buddy,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5058 gaim_gtk_blist_request_add_chat,
10012
a38881ec9c0f [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
5059 gaim_gtk_blist_request_add_group
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5060 };
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5061
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5062
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5063 GaimBlistUiOps *
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5064 gaim_gtk_blist_get_ui_ops(void)
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5065 {
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5066 return &blist_ui_ops;
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5067 }
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5068
10643
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10623
diff changeset
5069 GaimGtkBuddyList *gaim_gtk_blist_get_default_gtk_blist()
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10623
diff changeset
5070 {
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10623
diff changeset
5071 return gtkblist;
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10623
diff changeset
5072 }
868aafbe859b [gaim-migrate @ 12153]
Sean Egan <seanegan@gmail.com>
parents: 10623
diff changeset
5073
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5074 static void account_signon_cb(GaimConnection *gc, gpointer z)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5075 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5076 GaimAccount *account = gaim_connection_get_account(gc);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5077 GaimBlistNode *gnode, *cnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5078 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5079 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5080 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5081 continue;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5082 for(cnode = gnode->child; cnode; cnode = cnode->next)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5083 {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5084 GaimChat *chat;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5085
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5086 if(!GAIM_BLIST_NODE_IS_CHAT(cnode))
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5087 continue;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5088
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5089 chat = (GaimChat *)cnode;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5090
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5091 if(chat->account != account)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5092 continue;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5093
8197
7c45eb829340 [gaim-migrate @ 8919]
Nathan Walp <nwalp@pidgin.im>
parents: 8143
diff changeset
5094 if(gaim_blist_node_get_bool((GaimBlistNode*)chat, "gtk-autojoin") ||
8198
9f174d0222bd [gaim-migrate @ 8921]
Nathan Walp <nwalp@pidgin.im>
parents: 8197
diff changeset
5095 (gaim_blist_node_get_string((GaimBlistNode*)chat,
9f174d0222bd [gaim-migrate @ 8921]
Nathan Walp <nwalp@pidgin.im>
parents: 8197
diff changeset
5096 "gtk-autojoin") != NULL))
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5097 serv_join_chat(gc, chat->components);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5098 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5099 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5100 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5101
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5102 void *
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5103 gaim_gtk_blist_get_handle() {
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5104 static int handle;
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5105
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5106 return &handle;
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5107 }
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5108
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5109 static gboolean buddy_signonoff_timeout_cb(GaimBuddy *buddy)
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5110 {
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5111 struct _gaim_gtk_blist_node *gtknode = ((GaimBlistNode*)buddy)->ui_data;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5112
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5113 gtknode->recent_signonoff = FALSE;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5114 gtknode->recent_signonoff_timer = 0;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5115
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5116 gaim_gtk_blist_update(NULL, (GaimBlistNode*)buddy);
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5117
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5118 return FALSE;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5119 }
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5120
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5121 static void buddy_signonoff_cb(GaimBuddy *buddy)
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5122 {
11915
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5123 struct _gaim_gtk_blist_node *gtknode;
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5124
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5125 if(!((GaimBlistNode*)buddy)->ui_data) {
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5126 gaim_gtk_blist_new_node((GaimBlistNode*)buddy);
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5127 }
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5128
31343023953c [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5129 gtknode = ((GaimBlistNode*)buddy)->ui_data;
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5130
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5131 gtknode->recent_signonoff = TRUE;
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5132
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5133 if(gtknode->recent_signonoff_timer > 0)
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5134 gaim_timeout_remove(gtknode->recent_signonoff_timer);
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5135 gtknode->recent_signonoff_timer = gaim_timeout_add(10000,
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5136 (GSourceFunc)buddy_signonoff_timeout_cb, buddy);
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5137 }
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5138
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5139 void gaim_gtk_blist_init(void)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5140 {
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5141 void *gtk_blist_handle = gaim_gtk_blist_get_handle();
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5142
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5143 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5144 gtk_blist_handle, GAIM_CALLBACK(account_signon_cb),
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5145 NULL);
7731
36727d6e1d5a [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5146
36727d6e1d5a [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5147 /* Initialize prefs */
8819
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5148 gaim_prefs_add_none("/gaim/gtk/blist");
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5149 gaim_prefs_add_bool("/gaim/gtk/blist/show_buddy_icons", TRUE);
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5150 gaim_prefs_add_bool("/gaim/gtk/blist/show_empty_groups", FALSE);
12656
60cce1861e59 [gaim-migrate @ 14999]
Mark Doliner <mark@kingant.net>
parents: 12649
diff changeset
5151 gaim_prefs_add_bool("/gaim/gtk/blist/show_idle_time", TRUE);
8819
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5152 gaim_prefs_add_bool("/gaim/gtk/blist/show_offline_buddies", FALSE);
10282
778dd5d6d55e [gaim-migrate @ 11451]
Sean Egan <seanegan@gmail.com>
parents: 10273
diff changeset
5153 gaim_prefs_add_bool("/gaim/gtk/blist/list_visible", TRUE);
12279
234c25bc5d49 [gaim-migrate @ 14583]
Mark Doliner <mark@kingant.net>
parents: 12246
diff changeset
5154 gaim_prefs_add_bool("/gaim/gtk/blist/list_maximized", FALSE);
9711
b0ddfeccb9e6 [gaim-migrate @ 10572]
Mark Doliner <mark@kingant.net>
parents: 9709
diff changeset
5155 gaim_prefs_add_string("/gaim/gtk/blist/sort_type", "alphabetical");
8819
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5156 gaim_prefs_add_int("/gaim/gtk/blist/x", 0);
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5157 gaim_prefs_add_int("/gaim/gtk/blist/y", 0);
9778
3d40125495e3 [gaim-migrate @ 10646]
Mark Doliner <mark@kingant.net>
parents: 9775
diff changeset
5158 gaim_prefs_add_int("/gaim/gtk/blist/width", 309); /* Golden ratio, baby */
3d40125495e3 [gaim-migrate @ 10646]
Mark Doliner <mark@kingant.net>
parents: 9775
diff changeset
5159 gaim_prefs_add_int("/gaim/gtk/blist/height", 500); /* Golden ratio, baby */
8819
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5160 gaim_prefs_add_int("/gaim/gtk/blist/tooltip_delay", 500);
7731
36727d6e1d5a [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5161
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5162 /* Register our signals */
12016
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5163 gaim_signal_register(gtk_blist_handle, "gtkblist-hiding",
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5164 gaim_marshal_VOID__POINTER, NULL, 1,
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5165 gaim_value_new(GAIM_TYPE_POINTER));
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5166
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5167 gaim_signal_register(gtk_blist_handle, "gtkblist-unhiding",
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5168 gaim_marshal_VOID__POINTER, NULL, 1,
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5169 gaim_value_new(GAIM_TYPE_SUBTYPE));
24c7fb94d3a3 [gaim-migrate @ 14309]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11988
diff changeset
5170
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5171 gaim_signal_register(gtk_blist_handle, "gtkblist-created",
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
5172 gaim_marshal_VOID__POINTER, NULL, 1,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
5173 gaim_value_new(GAIM_TYPE_SUBTYPE,
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
5174 GAIM_SUBTYPE_BLIST));
8819
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5175
d7ed3a4bdf35 [gaim-migrate @ 9581]
Sean Egan <seanegan@gmail.com>
parents: 8817
diff changeset
5176 gaim_signal_register(gtk_blist_handle, "drawing-tooltip",
12713
d7043c3c793d [gaim-migrate @ 15057]
Richard Laager <rlaager@wiktel.com>
parents: 12679
diff changeset
5177 gaim_marshal_VOID__POINTER_POINTER_UINT, NULL, 3,
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
5178 gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_BLIST_NODE),
12713
d7043c3c793d [gaim-migrate @ 15057]
Richard Laager <rlaager@wiktel.com>
parents: 12679
diff changeset
5179 gaim_value_new_outgoing(GAIM_TYPE_BOXED, "GString *"),
d7043c3c793d [gaim-migrate @ 15057]
Richard Laager <rlaager@wiktel.com>
parents: 12679
diff changeset
5180 gaim_value_new(GAIM_TYPE_BOOLEAN));
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5181
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5182
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5183 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on", gtk_blist_handle, GAIM_CALLBACK(buddy_signonoff_cb), NULL);
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5184 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-off", gtk_blist_handle, GAIM_CALLBACK(buddy_signonoff_cb), NULL);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5185 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5186
8815
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5187 void
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5188 gaim_gtk_blist_uninit(void) {
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5189 gaim_signals_unregister_by_instance(gaim_gtk_blist_get_handle());
ada0cf2f49fe [gaim-migrate @ 9577]
Luke Schierer <lschiere@pidgin.im>
parents: 8710
diff changeset
5190 }
5228
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5191
1a53330dfd34 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5192 /*********************************************************************
9811
a107051d991f [gaim-migrate @ 10682]
Mark Doliner <mark@kingant.net>
parents: 9791
diff changeset
5193 * Buddy List sorting functions *
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5194 *********************************************************************/
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5195
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5196 GList *gaim_gtk_blist_get_sort_methods()
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5197 {
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5198 return gaim_gtk_blist_sort_methods;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5199 }
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5200
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5201 void gaim_gtk_blist_sort_method_reg(const char *id, const char *name, gaim_gtk_blist_sort_function func)
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5202 {
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5203 struct gaim_gtk_blist_sort_method *method = g_new0(struct gaim_gtk_blist_sort_method, 1);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5204 method->id = g_strdup(id);
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5205 method->name = g_strdup(name);
9775
4c1a1be8ce33 [gaim-migrate @ 10643]
Mark Doliner <mark@kingant.net>
parents: 9774
diff changeset
5206 method->func = func;
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5207 gaim_gtk_blist_sort_methods = g_list_append(gaim_gtk_blist_sort_methods, method);
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5208 gaim_gtk_blist_update_sort_methods();
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5209 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5210
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5211 void gaim_gtk_blist_sort_method_unreg(const char *id){
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5212 GList *l = gaim_gtk_blist_sort_methods;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5213
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5214 while(l) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5215 struct gaim_gtk_blist_sort_method *method = l->data;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5216 if(!strcmp(method->id, id)) {
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5217 gaim_gtk_blist_sort_methods = g_list_delete_link(gaim_gtk_blist_sort_methods, l);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5218 g_free(method->id);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5219 g_free(method->name);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5220 g_free(method);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5221 break;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5222 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5223 }
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5224 gaim_gtk_blist_update_sort_methods();
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5225 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5226
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5227 void gaim_gtk_blist_sort_method_set(const char *id){
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5228 GList *l = gaim_gtk_blist_sort_methods;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5229
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5230 if(!id)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5231 id = "none";
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5232
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5233 while (l && strcmp(((struct gaim_gtk_blist_sort_method*)l->data)->id, id))
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5234 l = l->next;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5235
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5236 if (l) {
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5237 current_sort_method = l->data;
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5238 } else if (!current_sort_method) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5239 gaim_gtk_blist_sort_method_set("none");
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5240 return;
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5241 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5242 redo_buddy_list(gaim_get_blist(), TRUE);
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5243
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5244 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5245
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5246 /******************************************
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5247 ** Sort Methods
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5248 ******************************************/
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5249
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5250 static void sort_method_none(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter parent_iter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5251 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5252 GaimBlistNode *sibling = node->prev;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5253 GtkTreeIter sibling_iter;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5254
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5255 if (cur != NULL) {
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5256 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5257 return;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5258 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5259
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5260 while (sibling && !get_iter_from_node(sibling, &sibling_iter)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5261 sibling = sibling->prev;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5262 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5263
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5264 gtk_tree_store_insert_after(gtkblist->treemodel, iter,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5265 node->parent ? &parent_iter : NULL,
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5266 sibling ? &sibling_iter : NULL);
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5267 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5268
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5269 #if GTK_CHECK_VERSION(2,2,1)
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5270
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5271 static void sort_method_alphabetical(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5272 {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5273 GtkTreeIter more_z;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5274
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5275 const char *my_name;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5276
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5277 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5278 my_name = gaim_contact_get_alias((GaimContact*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5279 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5280 my_name = gaim_chat_get_name((GaimChat*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5281 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5282 sort_method_none(node, blist, groupiter, cur, iter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5283 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5284 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5285
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5286
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5287 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5288 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5289 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5290 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5291
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5292 do {
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5293 GValue val;
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5294 GaimBlistNode *n;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5295 const char *this_name;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5296 int cmp;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5297
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5298 val.g_type = 0;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5299 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5300 n = g_value_get_pointer(&val);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5301
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5302 if(GAIM_BLIST_NODE_IS_CONTACT(n)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5303 this_name = gaim_contact_get_alias((GaimContact*)n);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5304 } else if(GAIM_BLIST_NODE_IS_CHAT(n)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5305 this_name = gaim_chat_get_name((GaimChat*)n);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5306 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5307 this_name = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5308 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5309
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5310 cmp = gaim_utf8_strcasecmp(my_name, this_name);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5311
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5312 if(this_name && (cmp < 0 || (cmp == 0 && node < n))) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5313 if(cur) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5314 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5315 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5316 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5317 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5318 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5319 &groupiter, &more_z);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5320 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5321 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5322 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5323 g_value_unset(&val);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5324 } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z));
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5325
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5326 if(cur) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5327 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5328 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5329 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5330 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5331 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5332 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5333 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5334 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5335
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5336 static void sort_method_status(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5337 {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5338 GtkTreeIter more_z;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5339
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5340 GaimBuddy *my_buddy, *this_buddy;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5341
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5342 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5343 my_buddy = gaim_contact_get_priority_buddy((GaimContact*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5344 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5345 if (cur != NULL) {
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5346 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5347 return;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5348 }
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5349
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5350 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5351 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5352 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5353 sort_method_none(node, blist, groupiter, cur, iter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5354 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5355 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5356
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5357
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5358 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5359 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5360 return;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5361 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5362
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5363 do {
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5364 GValue val;
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5365 GaimBlistNode *n;
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5366 gint name_cmp;
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5367 gint presence_cmp;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5368
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5369 val.g_type = 0;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5370 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5371 n = g_value_get_pointer(&val);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5372
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5373 if(GAIM_BLIST_NODE_IS_CONTACT(n)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5374 this_buddy = gaim_contact_get_priority_buddy((GaimContact*)n);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5375 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5376 this_buddy = NULL;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5377 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5378
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5379 name_cmp = gaim_utf8_strcasecmp(
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5380 (my_buddy
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5381 ? gaim_contact_get_alias(gaim_buddy_get_contact(my_buddy))
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5382 : NULL),
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5383 (this_buddy
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5384 ? gaim_contact_get_alias(gaim_buddy_get_contact(this_buddy))
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5385 : NULL));
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5386
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5387 presence_cmp = gaim_presence_compare(
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5388 gaim_buddy_get_presence(my_buddy),
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5389 gaim_buddy_get_presence(this_buddy));
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5390
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5391 if (this_buddy == NULL ||
10860
d01d81de94d8 [gaim-migrate @ 12543]
Mark Doliner <mark@kingant.net>
parents: 10850
diff changeset
5392 (presence_cmp < 0 ||
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5393 (presence_cmp == 0 &&
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5394 (name_cmp < 0 || (name_cmp == 0 && node < n)))))
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5395 {
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5396 if (cur != NULL)
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5397 {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5398 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5399 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5400 return;
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5401 }
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5402 else
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5403 {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5404 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5405 &groupiter, &more_z);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5406 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5407 }
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5408 }
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5409
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5410 g_value_unset(&val);
9944
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5411 }
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5412 while (gtk_tree_model_iter_next(GTK_TREE_MODEL(gtkblist->treemodel),
e4a27c9aec4c [gaim-migrate @ 10838]
Luke Schierer <lschiere@pidgin.im>
parents: 9925
diff changeset
5413 &more_z));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5414
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5415 if (cur) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5416 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5417 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5418 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5419 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5420 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5421 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5422 }
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5423 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5424
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5425 static void sort_method_log(GaimBlistNode *node, GaimBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5426 {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5427 GtkTreeIter more_z;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5428
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5429 int log_size = 0, this_log_size = 0;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5430 const char *buddy_name, *this_buddy_name;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5431
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5432 if(cur && (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter) == 1)) {
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5433 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5434 return;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5435 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5436
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5437 if(GAIM_BLIST_NODE_IS_CONTACT(node)) {
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5438 GaimBlistNode *n;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5439 for (n = node->child; n; n = n->next)
8898
de87e510ff9a [gaim-migrate @ 9667]
Mark Doliner <mark@kingant.net>
parents: 8861
diff changeset
5440 log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy*)(n))->name, ((GaimBuddy*)(n))->account);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5441 buddy_name = gaim_contact_get_alias((GaimContact*)node);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5442 } else if(GAIM_BLIST_NODE_IS_CHAT(node)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5443 /* we don't have a reliable way of getting the log filename
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5444 * from the chat info in the blist, yet */
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5445 if (cur != NULL) {
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5446 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5447 return;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5448 }
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5449
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5450 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5451 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5452 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5453 sort_method_none(node, blist, groupiter, cur, iter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5454 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5455 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5456
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5457
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5458 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5459 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5460 return;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5461 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5462
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5463 do {
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5464 GValue val;
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5465 GaimBlistNode *n;
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5466 GaimBlistNode *n2;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5467 int cmp;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5468
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12592
diff changeset
5469 val.g_type = 0;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5470 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5471 n = g_value_get_pointer(&val);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5472 this_log_size = 0;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5473
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5474 if(GAIM_BLIST_NODE_IS_CONTACT(n)) {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5475 for (n2 = n->child; n2; n2 = n2->next)
8898
de87e510ff9a [gaim-migrate @ 9667]
Mark Doliner <mark@kingant.net>
parents: 8861
diff changeset
5476 this_log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy*)(n2))->name, ((GaimBuddy*)(n2))->account);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5477 this_buddy_name = gaim_contact_get_alias((GaimContact*)n);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5478 } else {
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5479 this_buddy_name = NULL;
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5480 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5481
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5482 cmp = gaim_utf8_strcasecmp(buddy_name, this_buddy_name);
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5483
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5484 if (!GAIM_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size ||
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5485 ((log_size == this_log_size) &&
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5486 (cmp < 0 || (cmp == 0 && node < n)))) {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5487 if (cur != NULL) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5488 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5489 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5490 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5491 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5492 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5493 &groupiter, &more_z);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5494 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5495 }
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5496 }
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5497 g_value_unset(&val);
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5498 } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z));
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5499
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5500 if (cur != NULL) {
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5501 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5502 *iter = *cur;
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5503 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5504 } else {
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5505 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5506 return;
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5507 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5508 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5509
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5510 #endif
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5511
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5512 static void
13196
f04dffe22957 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13195
diff changeset
5513 plugin_act(GtkObject *obj, GaimPluginAction *pam)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5514 {
13196
f04dffe22957 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13195
diff changeset
5515 if (pam && pam->callback)
10352
5879593a6a10 [gaim-migrate @ 11569]
Mark Doliner <mark@kingant.net>
parents: 10351
diff changeset
5516 pam->callback(pam);
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5419
diff changeset
5517 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5518
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5519 static void
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5520 build_plugin_actions(GtkWidget *menu, GaimPlugin *plugin)
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5521 {
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5522 GtkWidget *menuitem;
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5523 GaimPluginAction *action = NULL;
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5524 GList *actions, *l;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5525
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5526 actions = GAIM_PLUGIN_ACTIONS(plugin, NULL);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5527
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5528 for (l = actions; l != NULL; l = l->next)
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5529 {
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5530 if (l->data)
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5531 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5532 action = (GaimPluginAction *) l->data;
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5533 action->plugin = plugin;
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5534 action->context = NULL;
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5535
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5536 menuitem = gtk_menu_item_new_with_label(action->label);
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5537 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5538
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5539 g_signal_connect(G_OBJECT(menuitem), "activate",
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5540 G_CALLBACK(plugin_act), action);
13196
f04dffe22957 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13195
diff changeset
5541 g_object_set_data_full(G_OBJECT(menuitem), "plugin_action",
f04dffe22957 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13195
diff changeset
5542 action,
f04dffe22957 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13195
diff changeset
5543 (GDestroyNotify)gaim_plugin_action_free);
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5544 gtk_widget_show(menuitem);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5545 }
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5546 else
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5547 gaim_separator(menu);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5548 }
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5549
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5550 g_list_free(actions);
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5551 }
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5552
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5553 static void
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5554 modify_account_cb(GtkWidget *widget, gpointer data)
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5555 {
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5556 gaim_gtk_account_dialog_show(GAIM_GTK_MODIFY_ACCOUNT_DIALOG, data);
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5557 }
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5558
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5559 static void
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5560 enable_account_cb(GtkCheckMenuItem *widget, gpointer data)
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5561 {
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5562 GaimAccount *account = data;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5563 const GaimSavedStatus *saved_status;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5564
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5565 saved_status = gaim_savedstatus_get_current();
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5566 gaim_savedstatus_activate_for_account(saved_status, account);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5567
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5568 gaim_account_set_enabled(account, GAIM_GTK_UI, TRUE);
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5569 }
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5570
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5571 static void
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5572 disable_account_cb(GtkCheckMenuItem *widget, gpointer data)
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5573 {
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5574 GaimAccount *account = data;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5575
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5576 gaim_account_set_enabled(account, GAIM_GTK_UI, FALSE);
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5577 }
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5578
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5579 void
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5580 gaim_gtk_blist_update_accounts_menu(void)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5581 {
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5582 GtkWidget *menuitem = NULL, *submenu = NULL;
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5583 GList *l = NULL, *accounts = NULL;
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5584 gboolean disabled_accounts = FALSE;
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5585
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5586 if (accountmenu == NULL)
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5587 return;
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5588
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5589 /* Clear the old Accounts menu */
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5590 for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = l->next) {
12348
4f7797a3024b [gaim-migrate @ 14652]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12341
diff changeset
5591 menuitem = l->data;
4f7797a3024b [gaim-migrate @ 14652]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12341
diff changeset
5592
4f7797a3024b [gaim-migrate @ 14652]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12341
diff changeset
5593 if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Add\\/Edit")))
4f7797a3024b [gaim-migrate @ 14652]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12341
diff changeset
5594 gtk_container_remove(GTK_CONTAINER(accountmenu),
13132
ba82cc4d1abd [gaim-migrate @ 15494]
Richard Laager <rlaager@wiktel.com>
parents: 13106
diff changeset
5595 menuitem);
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5596 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5597
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5598 for (accounts = gaim_accounts_get_all(); accounts; accounts = accounts->next) {
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5599 char *buf = NULL;
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5600 GtkWidget *image = NULL;
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5601 GaimConnection *gc = NULL;
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5602 GaimAccount *account = NULL;
12300
6487e68dcef9 [gaim-migrate @ 14604]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12298
diff changeset
5603 GaimStatus *status = NULL;
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5604 GdkPixbuf *pixbuf = NULL;
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5605
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5606 account = accounts->data;
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5607
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5608 if(gaim_account_get_enabled(account, GAIM_GTK_UI)) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5609 buf = g_strconcat(gaim_account_get_username(account), " (",
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5610 gaim_account_get_protocol_name(account), ")", NULL);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5611 menuitem = gtk_image_menu_item_new_with_label(buf);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5612 g_free(buf);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5613 status = gaim_account_get_active_status(account);
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5614 pixbuf = gaim_gtk_create_prpl_icon_with_status(account, gaim_status_get_type(status), 0.5);
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5615 if (pixbuf != NULL)
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5616 {
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5617 if (!gaim_account_is_connected(account))
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5618 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf,
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5619 0.0, FALSE);
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5620 image = gtk_image_new_from_pixbuf(pixbuf);
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5621 g_object_unref(G_OBJECT(pixbuf));
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5622 gtk_widget_show(image);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5623 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5624 }
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5625 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5626 gtk_widget_show(menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5627
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5628 submenu = gtk_menu_new();
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5629 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5630 gtk_widget_show(submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5631
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5632
12334
2823118073fa [gaim-migrate @ 14638]
Mark Doliner <mark@kingant.net>
parents: 12333
diff changeset
5633 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account"));
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5634 g_signal_connect(G_OBJECT(menuitem), "activate",
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5635 G_CALLBACK(modify_account_cb), account);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5636 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5637 gtk_widget_show(menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5638
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5639 gaim_separator(submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5640
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5641 gc = gaim_account_get_connection(account);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5642 if (gc && GAIM_CONNECTION_IS_CONNECTED(gc)) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5643 GaimPlugin *plugin = NULL;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5644
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5645 plugin = gc->prpl;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5646 if (GAIM_PLUGIN_HAS_ACTIONS(plugin)) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5647 GList *l, *ll = NULL;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5648 GaimPluginAction *action = NULL;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5649
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5650 for (l = ll = GAIM_PLUGIN_ACTIONS(plugin, gc); l; l = l->next) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5651 if (l->data) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5652 action = (GaimPluginAction *)l->data;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5653 action->plugin = plugin;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5654 action->context = gc;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5655
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5656 menuitem = gtk_menu_item_new_with_label(action->label);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5657 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5658 g_signal_connect(G_OBJECT(menuitem), "activate",
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5659 G_CALLBACK(plugin_act), action);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5660 g_object_set_data(G_OBJECT(menuitem), "plugin_action", action);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5661 gtk_widget_show(menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5662 } else
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5663 gaim_separator(submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5664 }
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5665 } else {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5666 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5667 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5668 gtk_widget_set_sensitive(menuitem, FALSE);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5669 gtk_widget_show(menuitem);
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5670 }
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5671 } else {
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5672 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5673 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5674 gtk_widget_set_sensitive(menuitem, FALSE);
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5675 gtk_widget_show(menuitem);
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5676 }
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5677
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5678 gaim_separator(submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5679
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5680 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable"));
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5681 g_signal_connect(G_OBJECT(menuitem), "activate",
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5682 G_CALLBACK(disable_account_cb), account);
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5683 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5684 gtk_widget_show(menuitem);
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5685 } else {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5686 disabled_accounts = TRUE;
12296
2f4577ae3810 [gaim-migrate @ 14600]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12279
diff changeset
5687 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5688 }
9019
db1dc2d02020 [gaim-migrate @ 9795]
Mark Doliner <mark@kingant.net>
parents: 9015
diff changeset
5689
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5690 if(disabled_accounts) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5691 gaim_separator(accountmenu);
12338
1f6aac820540 [gaim-migrate @ 14642]
Mark Doliner <mark@kingant.net>
parents: 12337
diff changeset
5692 menuitem = gtk_menu_item_new_with_label(_("Enable Account"));
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5693 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5694 gtk_widget_show(menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5695
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5696 submenu = gtk_menu_new();
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5697 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5698 gtk_widget_show(submenu);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5699
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5700 for (accounts = gaim_accounts_get_all(); accounts; accounts = accounts->next) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5701 char *buf = NULL;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5702 GtkWidget *image = NULL;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5703 GaimAccount *account = NULL;
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5704 GdkPixbuf *pixbuf = NULL;
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5705
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5706 account = accounts->data;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5707
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5708 if(!gaim_account_get_enabled(account, GAIM_GTK_UI)) {
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5709
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5710 disabled_accounts = TRUE;
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5711
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5712 buf = g_strconcat(gaim_account_get_username(account), " (",
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5713 gaim_account_get_protocol_name(account), ")", NULL);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5714 menuitem = gtk_image_menu_item_new_with_label(buf);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5715 g_free(buf);
13090
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5716 pixbuf = gaim_gtk_create_prpl_icon(account, 0.5);
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5717 if (pixbuf != NULL)
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5718 {
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5719 if (!gaim_account_is_connected(account))
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5720 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
0aa231ebbfd5 [gaim-migrate @ 15452]
Mark Doliner <mark@kingant.net>
parents: 13049
diff changeset
5721 image = gtk_image_new_from_pixbuf(pixbuf);
12330
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5722 g_object_unref(G_OBJECT(pixbuf));
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5723 gtk_widget_show(image);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5724 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5725 }
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5726 g_signal_connect(G_OBJECT(menuitem), "activate",
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5727 G_CALLBACK(enable_account_cb), account);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5728 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5729 gtk_widget_show(menuitem);
607108495e92 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
5730 }
9019
db1dc2d02020 [gaim-migrate @ 9795]
Mark Doliner <mark@kingant.net>
parents: 9015
diff changeset
5731 }
7620
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5732 }
4f41c4aa9913 [gaim-migrate @ 8244]
Sean Egan <seanegan@gmail.com>
parents: 5516
diff changeset
5733 }
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5734
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5735 static GList *plugin_submenus = NULL;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5736
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5737 void
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5738 gaim_gtk_blist_update_plugin_actions(void)
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5739 {
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5740 GtkWidget *menuitem, *submenu;
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 9013
diff changeset
5741 GaimPlugin *plugin = NULL;
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5742 GList *l;
12464
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5743 GtkAccelGroup *accel_group;
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5744
11742
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5745 GtkWidget *pluginmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools"));
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5746
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5747 g_return_if_fail(pluginmenu != NULL);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5748
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5749 /* Remove old plugin action submenus from the Tools menu */
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5750 for (l = plugin_submenus; l; l = l->next)
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5751 {
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5752 GList *menuitems;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5753
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5754 submenu = l->data;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5755
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5756 menuitems = gtk_container_get_children(GTK_CONTAINER(submenu));
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5757 while (menuitems != NULL)
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5758 {
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5759 GaimPluginAction *action;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5760 menuitem = menuitems->data;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5761 action = g_object_get_data(G_OBJECT(menuitem), "plugin_action");
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5762 g_free(action);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5763 menuitems = g_list_delete_link(menuitems, menuitems);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5764 }
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5765
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5766 gtk_container_remove(GTK_CONTAINER(pluginmenu), GTK_WIDGET(submenu));
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5767 }
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5768 g_list_free(plugin_submenus);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5769 plugin_submenus = NULL;
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5770
12464
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5771 accel_group = gtk_menu_get_accel_group(GTK_MENU(pluginmenu));
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5772
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5773 /* Add a submenu for each plugin with custom actions */
11742
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5774 for (l = gaim_plugins_get_loaded(); l; l = l->next) {
12464
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5775 char *path;
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5776
11742
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5777 plugin = (GaimPlugin *) l->data;
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5778
11742
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5779 if (GAIM_IS_PROTOCOL_PLUGIN(plugin))
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5780 continue;
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5781
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5782 if (!GAIM_PLUGIN_HAS_ACTIONS(plugin))
dfb66f3f9e87 [gaim-migrate @ 14033]
Sean Egan <seanegan@gmail.com>
parents: 11740
diff changeset
5783 continue;
9019
db1dc2d02020 [gaim-migrate @ 9795]
Mark Doliner <mark@kingant.net>
parents: 9015
diff changeset
5784
13336
999571d910ed [gaim-migrate @ 15706]
Richard Laager <rlaager@wiktel.com>
parents: 13315
diff changeset
5785 menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name));
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5786 gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5787 gtk_widget_show(menuitem);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5788
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5789 plugin_submenus = g_list_append(plugin_submenus, menuitem);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5790
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5791 submenu = gtk_menu_new();
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5792 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5793 gtk_widget_show(submenu);
12464
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5794
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5795 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5796 path = g_strdup_printf("%s/Tools/%s", gtkblist->ift->path, plugin->info->name);
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5797 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
2b08a27c2342 [gaim-migrate @ 14774]
Richard Laager <rlaager@wiktel.com>
parents: 12461
diff changeset
5798 g_free(path);
12333
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5799
354af9ab4ed3 [gaim-migrate @ 14637]
Mark Doliner <mark@kingant.net>
parents: 12330
diff changeset
5800 build_plugin_actions(submenu, plugin);
8986
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5801 }
8cf32769ba1b [gaim-migrate @ 9761]
Luke Schierer <lschiere@pidgin.im>
parents: 8975
diff changeset
5802 }
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5803
12246
b7a51e68d0b8 [gaim-migrate @ 14548]
Mark Doliner <mark@kingant.net>
parents: 12240
diff changeset
5804 static void
b7a51e68d0b8 [gaim-migrate @ 14548]
Mark Doliner <mark@kingant.net>
parents: 12240
diff changeset
5805 sortmethod_act(GtkCheckMenuItem *checkmenuitem, char *id)
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5806 {
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5807 if (gtk_check_menu_item_get_active(checkmenuitem))
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5808 {
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
5809 gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5810
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5811 gaim_gtk_blist_sort_method_set(id);
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5812 gaim_prefs_set_string("/gaim/gtk/blist/sort_type", id);
12413
0332daad85ae [gaim-migrate @ 14720]
Richard Laager <rlaager@wiktel.com>
parents: 12368
diff changeset
5813
13434
ffd724befbf8 [gaim-migrate @ 15809]
Richard Laager <rlaager@wiktel.com>
parents: 13375
diff changeset
5814 gaim_gtk_clear_cursor(gtkblist->window);
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5815 }
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5816 }
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5817
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5818 void
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5819 gaim_gtk_blist_update_sort_methods(void)
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5820 {
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5821 GtkWidget *menuitem = NULL, *activeitem = NULL;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5822 GaimGtkBlistSortMethod *method = NULL;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5823 GList *l;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5824 GSList *sl = NULL;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5825 GtkWidget *sortmenu;
11797
e6bbf34b2465 [gaim-migrate @ 14088]
Nathan Walp <nwalp@pidgin.im>
parents: 11796
diff changeset
5826 const char *m = gaim_prefs_get_string("/gaim/gtk/blist/sort_type");
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5827
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5828 if (gtkblist == NULL)
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5829 return;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5830
11798
01c3eec6ea3c [gaim-migrate @ 14089]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11797
diff changeset
5831 sortmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Sort Buddies"));
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5832
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5833 if (sortmenu == NULL)
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5834 return;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5835
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5836 /* Clear the old menu */
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5837 for (l = gtk_container_get_children(GTK_CONTAINER(sortmenu)); l; l = l->next) {
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5838 menuitem = l->data;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5839 gtk_widget_destroy(GTK_WIDGET(menuitem));
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5840 }
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5841
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5842 for (l = gaim_gtk_blist_sort_methods; l; l = l->next) {
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5843 method = (GaimGtkBlistSortMethod *) l->data;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5844 menuitem = gtk_radio_menu_item_new_with_label(sl, _(method->name));
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5845 if (!strcmp(m, method->id))
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5846 activeitem = menuitem;
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5847 sl = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5848 gtk_menu_shell_append(GTK_MENU_SHELL(sortmenu), menuitem);
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5849 g_signal_connect(G_OBJECT(menuitem), "toggled",
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5850 G_CALLBACK(sortmethod_act), method->id);
11923
ab0f16a72e89 [gaim-migrate @ 14214]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
5851 gtk_widget_show(menuitem);
11796
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5852 }
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5853 if (activeitem)
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5854 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(activeitem), TRUE);
b9b7a010b043 [gaim-migrate @ 14087]
Sean Egan <seanegan@gmail.com>
parents: 11768
diff changeset
5855 }