annotate finch/gntblist.c @ 32046:5d81b452dcc4

Need to make a copy of the data passed to purple_imgstore_add_with_id().
author andrew.victor@mxit.com
date Sat, 03 Sep 2011 15:11:20 +0000
parents 3b2ceeb8883b
children cd1d9e04c587
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /**
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 * @file gntblist.c GNT BuddyList API
16194
0f0832c13fcb Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@wiktel.com>
parents: 16106
diff changeset
3 * @ingroup finch
20074
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19681
diff changeset
4 */
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19681
diff changeset
5
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19681
diff changeset
6 /* finch
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 *
15870
66dff3dfdea6 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents: 15843
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * source distribution.
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 *
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * (at your option) any later version.
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 *
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 * GNU General Public License for more details.
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 *
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19681
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19375
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 */
28770
259bbfb423d4 Fix all the remaining files for which internal.h doesn't end up being the first include.
Paul Aurich <paul@darkrain42.org>
parents: 28606
diff changeset
26 #include <internal.h>
18210
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18071
diff changeset
27 #include "finch.h"
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18071
diff changeset
28
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #include <account.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #include <blist.h>
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
31 #include <log.h>
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include <notify.h>
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
33 #include <privacy.h>
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 #include <request.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include <savedstatuses.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include <server.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #include <signal.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 #include <status.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 #include <util.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 #include "debug.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 #include "gntbox.h"
21691
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
43 #include "gntcolors.h"
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 #include "gntcombobox.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 #include "gntentry.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 #include "gntft.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 #include "gntlabel.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 #include "gntline.h"
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
49 #include "gntlog.h"
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 #include "gntmenu.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 #include "gntmenuitem.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 #include "gntmenuitemcheck.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 #include "gntpounce.h"
21691
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
54 #include "gntstyle.h"
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 #include "gnttree.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 #include "gntutils.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 #include "gntwindow.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 #include "gntblist.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 #include "gntconv.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 #include "gntstatus.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 #include <string.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63
16424
4999bbc52881 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents: 16276
diff changeset
64 #define PREF_ROOT "/finch/blist"
25592
bd18bb4915ba *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25568
diff changeset
65 #define TYPING_TIMEOUT_S 4
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
67 #define SHOW_EMPTY_GROUP_TIMEOUT 60
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
68
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 typedef struct
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 GntWidget *window;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72 GntWidget *tree;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 GntWidget *tooltip;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
75 PurpleBlistNode *tnode; /* Who is the tooltip being displayed for? */
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 GList *tagged; /* A list of tagged blistnodes */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 GntWidget *context;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
79 PurpleBlistNode *cnode;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 /* XXX: I am KISSing */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 GntWidget *status; /* Dropdown with the statuses */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 GntWidget *statustext; /* Status message */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 int typing;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 GntWidget *menu;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 /* These are the menuitems that get regenerated */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 GntMenuItem *accounts;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 GntMenuItem *plugins;
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
90 GntMenuItem *grouping;
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
91
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
92 /* When a new group is manually added, it is empty, but we still want to show it
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
93 * for a while (SHOW_EMPTY_GROUP_TIMEOUT seconds) even if 'show empty groups' is
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
94 * not selected.
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
95 */
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
96 GList *new_group;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
97 guint new_group_timeout;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
98
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
99 FinchBlistManager *manager;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 } FinchBlist;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
102 typedef struct
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
103 {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
104 gpointer row; /* the row in the GntTree */
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
105 guint signed_timer; /* used when 'recently' signed on/off */
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
106 } FinchBlistNode;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
107
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 typedef enum
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 STATUS_PRIMITIVE = 0,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 STATUS_SAVED_POPULAR,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 STATUS_SAVED_ALL,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 STATUS_SAVED_NEW
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 } StatusType;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 typedef struct
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 StatusType type;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 union
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
121 PurpleStatusPrimitive prim;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
122 PurpleSavedStatus *saved;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 } u;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 } StatusBoxItem;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125
18584
91fdd3e4892f We don't need dynamic things here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18565
diff changeset
126 static FinchBlist *ggblist;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
128 static void add_buddy(PurpleBuddy *buddy, FinchBlist *ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
129 static void add_contact(PurpleContact *contact, FinchBlist *ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
130 static void add_group(PurpleGroup *group, FinchBlist *ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
131 static void add_chat(PurpleChat *chat, FinchBlist *ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
132 static void add_node(PurpleBlistNode *node, FinchBlist *ggblist);
18001
55a90b3fb1a1 Fix for the bug Alver reported:
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17987
diff changeset
133 static void node_update(PurpleBuddyList *list, PurpleBlistNode *node);
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
134 #if 0
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
135 static gboolean is_contact_online(PurpleContact *contact);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
136 static gboolean is_group_online(PurpleGroup *group);
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
137 #endif
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 static void draw_tooltip(FinchBlist *ggblist);
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
139 static void tooltip_for_buddy(PurpleBuddy *buddy, GString *str, gboolean full);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 static gboolean remove_typing_cb(gpointer null);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 static void remove_peripherals(FinchBlist *ggblist);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
142 static const char * get_display_name(PurpleBlistNode *node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
143 static void savedstatus_changed(PurpleSavedStatus *now, PurpleSavedStatus *old);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
144 static void blist_show(PurpleBuddyList *list);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
145 static void update_node_display(PurpleBlistNode *buddy, FinchBlist *ggblist);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
146 static void update_buddy_display(PurpleBuddy *buddy, FinchBlist *ggblist);
29753
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
147 static gboolean account_autojoin_cb(PurpleConnection *pc, gpointer null);
17203
0d9fba04fc85 Re-show the add buddy request dialog if something went wrong. It's easy to lose the buddy who just added you otherwise.
Richard Nelson <wabz@pidgin.im>
parents: 17091
diff changeset
148 static void finch_request_add_buddy(PurpleAccount *account, const char *username, const char *grp, const char *alias);
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
149 static void menu_group_set_cb(GntMenuItem *item, gpointer null);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 /* Sort functions */
16483
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
152 static int blist_node_compare_position(PurpleBlistNode *n1, PurpleBlistNode *n2);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
153 static int blist_node_compare_text(PurpleBlistNode *n1, PurpleBlistNode *n2);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
154 static int blist_node_compare_status(PurpleBlistNode *n1, PurpleBlistNode *n2);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
155 static int blist_node_compare_log(PurpleBlistNode *n1, PurpleBlistNode *n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156
21691
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
157 static int color_available;
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
158 static int color_away;
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
159 static int color_offline;
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
160 static int color_idle;
3ed9b027479d Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents: 21560
diff changeset
161
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
162 /**
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
163 * Buddy List Manager functions.
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
164 */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
165
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
166 static gboolean default_can_add_node(PurpleBlistNode *node)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
167 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
168 gboolean offline = purple_prefs_get_bool(PREF_ROOT "/showoffline");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
169
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
170 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
171 PurpleBuddy *buddy = (PurpleBuddy*)node;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
172 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
173 if (!purple_buddy_get_contact(buddy))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
174 return FALSE; /* When a new buddy is added and show-offline is set */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
175 if (PURPLE_BUDDY_IS_ONLINE(buddy))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
176 return TRUE; /* The buddy is online */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
177 if (!purple_account_is_connected(purple_buddy_get_account(buddy)))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
178 return FALSE; /* The account is disconnected. Do not show */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
179 if (offline)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
180 return TRUE; /* We want to see offline buddies too */
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
181 if (fnode && fnode->signed_timer)
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
182 return TRUE; /* Show if the buddy just signed off */
22192
1e103e1b845f Pay attention to the 'show_offline' setting for the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22190
diff changeset
183 if (purple_blist_node_get_bool(node, "show_offline"))
1e103e1b845f Pay attention to the 'show_offline' setting for the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22190
diff changeset
184 return TRUE;
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
185 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
186 PurpleBlistNode *nd;
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
187 for (nd = purple_blist_node_get_first_child(node);
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
188 nd; nd = purple_blist_node_get_sibling_next(nd)) {
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
189 if (default_can_add_node(nd))
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
190 return TRUE;
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
191 }
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
192 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
193 PurpleChat *chat = (PurpleChat*)node;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
194 if (purple_account_is_connected(purple_chat_get_account(chat)))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
195 return TRUE; /* Show whenever the account is online */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
196 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
197 PurpleBlistNode *nd;
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
198 gboolean empty = purple_prefs_get_bool(PREF_ROOT "/emptygroups");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
199 if (empty)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
200 return TRUE; /* If we want to see empty groups, we can show any group */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
201
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
202 for (nd = purple_blist_node_get_first_child(node);
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
203 nd; nd = purple_blist_node_get_sibling_next(nd)) {
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
204 if (default_can_add_node(nd))
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
205 return TRUE;
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
206 }
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
207
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
208 if (ggblist && ggblist->new_group && g_list_find(ggblist->new_group, node))
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
209 return TRUE;
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
210 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
211
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
212 return FALSE;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
213 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
214
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
215 static gpointer default_find_parent(PurpleBlistNode *node)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
216 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
217 gpointer ret = NULL;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
218 switch (purple_blist_node_get_type(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
219 case PURPLE_BLIST_BUDDY_NODE:
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
220 case PURPLE_BLIST_CONTACT_NODE:
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
221 case PURPLE_BLIST_CHAT_NODE:
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
222 ret = purple_blist_node_get_parent(node);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
223 break;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
224 default:
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
225 break;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
226 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
227 if (ret)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
228 add_node(ret, ggblist);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
229 return ret;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
230 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
231
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
232 static gboolean default_create_tooltip(gpointer selected_row, GString **body, char **tool_title)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
233 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
234 GString *str;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
235 PurpleBlistNode *node = selected_row;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
236 int lastseen = 0;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
237 char *title;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
238
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
239 if (!node ||
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
240 purple_blist_node_get_type(node) == PURPLE_BLIST_OTHER_NODE)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
241 return FALSE;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
242
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
243 str = g_string_new("");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
244
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
245 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
246 PurpleBuddy *pr = purple_contact_get_priority_buddy((PurpleContact*)node);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
247 gboolean offline = !PURPLE_BUDDY_IS_ONLINE(pr);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
248 gboolean showoffline = purple_prefs_get_bool(PREF_ROOT "/showoffline");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
249 const char *name = purple_buddy_get_name(pr);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
250
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
251 title = g_strdup(name);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
252 tooltip_for_buddy(pr, str, TRUE);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
253 for (node = purple_blist_node_get_first_child(node); node; node = purple_blist_node_get_sibling_next(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
254 PurpleBuddy *buddy = (PurpleBuddy*)node;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
255 if (offline) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
256 int value = purple_blist_node_get_int(node, "last_seen");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
257 if (value > lastseen)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
258 lastseen = value;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
259 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
260 if (node == (PurpleBlistNode*)pr)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
261 continue;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
262 if (!purple_account_is_connected(purple_buddy_get_account(buddy)))
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
263 continue;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
264 if (!showoffline && !PURPLE_BUDDY_IS_ONLINE(buddy))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
265 continue;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
266 str = g_string_append(str, "\n----------\n");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
267 tooltip_for_buddy(buddy, str, FALSE);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
268 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
269 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
270 PurpleBuddy *buddy = (PurpleBuddy *)node;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
271 tooltip_for_buddy(buddy, str, TRUE);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
272 title = g_strdup(purple_buddy_get_name(buddy));
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
273 if (!PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
274 lastseen = purple_blist_node_get_int(node, "last_seen");
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
275 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
276 PurpleGroup *group = (PurpleGroup *)node;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
277
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
278 g_string_append_printf(str, _("Online: %d\nTotal: %d"),
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
279 purple_blist_get_group_online_count(group),
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
280 purple_blist_get_group_size(group, FALSE));
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
281
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
282 title = g_strdup(purple_group_get_name(group));
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
283 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
284 PurpleChat *chat = (PurpleChat *)node;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
285 PurpleAccount *account = purple_chat_get_account(chat);
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
286
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
287 g_string_append_printf(str, _("Account: %s (%s)"),
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
288 purple_account_get_username(account),
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
289 purple_account_get_protocol_name(account));
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
290
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
291 title = g_strdup(purple_chat_get_name(chat));
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
292 } else {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
293 g_string_free(str, TRUE);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
294 return FALSE;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
295 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
296
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
297 if (lastseen > 0) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
298 char *tmp = purple_str_seconds_to_string(time(NULL) - lastseen);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
299 g_string_append_printf(str, _("\nLast Seen: %s ago"), tmp);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
300 g_free(tmp);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
301 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
302
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
303 if (tool_title)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
304 *tool_title = title;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
305 else
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
306 g_free(title);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
307
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
308 if (body)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
309 *body = str;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
310 else
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
311 g_string_free(str, TRUE);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
312
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
313 return TRUE;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
314 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
315
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
316 static FinchBlistManager default_manager =
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
317 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
318 "default",
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
319 N_("Default"),
22190
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
320 NULL,
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
321 NULL,
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
322 default_can_add_node,
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
323 default_find_parent,
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
324 default_create_tooltip,
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
325 {NULL, NULL, NULL, NULL}
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
326 };
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
327 static GList *managers;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
328
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
329 static FinchBlistNode *
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
330 create_finch_blist_node(PurpleBlistNode *node, gpointer row)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
331 {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
332 FinchBlistNode *fnode = FINCH_GET_DATA(node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
333 if (!fnode) {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
334 fnode = g_new0(FinchBlistNode, 1);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
335 fnode->signed_timer = 0;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
336 FINCH_SET_DATA(node, fnode);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
337 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
338 fnode->row = row;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
339 return fnode;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
340 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
341
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
342 static void
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
343 reset_blist_node_ui_data(PurpleBlistNode *node)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
344 {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
345 FinchBlistNode *fnode = FINCH_GET_DATA(node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
346 if (fnode == NULL)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
347 return;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
348 if (fnode->signed_timer)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
349 purple_timeout_remove(fnode->signed_timer);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
350 g_free(fnode);
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
351 FINCH_SET_DATA(node, NULL);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
352 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
353
21695
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
354 static int
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
355 get_display_color(PurpleBlistNode *node)
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
356 {
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
357 PurpleBuddy *buddy;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
358 int color = 0;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
359
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
360 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
361 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
21695
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
362 if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
363 return 0;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
364
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
365 buddy = (PurpleBuddy*)node;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
366 if (purple_presence_is_idle(purple_buddy_get_presence(buddy))) {
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
367 color = color_idle;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
368 } else if (purple_presence_is_available(purple_buddy_get_presence(buddy))) {
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
369 color = color_available;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
370 } else if (purple_presence_is_online(purple_buddy_get_presence(buddy)) &&
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
371 !purple_presence_is_available(purple_buddy_get_presence(buddy))) {
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
372 color = color_away;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
373 } else if (!purple_presence_is_online(purple_buddy_get_presence(buddy))) {
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
374 color = color_offline;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
375 }
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
376
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
377 return color;
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
378 }
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
379
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
380 static GntTextFormatFlags
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
381 get_blist_node_flag(PurpleBlistNode *node)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
382 {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
383 GntTextFormatFlags flag = 0;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
384 FinchBlistNode *fnode = FINCH_GET_DATA(node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
385
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
386 if (ggblist->tagged && g_list_find(ggblist->tagged, node))
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
387 flag |= GNT_TEXT_FLAG_BOLD;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
388
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
389 if (fnode && fnode->signed_timer)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
390 flag |= GNT_TEXT_FLAG_BLINK;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
391 else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
392 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
393 fnode = FINCH_GET_DATA(node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
394 if (fnode && fnode->signed_timer)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
395 flag |= GNT_TEXT_FLAG_BLINK;
22786
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
396 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
397 /* If the node is collapsed, then check to see if any of the priority buddies of
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
398 * any of the contacts within this group recently signed on/off, and set the blink
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
399 * flag appropriately. */
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
400 /* XXX: Refs #5444 */
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
401 /* XXX: there's no way I can ask if the node is expanded or not? *sigh*
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
402 * API addition would be necessary */
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
403 #if 0
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
404 if (!gnt_tree_get_expanded(GNT_TREE(ggblist->tree), node)) {
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
405 for (node = purple_blist_node_get_first_child(node); node;
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
406 node = purple_blist_node_get_sibling_next(node)) {
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
407 PurpleBlistNode *pnode;
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
408 pnode = purple_contact_get_priority_buddy((PurpleContact*)node);
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
409 fnode = FINCH_GET_DATA(node);
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
410 if (fnode && fnode->signed_timer) {
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
411 flag |= GNT_TEXT_FLAG_BLINK;
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
412 break;
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
413 }
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
414 }
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
415 }
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
416 #endif
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
417 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
418
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
419 return flag;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
420 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
421
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
422 static void
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
423 blist_update_row_flags(PurpleBlistNode *node)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
424 {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
425 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), node, get_blist_node_flag(node));
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
426 gnt_tree_set_row_color(GNT_TREE(ggblist->tree), node, get_display_color(node));
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
427 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
428
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
429 #if 0
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 static gboolean
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
431 is_contact_online(PurpleContact *contact)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
433 PurpleBlistNode *node;
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
434 for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)contact)); node;
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
435 node = purple_blist_node_get_sibling_next(node)) {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
436 FinchBlistNode *fnode = FINCH_GET_DATA(node);
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
437 if (PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) ||
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
438 (fnode && fnode->signed_timer))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444 static gboolean
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
445 is_group_online(PurpleGroup *group)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
447 PurpleBlistNode *node;
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
448 for (node = purple_blist_node_get_first_child(((PurpleBlistNode*)group)); node;
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
449 node = purple_blist_node_get_sibling_next(node)) {
18490
095718d51209 Chats aren't shown if their account is offline, so a group of offline chats shouldn't be either
Richard Nelson <wabz@pidgin.im>
parents: 18442
diff changeset
450 if (PURPLE_BLIST_NODE_IS_CHAT(node) &&
095718d51209 Chats aren't shown if their account is offline, so a group of offline chats shouldn't be either
Richard Nelson <wabz@pidgin.im>
parents: 18442
diff changeset
451 purple_account_is_connected(((PurpleChat *)node)->account))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452 return TRUE;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
453 else if (is_contact_online((PurpleContact*)node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 }
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
458 #endif
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
461 new_node(PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
465 static void
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
466 add_node(PurpleBlistNode *node, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
468 if (FINCH_GET_DATA(node))
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
469 return;
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
470
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
471 if (!ggblist->manager->can_add_node(node))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
472 return;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
473
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
474 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
475 add_buddy((PurpleBuddy*)node, ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
476 else if (PURPLE_BLIST_NODE_IS_CONTACT(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
477 add_contact((PurpleContact*)node, ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
478 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
479 add_group((PurpleGroup*)node, ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
480 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
481 add_chat((PurpleChat *)node, ggblist);
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
482
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 draw_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
484 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
486 void finch_blist_manager_add_node(PurpleBlistNode *node)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
487 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
488 add_node(node, ggblist);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
489 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
490
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
492 remove_tooltip(FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 gnt_widget_destroy(ggblist->tooltip);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495 ggblist->tooltip = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 ggblist->tnode = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
500 node_remove(PurpleBuddyList *list, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501 {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
502 FinchBlist *ggblist = FINCH_GET_DATA(list);
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
503 PurpleBlistNode *parent;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
505 if (ggblist == NULL || FINCH_GET_DATA(node) == NULL)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
506 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
508 if (PURPLE_BLIST_NODE_IS_GROUP(node) && ggblist->new_group) {
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
509 ggblist->new_group = g_list_remove(ggblist->new_group, node);
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
510 }
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
511
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 gnt_tree_remove(GNT_TREE(ggblist->tree), node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
513 reset_blist_node_ui_data(node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514 if (ggblist->tagged)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
515 ggblist->tagged = g_list_remove(ggblist->tagged, node);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
517 parent = purple_blist_node_get_parent(node);
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
518 for (node = purple_blist_node_get_first_child(node); node;
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
519 node = purple_blist_node_get_sibling_next(node))
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
520 node_remove(list, node);
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
521
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
522 if (parent) {
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
523 if (!ggblist->manager->can_add_node(parent))
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
524 node_remove(list, parent);
18001
55a90b3fb1a1 Fix for the bug Alver reported:
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17987
diff changeset
525 else
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
526 node_update(list, parent);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
527 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
528
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 draw_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
530 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
532 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
533 node_update(PurpleBuddyList *list, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 /* It really looks like this should never happen ... but it does.
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536 This will at least emit a warning to the log when it
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537 happens, so maybe someone will figure it out. */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
538 g_return_if_fail(node != NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
540 if (FINCH_GET_DATA(list)== NULL)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
541 return; /* XXX: this is probably the place to auto-join chats */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
542
17987
1b6db70bdab2 Fix a crash exposed by nullprpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17804
diff changeset
543 if (ggblist->window == NULL)
1b6db70bdab2 Fix a crash exposed by nullprpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17804
diff changeset
544 return;
1b6db70bdab2 Fix a crash exposed by nullprpl.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17804
diff changeset
545
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
546 if (FINCH_GET_DATA(node)!= NULL) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
547 gnt_tree_change_text(GNT_TREE(ggblist->tree), node,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 0, get_display_name(node));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
549 gnt_tree_sort_row(GNT_TREE(ggblist->tree), node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
550 blist_update_row_flags(node);
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
551 if (gnt_tree_get_parent_key(GNT_TREE(ggblist->tree), node) !=
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
552 ggblist->manager->find_parent(node))
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
553 node_remove(list, node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
554 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
555
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
556 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
557 PurpleBuddy *buddy = (PurpleBuddy*)node;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
558 add_node((PurpleBlistNode*)buddy, FINCH_GET_DATA(list));
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
559 node_update(list, purple_blist_node_get_parent(node));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
560 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
561 add_node(node, FINCH_GET_DATA(list));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
562 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
563 if (FINCH_GET_DATA(node)== NULL) {
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
564 /* The core seems to expect the UI to add the buddies. */
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
565 for (node = purple_blist_node_get_first_child(node); node; node = purple_blist_node_get_sibling_next(node))
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
566 add_node(node, FINCH_GET_DATA(list));
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
567 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
568 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
569 if (!ggblist->manager->can_add_node(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570 node_remove(list, node);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
571 else
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
572 add_node(node, FINCH_GET_DATA(list));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
573 }
24001
e7d85f4fb3fc Update the tooltip if the status of the selected node changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23342
diff changeset
574 if (ggblist->tnode == node) {
e7d85f4fb3fc Update the tooltip if the status of the selected node changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23342
diff changeset
575 draw_tooltip(ggblist);
e7d85f4fb3fc Update the tooltip if the status of the selected node changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23342
diff changeset
576 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
577 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
580 new_list(PurpleBuddyList *list)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 if (ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 ggblist = g_new0(FinchBlist, 1);
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
586 FINCH_SET_DATA(list, ggblist);
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
587 ggblist->manager = finch_blist_manager_find(purple_prefs_get_string(PREF_ROOT "/grouping"));
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
588 if (!ggblist->manager)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
589 ggblist->manager = &default_manager;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591
27810
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
592 static void destroy_list(PurpleBuddyList *list)
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
593 {
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
594 if (ggblist == NULL)
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
595 return;
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
596
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
597 gnt_widget_destroy(ggblist->window);
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
598 g_free(ggblist);
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
599 ggblist = NULL;
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
600 }
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
601
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
602 static gboolean
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
603 remove_new_empty_group(gpointer data)
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
604 {
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
605 PurpleBuddyList *list;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
606
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
607 if (!ggblist)
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
608 return FALSE;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
609
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
610 list = purple_get_blist();
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
611 g_return_val_if_fail(list, FALSE);
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
612
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
613 ggblist->new_group_timeout = 0;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
614 while (ggblist->new_group) {
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
615 PurpleBlistNode *group = ggblist->new_group->data;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
616 ggblist->new_group = g_list_delete_link(ggblist->new_group, ggblist->new_group);
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
617 node_update(list, group);
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
618 }
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
619
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
620 return FALSE;
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
621 }
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
622
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
623 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
624 add_buddy_cb(void *data, PurpleRequestFields *allfields)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
626 const char *username = purple_request_fields_get_string(allfields, "screenname");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
627 const char *alias = purple_request_fields_get_string(allfields, "alias");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
628 const char *group = purple_request_fields_get_string(allfields, "group");
31403
68c6d980e35c Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31086
diff changeset
629 const char *invite = purple_request_fields_get_string(allfields, "invite");
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
630 PurpleAccount *account = purple_request_fields_get_account(allfields, "account");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
631 const char *error = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
632 PurpleGroup *grp;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
633 PurpleBuddy *buddy;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
635 if (!username)
22794
cc8903c59d6b Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents: 22786
diff changeset
636 error = _("You must provide a username for the buddy.");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637 else if (!group)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638 error = _("You must provide a group.");
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
639 else if (!account)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 error = _("You must select an account.");
16926
7e4a22162bb6 Show an error message when trying to add a buddy from an offline account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16925
diff changeset
641 else if (!purple_account_is_connected(account))
7e4a22162bb6 Show an error message when trying to add a buddy from an offline account.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16925
diff changeset
642 error = _("The selected account is not online.");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
644 if (error)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
645 {
17203
0d9fba04fc85 Re-show the add buddy request dialog if something went wrong. It's easy to lose the buddy who just added you otherwise.
Richard Nelson <wabz@pidgin.im>
parents: 17091
diff changeset
646 finch_request_add_buddy(account, username, group, alias);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
647 purple_notify_error(NULL, _("Error"), _("Error adding buddy"), error);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
651 grp = purple_find_group(group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
652 if (!grp)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
654 grp = purple_group_new(group);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
655 purple_blist_add_group(grp, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
656 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657
25172
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
658 /* XXX: Ask to merge if there's already a buddy with the same alias in the same group (#4553) */
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
659
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
660 if ((buddy = purple_find_buddy_in_group(account, username, grp)) == NULL)
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
661 {
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
662 buddy = purple_buddy_new(account, username, alias);
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
663 purple_blist_add_buddy(buddy, NULL, grp, NULL);
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
664 }
125cac3e24ee The Add Buddy dialog should not blindly create a duplicate buddy in a group
Paul Aurich <paul@darkrain42.org>
parents: 24537
diff changeset
665
31403
68c6d980e35c Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31086
diff changeset
666 purple_account_add_buddy_with_invite(account, buddy, invite);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
667 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
668
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
669 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
670 finch_request_add_buddy(PurpleAccount *account, const char *username, const char *grp, const char *alias)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
672 PurpleRequestFields *fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
673 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
674 PurpleRequestField *field;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
676 purple_request_fields_add_group(fields, group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677
22794
cc8903c59d6b Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents: 22786
diff changeset
678 field = purple_request_field_string_new("screenname", _("Username"), username, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
679 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
680
22307
d270b6aebabc Right-clicking on a widget should trigger the context-menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22251
diff changeset
681 field = purple_request_field_string_new("alias", _("Alias (optional)"), alias, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
682 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
683
31403
68c6d980e35c Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31086
diff changeset
684 field = purple_request_field_string_new("invite", _("Invite message (optional)"), NULL, FALSE);
68c6d980e35c Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31086
diff changeset
685 purple_request_field_group_add_field(group, field);
68c6d980e35c Show invite message entry in Finch's Add Buddy dialog.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31086
diff changeset
686
22307
d270b6aebabc Right-clicking on a widget should trigger the context-menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22251
diff changeset
687 field = purple_request_field_string_new("group", _("Add in group"), grp, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
688 purple_request_field_group_add_field(group, field);
15843
e74c2488448b Group autocomplete for buddy adding
Richard Nelson <wabz@pidgin.im>
parents: 15822
diff changeset
689 purple_request_field_set_type_hint(field, "group");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
690
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
691 field = purple_request_field_account_new("account", _("Account"), NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
692 purple_request_field_account_set_show_all(field, FALSE);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
693 if (account)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
694 purple_request_field_account_set_value(field, account);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
695 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
696
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
697 purple_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."),
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
698 fields,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
699 _("Add"), G_CALLBACK(add_buddy_cb),
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
700 _("Cancel"), NULL,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
701 account, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
702 NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
703 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
704
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
705 static void
22838
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
706 join_chat(PurpleChat *chat)
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
707 {
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
708 PurpleAccount *account = purple_chat_get_account(chat);
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
709 const char *name;
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
710 PurpleConversation *conv;
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
711 const char *alias;
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
712
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
713 /* This hack here is to work around the fact that there's no good way of
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
714 * getting the actual name of a chat. I don't understand why we return
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
715 * the alias for a chat when all we want is the name. */
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
716 alias = chat->alias;
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
717 chat->alias = NULL;
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
718 name = purple_chat_get_name(chat);
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
719 conv = purple_find_conversation_with_account(
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
720 PURPLE_CONV_TYPE_CHAT, name, account);
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
721 chat->alias = (char *)alias;
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
722
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
723 if (!conv || purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) {
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
724 serv_join_chat(purple_account_get_connection(account),
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
725 purple_chat_get_components(chat));
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
726 } else if (conv) {
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
727 purple_conversation_present(conv);
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
728 }
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
729 }
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
730
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
731 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
732 add_chat_cb(void *data, PurpleRequestFields *allfields)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
733 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
734 PurpleAccount *account;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
735 const char *alias, *name, *group;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
736 PurpleChat *chat;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
737 PurpleGroup *grp;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
738 GHashTable *hash = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
739 PurpleConnection *gc;
18586
4fda1fc6d7cf Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18585
diff changeset
740 gboolean autojoin;
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
741 PurplePluginProtocolInfo *info;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
742
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
743 account = purple_request_fields_get_account(allfields, "account");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
744 name = purple_request_fields_get_string(allfields, "name");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
745 alias = purple_request_fields_get_string(allfields, "alias");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
746 group = purple_request_fields_get_string(allfields, "group");
18586
4fda1fc6d7cf Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18585
diff changeset
747 autojoin = purple_request_fields_get_bool(allfields, "autojoin");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
748
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
749 if (!purple_account_is_connected(account) || !name || !*name)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
750 return;
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
751
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
752 if (!group || !*group)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
753 group = _("Chats");
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
754
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
755 gc = purple_account_get_connection(account);
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
756 info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
757 if (info->chat_info_defaults != NULL)
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
758 hash = info->chat_info_defaults(gc, name);
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
759
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
760 chat = purple_chat_new(account, name, hash);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
761
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
762 if (chat != NULL) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
763 if ((grp = purple_find_group(group)) == NULL) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
764 grp = purple_group_new(group);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
765 purple_blist_add_group(grp, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
766 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
767 purple_blist_add_chat(chat, grp, NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
768 purple_blist_alias_chat(chat, alias);
18586
4fda1fc6d7cf Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18585
diff changeset
769 purple_blist_node_set_bool((PurpleBlistNode*)chat, "gnt-autojoin", autojoin);
22838
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
770 if (autojoin) {
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
771 join_chat(chat);
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
772 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
773 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
774 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
775
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
776 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
777 finch_request_add_chat(PurpleAccount *account, PurpleGroup *grp, const char *alias, const char *name)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
778 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
779 PurpleRequestFields *fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
780 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
781 PurpleRequestField *field;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
782
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
783 purple_request_fields_add_group(fields, group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
784
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
785 field = purple_request_field_account_new("account", _("Account"), NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
786 purple_request_field_account_set_show_all(field, FALSE);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
787 if (account)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
788 purple_request_field_account_set_value(field, account);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
789 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
790
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
791 field = purple_request_field_string_new("name", _("Name"), name, FALSE);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
792 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
793
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
794 field = purple_request_field_string_new("alias", _("Alias"), alias, FALSE);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
795 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
796
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
797 field = purple_request_field_string_new("group", _("Group"), grp ? purple_group_get_name(grp) : NULL, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
798 purple_request_field_group_add_field(group, field);
22836
08befc594de4 Setup tab-completion for groups in the 'Add Chat' dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22794
diff changeset
799 purple_request_field_set_type_hint(field, "group");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
800
18586
4fda1fc6d7cf Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18585
diff changeset
801 field = purple_request_field_bool_new("autojoin", _("Auto-join"), FALSE);
4fda1fc6d7cf Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18585
diff changeset
802 purple_request_field_group_add_field(group, field);
4fda1fc6d7cf Add an 'auto-join' checkbox in the 'Add Chat' dialog, thanks to fmoo's
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18585
diff changeset
803
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
804 purple_request_fields(NULL, _("Add Chat"), NULL,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
805 _("You can edit more information from the context menu later."),
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
806 fields, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
807 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
808 NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
809 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
810
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
811 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
812 add_group_cb(gpointer null, const char *group)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
813 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
814 PurpleGroup *grp;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
815
24238
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
816 if (!group || !*group) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
817 purple_notify_error(NULL, _("Error"), _("Error adding group"),
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
818 _("You must give a name for the group to add."));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
819 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
820 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
821
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
822 grp = purple_find_group(group);
24238
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
823 if (!grp) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
824 grp = purple_group_new(group);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
825 purple_blist_add_group(grp, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
826 }
24238
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
827
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
828 if (!ggblist)
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
829 return;
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
830
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
831 /* Treat the group as a new group even if it had existed before. This should
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
832 * make things easier to add buddies to empty groups (new or old) without having
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
833 * to turn on 'show empty groups' setting */
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
834 ggblist->new_group = g_list_prepend(ggblist->new_group, grp);
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
835 if (ggblist->new_group_timeout)
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
836 purple_timeout_remove(ggblist->new_group_timeout);
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
837 ggblist->new_group_timeout = purple_timeout_add_seconds(SHOW_EMPTY_GROUP_TIMEOUT,
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
838 remove_new_empty_group, NULL);
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
839
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
840 /* Select the group */
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
841 if (ggblist->tree) {
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
842 FinchBlistNode *fnode = FINCH_GET_DATA((PurpleBlistNode*)grp);
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
843 if (!fnode)
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
844 add_node((PurpleBlistNode*)grp, ggblist);
c8ed49367d86 Instead of showing error message when trying to interactively add an
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24215
diff changeset
845 gnt_tree_set_selected(GNT_TREE(ggblist->tree), grp);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
846 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
847 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
848
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
849 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
850 finch_request_add_group(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
851 {
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
852 purple_request_input(NULL, _("Add Group"), NULL, _("Enter the name of the group"),
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
853 NULL, FALSE, FALSE, NULL,
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
854 _("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
855 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
856 NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
857 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
858
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
859 static PurpleBlistUiOps blist_ui_ops =
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
860 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
861 new_list,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
862 new_node,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
863 blist_show,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
864 node_update,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
865 node_remove,
27810
13f555d07a3f Fix a crash at shutdown in Finch.
Paul Aurich <paul@darkrain42.org>
parents: 27587
diff changeset
866 destroy_list,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
867 NULL,
17091
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
868 finch_request_add_buddy,
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
869 finch_request_add_chat,
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
870 finch_request_add_group,
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
871 NULL,
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
872 NULL,
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
873 NULL,
46f2f86e08e4 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@wiktel.com>
parents: 16958
diff changeset
874 NULL
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
875 };
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
876
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
877 static gpointer
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
878 finch_blist_get_handle(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
879 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
880 static int handle;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
881
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
882 return &handle;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
883 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
884
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
885 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
886 add_group(PurpleGroup *group, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
887 {
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
888 gpointer parent;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
889 PurpleBlistNode *node = (PurpleBlistNode *)group;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
890 if (FINCH_GET_DATA(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
891 return;
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
892 parent = ggblist->manager->find_parent((PurpleBlistNode*)group);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
893 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), group,
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
894 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
895 parent, NULL));
16105
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
896 gnt_tree_set_expanded(GNT_TREE(ggblist->tree), node,
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
897 !purple_blist_node_get_bool(node, "collapsed"));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
898 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
899
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
900 static const char *
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
901 get_display_name(PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
902 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
903 static char text[2096];
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
904 char status[8] = " ";
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
905 const char *name = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
906
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
907 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
908 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); /* XXX: this can return NULL?! */
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
909
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
910 if (node == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
911 return NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
912
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
913 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
914 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
915 PurpleBuddy *buddy = (PurpleBuddy *)node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
916 PurpleStatusPrimitive prim;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
917 PurplePresence *presence;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
918 PurpleStatus *now;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
919 gboolean ascii = gnt_ascii_only();
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
920
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
921 presence = purple_buddy_get_presence(buddy);
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
922 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE))
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
923 strncpy(status, ascii ? ":" : "☎", sizeof(status) - 1);
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
924 else {
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
925 now = purple_presence_get_active_status(presence);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
926
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
927 prim = purple_status_type_get_primitive(purple_status_get_type(now));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
928
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
929 switch(prim) {
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
930 case PURPLE_STATUS_OFFLINE:
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
931 strncpy(status, ascii ? "x" : "⊗", sizeof(status) - 1);
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
932 break;
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
933 case PURPLE_STATUS_AVAILABLE:
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
934 strncpy(status, ascii ? "o" : "â—¯", sizeof(status) - 1);
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
935 break;
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
936 default:
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
937 strncpy(status, ascii ? "." : "⊖", sizeof(status) - 1);
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
938 break;
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
939 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
940 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
941 name = purple_buddy_get_alias(buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
942 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
943 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
944 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
945 PurpleChat *chat = (PurpleChat*)node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
946 name = purple_chat_get_name(chat);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
947
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
948 strncpy(status, "~", sizeof(status) - 1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
949 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
950 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
951 return purple_group_get_name((PurpleGroup*)node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
952
25568
e0c8f689f60c applied changes from aa7ce93329f5ccbe74640a92b6656ae402d8eea8
Ethan Blanton <elb@pidgin.im>
parents: 24537
diff changeset
953 g_snprintf(text, sizeof(text) - 1, "%s %s", status, name);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
954
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
955 return text;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
956 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
957
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
958 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
959 add_chat(PurpleChat *chat, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
960 {
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
961 gpointer parent;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
962 PurpleBlistNode *node = (PurpleBlistNode *)chat;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
963 if (FINCH_GET_DATA(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
964 return;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
965 if (!purple_account_is_connected(purple_chat_get_account(chat)))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
966 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
967
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
968 parent = ggblist->manager->find_parent((PurpleBlistNode*)chat);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
969
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
970 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), chat,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
971 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
972 parent, NULL));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
973 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
974
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
975 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
976 add_contact(PurpleContact *contact, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
977 {
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
978 gpointer parent;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
979 PurpleBlistNode *node = (PurpleBlistNode*)contact;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
980 const char *name;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
981
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
982 if (FINCH_GET_DATA(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
983 return;
21695
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
984
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
985 name = get_display_name(node);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
986 if (name == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
987 return;
21695
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
988
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
989 parent = ggblist->manager->find_parent((PurpleBlistNode*)contact);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
990
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
991 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), contact,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
992 gnt_tree_create_row(GNT_TREE(ggblist->tree), name),
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
993 parent, NULL));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
994
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
995 gnt_tree_set_expanded(GNT_TREE(ggblist->tree), contact, FALSE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
996 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
997
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
998 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
999 add_buddy(PurpleBuddy *buddy, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1000 {
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1001 gpointer parent;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1002 PurpleBlistNode *node = (PurpleBlistNode *)buddy;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1003 PurpleContact *contact;
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1004
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
1005 if (FINCH_GET_DATA(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1006 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1007
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1008 contact = purple_buddy_get_contact(buddy);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1009 parent = ggblist->manager->find_parent((PurpleBlistNode*)buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1010
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1011 create_finch_blist_node(node, gnt_tree_add_row_after(GNT_TREE(ggblist->tree), buddy,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1012 gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)),
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1013 parent, NULL));
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1014
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1015 blist_update_row_flags((PurpleBlistNode*)buddy);
21695
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
1016 if (buddy == purple_contact_get_priority_buddy(contact))
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1017 blist_update_row_flags((PurpleBlistNode*)contact);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1018 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1019
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1020 #if 0
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1021 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1022 buddy_signed_on(PurpleBuddy *buddy, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1023 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1024 add_node((PurpleBlistNode*)buddy, ggblist);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1025 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1026
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1027 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1028 buddy_signed_off(PurpleBuddy *buddy, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1029 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1030 node_remove(purple_get_blist(), (PurpleBlistNode*)buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1031 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1032 #endif
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1033
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1034 PurpleBlistUiOps *finch_blist_get_ui_ops()
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1035 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1036 return &blist_ui_ops;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1037 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1038
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1039 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1040 selection_activate(GntWidget *widget, FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1041 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1042 GntTree *tree = GNT_TREE(ggblist->tree);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1043 PurpleBlistNode *node = gnt_tree_get_selection_data(tree);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1044
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1045 if (!node)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1046 return;
22838
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
1047
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1048 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1049 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1050
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1051 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1052 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1053 PurpleBuddy *buddy = (PurpleBuddy *)node;
18071
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1054 PurpleConversation *conv;
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1055 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1056 purple_buddy_get_name(buddy),
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1057 purple_buddy_get_account(buddy));
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1058 if (!conv) {
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1059 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1060 purple_buddy_get_account(buddy),
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1061 purple_buddy_get_name(buddy));
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1062 } else {
31973
49a33bd1baf1 Use the new accessor functions.
andrew.victor@mxit.com
parents: 31904
diff changeset
1063 FinchConv *ggconv = FINCH_CONV(conv);
18071
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1064 gnt_window_present(ggconv->window);
bb9cd8dfc61c present existing conversation window if one exists
Richard Nelson <wabz@pidgin.im>
parents: 18069
diff changeset
1065 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066 finch_conversation_set_active(conv);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1067 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1068 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1069 {
22838
2d10cd28aa57 Check to see if we are already in a room before attempting to join. If
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22836
diff changeset
1070 join_chat((PurpleChat*)node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1071 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1072 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1073
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1074 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1075 context_menu_callback(GntMenuItem *item, gpointer data)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1076 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1077 PurpleMenuAction *action = data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1078 PurpleBlistNode *node = ggblist->cnode;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1079 if (action) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1080 void (*callback)(PurpleBlistNode *, gpointer);
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1081 callback = (void (*)(PurpleBlistNode *, gpointer))
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1082 purple_menu_action_get_callback(action);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1083 if (callback)
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1084 callback(node, purple_menu_action_get_data(action));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1085 else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1086 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1087 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1088 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1089
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1090 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1091 gnt_append_menu_action(GntMenu *menu, PurpleMenuAction *action, gpointer parent)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1092 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1093 GList *list;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1094 GntMenuItem *item;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1095
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1096 if (action == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1097 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1098
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1099 item = gnt_menuitem_new(purple_menu_action_get_label(action));
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1100 if (purple_menu_action_get_callback(action))
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
1101 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), context_menu_callback, action);
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
1102 gnt_menu_add_item(menu, GNT_MENU_ITEM(item));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1103
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1104 list = purple_menu_action_get_children(action);
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1105
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1106 if (list) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1107 GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1108 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1109 for (; list; list = list->next)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1110 gnt_append_menu_action(GNT_MENU(sub), list->data, action);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1111 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1112 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1114 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1115 append_proto_menu(GntMenu *menu, PurpleConnection *gc, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1116 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1117 GList *list;
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
1118 PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1119
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120 if(!prpl_info || !prpl_info->blist_node_menu)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1121 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1122
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1123 for(list = prpl_info->blist_node_menu(node); list;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1124 list = g_list_delete_link(list, list))
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1125 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1126 PurpleMenuAction *act = (PurpleMenuAction *) list->data;
29776
53dd827e6bb2 Fix a crash caused by context menus for sametime buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 29753
diff changeset
1127 if (!act)
53dd827e6bb2 Fix a crash caused by context menus for sametime buddies.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 29753
diff changeset
1128 continue;
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1129 purple_menu_action_set_data(act, node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1130 gnt_append_menu_action(menu, act, NULL);
28606
a5ddf6a99bfa Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28337
diff changeset
1131 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
a5ddf6a99bfa Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28337
diff changeset
1132 G_CALLBACK(purple_menu_action_free), act);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1133 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1134 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1135
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1136 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1137 add_custom_action(GntMenu *menu, const char *label, PurpleCallback callback,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1138 gpointer data)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1139 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1140 PurpleMenuAction *action = purple_menu_action_new(label, callback, data, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1141 gnt_append_menu_action(menu, action, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1142 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1143 G_CALLBACK(purple_menu_action_free), action);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1144 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1145
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1146 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1147 chat_components_edit_ok(PurpleChat *chat, PurpleRequestFields *allfields)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1148 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1149 GList *groups, *fields;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1150
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1151 for (groups = purple_request_fields_get_groups(allfields); groups; groups = groups->next) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1152 fields = purple_request_field_group_get_fields(groups->data);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1153 for (; fields; fields = fields->next) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1154 PurpleRequestField *field = fields->data;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1155 const char *id;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1156 char *val;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1157
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1158 id = purple_request_field_get_id(field);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1159 if (purple_request_field_get_type(field) == PURPLE_REQUEST_FIELD_INTEGER)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1160 val = g_strdup_printf("%d", purple_request_field_int_get_value(field));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1161 else
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1162 val = g_strdup(purple_request_field_string_get_value(field));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1163
22786
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1164 if (!val) {
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1165 g_hash_table_remove(purple_chat_get_components(chat), id);
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1166 } else {
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1167 g_hash_table_replace(purple_chat_get_components(chat), g_strdup(id), val); /* val should not be free'd */
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1168 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1169 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1170 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1171 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1172
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1173 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1174 chat_components_edit(PurpleBlistNode *selected, PurpleChat *chat)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1175 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1176 PurpleRequestFields *fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1177 PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1178 PurpleRequestField *field;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1179 GList *parts, *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1180 struct proto_chat_entry *pce;
22213
16ff37f64e29 Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22212
diff changeset
1181 PurpleConnection *gc;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1182
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1183 purple_request_fields_add_group(fields, group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1184
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1185 gc = purple_account_get_connection(purple_chat_get_account(chat));
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
1186 parts = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->chat_info(gc);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1187
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1188 for (iter = parts; iter; iter = iter->next) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1189 pce = iter->data;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1190 if (pce->is_int) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1191 int val;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1192 const char *str = g_hash_table_lookup(purple_chat_get_components(chat), pce->identifier);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1193 if (!str || sscanf(str, "%d", &val) != 1)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1194 val = pce->min;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1195 field = purple_request_field_int_new(pce->identifier, pce->label, val);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1196 } else {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1197 field = purple_request_field_string_new(pce->identifier, pce->label,
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1198 g_hash_table_lookup(purple_chat_get_components(chat), pce->identifier), FALSE);
22786
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1199 if (pce->secret)
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1200 purple_request_field_string_set_masked(field, TRUE);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1201 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1202
22786
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1203 if (pce->required)
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1204 purple_request_field_set_required(field, TRUE);
dd8cdf1d8b19 Fine tune the edit-settings dialog (e.g., mark fields as masked or
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22474
diff changeset
1205
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1206 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1207 g_free(pce);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1208 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1209
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1210 g_list_free(parts);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1211
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1212 purple_request_fields(NULL, _("Edit Chat"), NULL, _("Please Update the necessary fields."),
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1213 fields, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1214 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1215 chat);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1216 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1217
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1218 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1219 autojoin_toggled(GntMenuItem *item, gpointer data)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1220 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1221 PurpleMenuAction *action = data;
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1222 purple_blist_node_set_bool(purple_menu_action_get_data(action), "gnt-autojoin",
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
1223 gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1224 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1225
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1226 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1227 create_chat_menu(GntMenu *menu, PurpleChat *chat)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1228 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1229 PurpleMenuAction *action = purple_menu_action_new(_("Auto-join"), NULL, chat, NULL);
32005
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1230 GntMenuItem *check = gnt_menuitem_check_new(
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 31973
diff changeset
1231 purple_menu_action_get_label(action));
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
1232 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(check),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1233 purple_blist_node_get_bool((PurpleBlistNode*)chat, "gnt-autojoin"));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1234 gnt_menu_add_item(menu, check);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1235 gnt_menuitem_set_callback(check, autojoin_toggled, action);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1236 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1237 G_CALLBACK(purple_menu_action_free), action);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1238
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1239 add_custom_action(menu, _("Edit Settings"), (PurpleCallback)chat_components_edit, chat);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1240 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1241
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1242 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1243 finch_add_buddy(PurpleBlistNode *selected, PurpleGroup *grp)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1244 {
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
1245 purple_blist_request_add_buddy(NULL, NULL, grp ? purple_group_get_name(grp) : NULL, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1246 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1247
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1248 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1249 finch_add_group(PurpleBlistNode *selected, PurpleGroup *grp)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1250 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1251 purple_blist_request_add_group();
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1252 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1253
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1254 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1255 finch_add_chat(PurpleBlistNode *selected, PurpleGroup *grp)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1256 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1257 purple_blist_request_add_chat(NULL, grp, NULL, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1258 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1259
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1260 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1261 create_group_menu(GntMenu *menu, PurpleGroup *group)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1262 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1263 add_custom_action(menu, _("Add Buddy"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1264 PURPLE_CALLBACK(finch_add_buddy), group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1265 add_custom_action(menu, _("Add Chat"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1266 PURPLE_CALLBACK(finch_add_chat), group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1267 add_custom_action(menu, _("Add Group"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1268 PURPLE_CALLBACK(finch_add_group), group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1269 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1270
17804
464840043c66 Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17756
diff changeset
1271 gpointer finch_retrieve_user_info(PurpleConnection *conn, const char *name)
17750
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1272 {
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1273 PurpleNotifyUserInfo *info = purple_notify_user_info_new();
17804
464840043c66 Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17756
diff changeset
1274 gpointer uihandle;
31904
3322201b446f I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <mark@kingant.net>
parents: 31403
diff changeset
1275 purple_notify_user_info_add_pair_plaintext(info, _("Information"), _("Retrieving..."));
17804
464840043c66 Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17756
diff changeset
1276 uihandle = purple_notify_userinfo(conn, name, info, NULL, NULL);
17750
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1277 purple_notify_user_info_destroy(info);
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1278
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1279 serv_get_info(conn, name);
17804
464840043c66 Show information about the user requesting authorization.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17756
diff changeset
1280 return uihandle;
17750
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1281 }
319bcb73eb4e Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17203
diff changeset
1282
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1283 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1284 finch_blist_get_buddy_info_cb(PurpleBlistNode *selected, PurpleBuddy *buddy)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1285 {
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1286 finch_retrieve_user_info(purple_account_get_connection(purple_buddy_get_account(buddy)), purple_buddy_get_name(buddy));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1287 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1288
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1289 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1290 finch_blist_menu_send_file_cb(PurpleBlistNode *selected, PurpleBuddy *buddy)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1291 {
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1292 serv_send_file(purple_account_get_connection(purple_buddy_get_account(buddy)), purple_buddy_get_name(buddy), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1293 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1294
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1295 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1296 finch_blist_pounce_node_cb(PurpleBlistNode *selected, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1297 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1298 PurpleBuddy *b;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1299 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1300 b = purple_contact_get_priority_buddy((PurpleContact *)node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1301 else
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1302 b = (PurpleBuddy *)node;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1303 finch_pounce_editor_show(purple_buddy_get_account(b), purple_buddy_get_name(b), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1304 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1305
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1306 static void
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1307 toggle_block_buddy(GntMenuItem *item, gpointer buddy)
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1308 {
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1309 gboolean block = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1310 PurpleAccount *account = purple_buddy_get_account(buddy);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1311 const char *name = purple_buddy_get_name(buddy);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1312
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1313 block ? purple_privacy_deny(account, name, FALSE, FALSE) :
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1314 purple_privacy_allow(account, name, FALSE, FALSE);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1315 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1316
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1317 static void
24285
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1318 toggle_show_offline(GntMenuItem *item, gpointer buddy)
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1319 {
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1320 purple_blist_node_set_bool(buddy, "show_offline",
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1321 !purple_blist_node_get_bool(buddy, "show_offline"));
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1322 if (!ggblist->manager->can_add_node(buddy))
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1323 node_remove(purple_get_blist(), buddy);
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1324 else
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1325 node_update(purple_get_blist(), buddy);
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1326 }
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1327
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1328 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1329 create_buddy_menu(GntMenu *menu, PurpleBuddy *buddy)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1330 {
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1331 PurpleAccount *account;
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1332 gboolean permitted;
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1333 GntMenuItem *item;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1334 PurplePluginProtocolInfo *prpl_info;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1335 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
22213
16ff37f64e29 Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22212
diff changeset
1336
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
1337 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1338 if (prpl_info && prpl_info->get_info)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1339 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1340 add_custom_action(menu, _("Get Info"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1341 PURPLE_CALLBACK(finch_blist_get_buddy_info_cb), buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1342 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1343
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1344 add_custom_action(menu, _("Add Buddy Pounce"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1345 PURPLE_CALLBACK(finch_blist_pounce_node_cb), buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1346
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1347 if (prpl_info && prpl_info->send_file)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1348 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1349 if (!prpl_info->can_receive_file ||
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1350 prpl_info->can_receive_file(gc, purple_buddy_get_name(buddy)))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1351 add_custom_action(menu, _("Send File"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1352 PURPLE_CALLBACK(finch_blist_menu_send_file_cb), buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1353 }
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1354
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1355 account = purple_buddy_get_account(buddy);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1356 permitted = purple_privacy_check(account, purple_buddy_get_name(buddy));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1357
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1358 item = gnt_menuitem_check_new(_("Blocked"));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1359 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), !permitted);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1360 gnt_menuitem_set_callback(item, toggle_block_buddy, buddy);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1361 gnt_menu_add_item(menu, item);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
1362
24285
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1363 item = gnt_menuitem_check_new(_("Show when offline"));
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1364 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), purple_blist_node_get_bool((PurpleBlistNode*)buddy, "show_offline"));
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1365 gnt_menuitem_set_callback(item, toggle_show_offline, buddy);
a4a7084ee09d Show when offline (because the plugin doesn't work no more).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24238
diff changeset
1366 gnt_menu_add_item(menu, item);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1367
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1368 /* Protocol actions */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1369 append_proto_menu(menu,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1370 purple_account_get_connection(purple_buddy_get_account(buddy)),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1371 (PurpleBlistNode*)buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1372 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1373
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1374 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1375 append_extended_menu(GntMenu *menu, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1376 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1377 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1378
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1379 for (iter = purple_blist_node_get_extended_menu(node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1380 iter; iter = g_list_delete_link(iter, iter))
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1381 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1382 gnt_append_menu_action(menu, iter->data, NULL);
28606
a5ddf6a99bfa Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28337
diff changeset
1383 g_signal_connect_swapped(G_OBJECT(menu), "destroy",
a5ddf6a99bfa Destroy the menu-actions created by plugins for the context menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28337
diff changeset
1384 G_CALLBACK(purple_menu_action_free), iter->data);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1385 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1386 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1387
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1388 /* Xerox'd from gtkdialogs.c:purple_gtkdialogs_remove_contact_cb */
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1389 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1390 remove_contact(PurpleContact *contact)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1391 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1392 PurpleBlistNode *bnode, *cnode;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1393 PurpleGroup *group;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1394
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1395 cnode = (PurpleBlistNode *)contact;
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1396 group = (PurpleGroup*)purple_blist_node_get_parent(cnode);
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1397 for (bnode = purple_blist_node_get_first_child(cnode); bnode; bnode = purple_blist_node_get_sibling_next(bnode)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1398 PurpleBuddy *buddy = (PurpleBuddy*)bnode;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1399 PurpleAccount *account = purple_buddy_get_account(buddy);
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1400 if (purple_account_is_connected(account))
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1401 purple_account_remove_buddy(account, buddy, group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1402 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1403 purple_blist_remove_contact(contact);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1404 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1405
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1406 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1407 rename_blist_node(PurpleBlistNode *node, const char *newname)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1408 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1409 const char *name = newname;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1410 if (name && !*name)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1411 name = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1412
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1413 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1414 PurpleContact *contact = (PurpleContact*)node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1415 PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1416 purple_blist_alias_contact(contact, name);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1417 purple_blist_alias_buddy(buddy, name);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1418 serv_alias_buddy(buddy);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1419 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1420 purple_blist_alias_buddy((PurpleBuddy*)node, name);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1421 serv_alias_buddy((PurpleBuddy*)node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1422 } else if (PURPLE_BLIST_NODE_IS_CHAT(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1423 purple_blist_alias_chat((PurpleChat*)node, name);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1424 else if (PURPLE_BLIST_NODE_IS_GROUP(node) && (name != NULL))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1425 purple_blist_rename_group((PurpleGroup*)node, name);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1426 else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1427 g_return_if_reached();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1428 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1429
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1430 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1431 finch_blist_rename_node_cb(PurpleBlistNode *selected, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1432 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1433 const char *name = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1434 char *prompt;
16276
31dad9806e9d Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16194
diff changeset
1435 const char *text;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1436
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1437 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1438 name = purple_contact_get_alias((PurpleContact*)node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1439 else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1440 name = purple_buddy_get_contact_alias((PurpleBuddy*)node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1441 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1442 name = purple_chat_get_name((PurpleChat*)node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1443 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
1444 name = purple_group_get_name((PurpleGroup*)node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1445 else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1446 g_return_if_reached();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1447
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1448 prompt = g_strdup_printf(_("Please enter the new name for %s"), name);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1449
16958
1a336cfc410e Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16926
diff changeset
1450 text = PURPLE_BLIST_NODE_IS_GROUP(node) ? _("Rename") : _("Set Alias");
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1451 purple_request_input(node, text, prompt, _("Enter empty string to reset the name."),
16276
31dad9806e9d Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16194
diff changeset
1452 name, FALSE, FALSE, NULL, text, G_CALLBACK(rename_blist_node),
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1453 _("Cancel"), NULL,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1454 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1455 node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1456
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1457 g_free(prompt);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1458 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1459
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1460
22356
561729870929 Fix showing a contact's log, and don't access struct internals
Richard Nelson <wabz@pidgin.im>
parents: 22307
diff changeset
1461 static void showlog_cb(PurpleBlistNode *sel, PurpleBlistNode *node)
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1462 {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1463 PurpleLogType type;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1464 PurpleAccount *account;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1465 char *name = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1466
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1467 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1468 PurpleBuddy *b = (PurpleBuddy*) node;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1469 type = PURPLE_LOG_IM;
25804
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
1470 name = g_strdup(purple_buddy_get_name(b));
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
1471 account = purple_buddy_get_account(b);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1472 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1473 PurpleChat *c = (PurpleChat*) node;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1474 PurplePluginProtocolInfo *prpl_info = NULL;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1475 type = PURPLE_LOG_CHAT;
25804
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
1476 account = purple_chat_get_account(c);
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1477 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1478 if (prpl_info && prpl_info->get_chat_name) {
25804
53c27ca1bb71 Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
1479 name = prpl_info->get_chat_name(purple_chat_get_components(c));
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1480 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1481 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1482 finch_log_show_contact((PurpleContact *)node);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1483 return;
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1484 } else {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1485 /* This callback should not have been registered for a node
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1486 * that doesn't match the type of one of the blocks above. */
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1487 g_return_if_reached();
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1488 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1489
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1490 if (name && account) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1491 finch_log_show(type, name, account);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1492 g_free(name);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1493 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1494 }
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1495
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1496
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1497 /* Xeroxed from gtkdialogs.c:purple_gtkdialogs_remove_group_cb*/
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1498 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1499 remove_group(PurpleGroup *group)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1500 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1501 PurpleBlistNode *cnode, *bnode;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1502
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1503 cnode = purple_blist_node_get_first_child(((PurpleBlistNode*)group));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1504
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1505 while (cnode) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1506 if (PURPLE_BLIST_NODE_IS_CONTACT(cnode)) {
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1507 bnode = purple_blist_node_get_first_child(cnode);
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1508 cnode = purple_blist_node_get_sibling_next(cnode);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1509 while (bnode) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1510 PurpleBuddy *buddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1511 if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) {
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1512 PurpleAccount *account;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1513 buddy = (PurpleBuddy*)bnode;
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1514 bnode = purple_blist_node_get_sibling_next(bnode);
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1515 account = purple_buddy_get_account(buddy);
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1516 if (purple_account_is_connected(account)) {
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1517 purple_account_remove_buddy(account, buddy, group);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1518 purple_blist_remove_buddy(buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1519 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1520 } else {
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1521 bnode = purple_blist_node_get_sibling_next(bnode);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1522 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1523 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1524 } else if (PURPLE_BLIST_NODE_IS_CHAT(cnode)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1525 PurpleChat *chat = (PurpleChat *)cnode;
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1526 cnode = purple_blist_node_get_sibling_next(cnode);
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
1527 if (purple_account_is_connected(purple_chat_get_account(chat)))
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1528 purple_blist_remove_chat(chat);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1529 } else {
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1530 cnode = purple_blist_node_get_sibling_next(cnode);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1531 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1532 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1533
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1534 purple_blist_remove_group(group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1535 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1536
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1537 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1538 finch_blist_remove_node(PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1539 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1540 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1541 remove_contact((PurpleContact*)node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1542 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1543 PurpleBuddy *buddy = (PurpleBuddy*)node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1544 PurpleGroup *group = purple_buddy_get_group(buddy);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1545 purple_account_remove_buddy(purple_buddy_get_account(buddy), buddy, group);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1546 purple_blist_remove_buddy(buddy);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1547 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1548 purple_blist_remove_chat((PurpleChat*)node);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1549 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1550 remove_group((PurpleGroup*)node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1551 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1552 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1553
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1554 static void
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1555 finch_blist_remove_node_cb(PurpleBlistNode *selected, PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1556 {
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1557 PurpleAccount *account = NULL;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1558 char *primary;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1559 const char *name, *sec = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1560
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1561 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1562 PurpleContact *c = (PurpleContact*)node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1563 name = purple_contact_get_alias(c);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1564 if (c->totalsize > 1)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1565 sec = _("Removing this contact will also remove all the buddies in the contact");
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1566 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1567 name = purple_buddy_get_name((PurpleBuddy*)node);
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1568 account = purple_buddy_get_account((PurpleBuddy*)node);
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1569 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1570 name = purple_chat_get_name((PurpleChat*)node);
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1571 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
1572 name = purple_group_get_name((PurpleGroup*)node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1573 sec = _("Removing this group will also remove all the buddies in the group");
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1574 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1575 else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1576 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1577
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1578 primary = g_strdup_printf(_("Are you sure you want to remove %s?"), name);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1579
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1580 /* XXX: anything to do with the returned ui-handle? */
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1581 purple_request_action(node, _("Confirm Remove"),
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1582 primary, sec,
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1583 1,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
1584 account, name, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1585 node, 2,
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1586 _("Remove"), finch_blist_remove_node,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1587 _("Cancel"), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1588 g_free(primary);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1589 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1590
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1591 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1592 finch_blist_toggle_tag_buddy(PurpleBlistNode *node)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1593 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1594 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1595 if (node == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1596 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1597 if (ggblist->tagged && (iter = g_list_find(ggblist->tagged, node)) != NULL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1598 ggblist->tagged = g_list_delete_link(ggblist->tagged, iter);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1599 } else {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1600 ggblist->tagged = g_list_prepend(ggblist->tagged, node);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1601 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1602 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1603 update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist);
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1604 else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1605 update_buddy_display((PurpleBuddy*)node, ggblist);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1606 else
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1607 update_node_display(node, ggblist);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1608 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1609
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1610 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1611 finch_blist_place_tagged(PurpleBlistNode *target)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1612 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1613 PurpleGroup *tg = NULL;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1614 PurpleContact *tc = NULL;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1615
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1616 if (target == NULL ||
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1617 purple_blist_node_get_type(target) == PURPLE_BLIST_OTHER_NODE)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1618 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1619
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1620 if (PURPLE_BLIST_NODE_IS_GROUP(target))
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1621 tg = (PurpleGroup*)target;
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1622 else if (PURPLE_BLIST_NODE_IS_BUDDY(target)) {
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1623 tc = (PurpleContact*)purple_blist_node_get_parent(target);
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1624 tg = (PurpleGroup*)purple_blist_node_get_parent((PurpleBlistNode*)tc);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1625 } else {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1626 if (PURPLE_BLIST_NODE_IS_CONTACT(target))
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1627 tc = (PurpleContact*)target;
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
1628 tg = (PurpleGroup*)purple_blist_node_get_parent(target);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1629 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1630
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1631 if (ggblist->tagged) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1632 GList *list = ggblist->tagged;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1633 ggblist->tagged = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1634 while (list) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1635 PurpleBlistNode *node = list->data;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1636 list = g_list_delete_link(list, list);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1637
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1638 if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1639 update_node_display(node, ggblist);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1640 /* Add the group after the current group */
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1641 purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1642 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1643 update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist);
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1644 if (PURPLE_BLIST_NODE(tg) == target) {
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1645 /* The target is a group, just add the contact to the group. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1646 purple_blist_add_contact((PurpleContact*)node, tg, NULL);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1647 } else if (tc) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1648 /* The target is either a buddy, or a contact. Merge with that contact. */
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1649 purple_blist_merge_contact((PurpleContact*)node, (PurpleBlistNode*)tc);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1650 } else {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1651 /* The target is a chat. Add the contact to the group after this chat. */
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1652 purple_blist_add_contact((PurpleContact*)node, NULL, target);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1653 }
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1654 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1655 update_buddy_display((PurpleBuddy*)node, ggblist);
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1656 if (PURPLE_BLIST_NODE(tg) == target) {
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1657 /* The target is a group. Add this buddy in a new contact under this group. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1658 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1659 } else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1660 /* Add to the contact. */
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1661 purple_blist_add_buddy((PurpleBuddy*)node, tc, NULL, NULL);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1662 } else if (PURPLE_BLIST_NODE_IS_BUDDY(target)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1663 /* Add to the contact after the selected buddy. */
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1664 purple_blist_add_buddy((PurpleBuddy*)node, NULL, NULL, target);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1665 } else if (PURPLE_BLIST_NODE_IS_CHAT(target)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1666 /* Add to the selected chat's group. */
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1667 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1668 }
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1669 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1670 update_node_display(node, ggblist);
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1671 if (PURPLE_BLIST_NODE(tg) == target)
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1672 purple_blist_add_chat((PurpleChat*)node, tg, NULL);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1673 else
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1674 purple_blist_add_chat((PurpleChat*)node, NULL, target);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1675 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1676 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1677 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1678 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1679
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1680 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1681 context_menu_destroyed(GntWidget *widget, FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1682 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1683 ggblist->context = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1684 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1685
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1686 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1687 draw_context_menu(FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1688 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1689 PurpleBlistNode *node = NULL;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1690 GntWidget *context = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1691 GntTree *tree = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1692 int x, y, top, width;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1693 char *title = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1694
16813
e79555933fc6 Do not build the context menu if one is already being shown.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16781
diff changeset
1695 if (ggblist->context)
e79555933fc6 Do not build the context menu if one is already being shown.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16781
diff changeset
1696 return;
e79555933fc6 Do not build the context menu if one is already being shown.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16781
diff changeset
1697
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1698 tree = GNT_TREE(ggblist->tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1699
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1700 node = gnt_tree_get_selection_data(tree);
22172
0934fa012c8c Do not show a context menu for an unknown node.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22171
diff changeset
1701 if (node && purple_blist_node_get_type(node) == PURPLE_BLIST_OTHER_NODE)
0934fa012c8c Do not show a context menu for an unknown node.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22171
diff changeset
1702 return;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1703
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1704 if (ggblist->tooltip)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1705 remove_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1706
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1707 ggblist->cnode = node;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1708
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1709 ggblist->context = context = gnt_menu_new(GNT_MENU_POPUP);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1710 g_signal_connect(G_OBJECT(context), "destroy", G_CALLBACK(context_menu_destroyed), ggblist);
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1711 g_signal_connect(G_OBJECT(context), "hide", G_CALLBACK(gnt_widget_destroy), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1712
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1713 if (!node) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1714 create_group_menu(GNT_MENU(context), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1715 title = g_strdup(_("Buddy List"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1716 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
1717 ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
18565
980d6e1b2d21 Fix a crash Eric found. These parameters were in reverse order.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18535
diff changeset
1718 create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1719 title = g_strdup(purple_contact_get_alias((PurpleContact*)node));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1720 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1721 PurpleBuddy *buddy = (PurpleBuddy *)node;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1722 create_buddy_menu(GNT_MENU(context), buddy);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1723 title = g_strdup(purple_buddy_get_name(buddy));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1724 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1725 PurpleChat *chat = (PurpleChat*)node;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1726 create_chat_menu(GNT_MENU(context), chat);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1727 title = g_strdup(purple_chat_get_name(chat));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1728 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1729 PurpleGroup *group = (PurpleGroup *)node;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1730 create_group_menu(GNT_MENU(context), group);
22220
1f256f63c52c Update finch to not touch the internals of PurpleGroup.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22219
diff changeset
1731 title = g_strdup(purple_group_get_name(group));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1732 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1733
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1734 append_extended_menu(GNT_MENU(context), node);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1735
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1736 /* These are common for everything */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1737 if (node) {
16276
31dad9806e9d Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16194
diff changeset
1738 add_custom_action(GNT_MENU(context),
31dad9806e9d Use 'alias' instead of 'rename' for non-group nodes. Thankfully, this does not introduce new strings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16194
diff changeset
1739 PURPLE_BLIST_NODE_IS_GROUP(node) ? _("Rename") : _("Alias"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1740 PURPLE_CALLBACK(finch_blist_rename_node_cb), node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1741 add_custom_action(GNT_MENU(context), _("Remove"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1742 PURPLE_CALLBACK(finch_blist_remove_node_cb), node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1743
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1744 if (ggblist->tagged && (PURPLE_BLIST_NODE_IS_CONTACT(node)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1745 || PURPLE_BLIST_NODE_IS_GROUP(node))) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1746 add_custom_action(GNT_MENU(context), _("Place tagged"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1747 PURPLE_CALLBACK(finch_blist_place_tagged), node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1748 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1749
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1750 if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1751 add_custom_action(GNT_MENU(context), _("Toggle Tag"),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1752 PURPLE_CALLBACK(finch_blist_toggle_tag_buddy), node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1753 }
22248
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1754 if (!PURPLE_BLIST_NODE_IS_GROUP(node)) {
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1755 add_custom_action(GNT_MENU(context), _("View Log"),
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1756 PURPLE_CALLBACK(showlog_cb), node);
88796aff14d6 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22220
diff changeset
1757 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1758 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1759
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1760 /* Set the position for the popup */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1761 gnt_widget_get_position(GNT_WIDGET(tree), &x, &y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1762 gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1763 top = gnt_tree_get_selection_visible_line(tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1764
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1765 x += width;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1766 y += top - 1;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1767
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1768 gnt_widget_set_position(context, x, y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1769 gnt_screen_menu_show(GNT_MENU(context));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1770 g_free(title);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1771 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1772
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1773 static void
18332
1862a23b1751 Show better tooltips for contacts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18316
diff changeset
1774 tooltip_for_buddy(PurpleBuddy *buddy, GString *str, gboolean full)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1775 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1776 PurplePlugin *prpl;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1777 PurplePluginProtocolInfo *prpl_info;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1778 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1779 PurpleNotifyUserInfo *user_info;
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
1780 PurplePresence *presence;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1781 const char *alias = purple_buddy_get_alias(buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1782 char *tmp, *strip;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1783
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1784 user_info = purple_notify_user_info_new();
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1785
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1786 account = purple_buddy_get_account(buddy);
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
1787 presence = purple_buddy_get_presence(buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1788
19305
f0b25c6fa806 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18635
diff changeset
1789 if (!full || g_utf8_collate(purple_buddy_get_name(buddy), alias)) {
31904
3322201b446f I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <mark@kingant.net>
parents: 31403
diff changeset
1790 purple_notify_user_info_add_pair_plaintext(user_info, _("Nickname"), alias);
19305
f0b25c6fa806 Fix #2607. (Finch tooltip HTML display)
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18635
diff changeset
1791 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1792
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1793 tmp = g_strdup_printf("%s (%s)",
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1794 purple_account_get_username(account),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1795 purple_account_get_protocol_name(account));
31904
3322201b446f I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <mark@kingant.net>
parents: 31403
diff changeset
1796 purple_notify_user_info_add_pair_plaintext(user_info, _("Account"), tmp);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1797 g_free(tmp);
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
1798
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1799 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1800 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1801 if (prpl_info && prpl_info->tooltip_text) {
18332
1862a23b1751 Show better tooltips for contacts.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18316
diff changeset
1802 prpl_info->tooltip_text(buddy, user_info, full);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1803 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1804
16424
4999bbc52881 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents: 16276
diff changeset
1805 if (purple_prefs_get_bool("/finch/blist/idletime")) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1806 PurplePresence *pre = purple_buddy_get_presence(buddy);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1807 if (purple_presence_is_idle(pre)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1808 time_t idle = purple_presence_get_idle_time(pre);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1809 if (idle > 0) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1810 char *st = purple_str_seconds_to_string(time(NULL) - idle);
31904
3322201b446f I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <mark@kingant.net>
parents: 31403
diff changeset
1811 purple_notify_user_info_add_pair_plaintext(user_info, _("Idle"), st);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1812 g_free(st);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1813 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1814 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1815 }
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 29776
diff changeset
1816
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1817 tmp = purple_notify_user_info_get_text_with_newline(user_info, "<BR>");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1818 purple_notify_user_info_destroy(user_info);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1819
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1820 strip = purple_markup_strip_html(tmp);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1821 g_string_append(str, strip);
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
1822
18635
5551e5ec1ce0 Insert a newline in the tooltip.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18586
diff changeset
1823 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE)) {
5551e5ec1ce0 Insert a newline in the tooltip.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18586
diff changeset
1824 g_string_append(str, "\n");
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
1825 g_string_append(str, _("On Mobile"));
18635
5551e5ec1ce0 Insert a newline in the tooltip.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18586
diff changeset
1826 }
18437
ecb223f9f75b Show a pimping cool unicode status emblem for buddies on mobile (thanks, elb).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18428
diff changeset
1827
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1828 g_free(strip);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1829 g_free(tmp);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1830 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1831
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1832 static GString*
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1833 make_sure_text_fits(GString *string)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1834 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1835 int maxw = getmaxx(stdscr) - 3;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1836 char *str = gnt_util_onscreen_fit_string(string->str, maxw);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1837 string = g_string_assign(string, str);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1838 g_free(str);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1839 return string;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1840 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1841
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1842 static gboolean
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1843 draw_tooltip_real(FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1844 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1845 PurpleBlistNode *node;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1846 int x, y, top, width, w, h;
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1847 GString *str = NULL;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1848 GntTree *tree;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1849 GntWidget *widget, *box, *tv;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1850 char *title = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1851
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1852 widget = ggblist->tree;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1853 tree = GNT_TREE(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1854
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1855 if (!gnt_widget_has_focus(ggblist->tree) ||
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1856 (ggblist->context && !GNT_WIDGET_IS_FLAG_SET(ggblist->context, GNT_WIDGET_INVISIBLE)))
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1857 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1858
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1859 if (ggblist->tooltip)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1860 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1861 /* XXX: Once we can properly redraw on expose events, this can be removed at the end
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1862 * to avoid the blinking*/
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1863 remove_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1864 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1865
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1866 node = gnt_tree_get_selection_data(tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1867 if (!node)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1868 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1869
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
1870 if (!ggblist->manager->create_tooltip(node, &str, &title))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1871 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1872
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1873 gnt_widget_get_position(widget, &x, &y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1874 gnt_widget_get_size(widget, &width, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1875 top = gnt_tree_get_selection_visible_line(tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1876
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1877 x += width;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1878 y += top - 1;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1879
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1880 box = gnt_box_new(FALSE, FALSE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1881 gnt_box_set_toplevel(GNT_BOX(box), TRUE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1882 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1883 gnt_box_set_title(GNT_BOX(box), title);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1884
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1885 str = make_sure_text_fits(str);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1886 gnt_util_get_text_bound(str->str, &w, &h);
18316
70325b0c5792 Use the new flags to make the tooltip look better.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18210
diff changeset
1887 h = MAX(1, h);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1888 tv = gnt_text_view_new();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1889 gnt_widget_set_size(tv, w + 1, h);
18316
70325b0c5792 Use the new flags to make the tooltip look better.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18210
diff changeset
1890 gnt_text_view_set_flag(GNT_TEXT_VIEW(tv), GNT_TEXT_VIEW_NO_SCROLL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1891 gnt_box_add_widget(GNT_BOX(box), tv);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1892
22474
8445ea581a6e Move the tooltip to the left of the buddylist if there's not enough room to show it on the right.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22429
diff changeset
1893 if (x + w >= getmaxx(stdscr))
8445ea581a6e Move the tooltip to the left of the buddylist if there's not enough room to show it on the right.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22429
diff changeset
1894 x -= w + width + 2;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1895 gnt_widget_set_position(box, x, y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1896 GNT_WIDGET_UNSET_FLAGS(box, GNT_WIDGET_CAN_TAKE_FOCUS);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1897 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1898 gnt_widget_draw(box);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1899
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1900 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(tv), str->str, GNT_TEXT_FLAG_NORMAL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1901 gnt_text_view_scroll(GNT_TEXT_VIEW(tv), 0);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1902
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1903 g_free(title);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1904 g_string_free(str, TRUE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1905 ggblist->tooltip = box;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1906 ggblist->tnode = node;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1907
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1908 gnt_widget_set_name(ggblist->tooltip, "tooltip");
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1909 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1910 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1911
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1912 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1913 draw_tooltip(FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1914 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1915 /* When an account has signed off, it removes one buddy at a time.
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1916 * Drawing the tooltip after removing each buddy is expensive. On
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1917 * top of that, if the selected buddy belongs to the disconnected
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1918 * account, then retreiving the tooltip for that causes crash. So
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1919 * let's make sure we wait for all the buddies to be removed first.*/
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1920 int id = g_timeout_add(0, (GSourceFunc)draw_tooltip_real, ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1921 g_object_set_data_full(G_OBJECT(ggblist->window), "draw_tooltip_calback",
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1922 GINT_TO_POINTER(id), (GDestroyNotify)g_source_remove);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1923 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1924
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1925 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1926 selection_changed(GntWidget *widget, gpointer old, gpointer current, FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1927 {
16781
d0f9b2b217cf Fix context menu unusualness in the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16771
diff changeset
1928 remove_peripherals(ggblist);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1929 draw_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1930 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1931
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1932 static gboolean
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1933 context_menu(GntWidget *widget, FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1934 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1935 draw_context_menu(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1936 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1937 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1938
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1939 static gboolean
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1940 key_pressed(GntWidget *widget, const char *text, FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1941 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1942 if (text[0] == 27 && text[1] == 0) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1943 /* Escape was pressed */
21305
0208beabfa33 Cancel the typeahead search when escape is pressed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21244
diff changeset
1944 if (gnt_tree_is_searching(GNT_TREE(ggblist->tree)))
0208beabfa33 Cancel the typeahead search when escape is pressed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21244
diff changeset
1945 gnt_bindable_perform_action_named(GNT_BINDABLE(ggblist->tree), "end-search", NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1946 remove_peripherals(ggblist);
20625
54ff514fdd04 Pressing INSERT in the buddy list brings up the 'Add Buddy' dialog.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20561
diff changeset
1947 } else if (strcmp(text, GNT_KEY_INS) == 0) {
26963
fd78c7022f81 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26694
diff changeset
1948 PurpleBlistNode *node = gnt_tree_get_selection_data(GNT_TREE(ggblist->tree));
fd78c7022f81 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26694
diff changeset
1949 purple_blist_request_add_buddy(NULL, NULL,
fd78c7022f81 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26694
diff changeset
1950 node && PURPLE_BLIST_NODE_IS_GROUP(node) ? purple_group_get_name(PURPLE_GROUP(node)) : NULL,
fd78c7022f81 Remove a now-unnecessary binding for the buddylist.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26694
diff changeset
1951 NULL);
18535
fad459189cc5 New feature: successful compilation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18512
diff changeset
1952 } else if (!gnt_tree_is_searching(GNT_TREE(ggblist->tree))) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1953 if (strcmp(text, "t") == 0) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1954 finch_blist_toggle_tag_buddy(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree)));
28337
650ab9eb4b21 Add missing null sentinels, and help the compiler catch such errors.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 27810
diff changeset
1955 gnt_bindable_perform_action_named(GNT_BINDABLE(ggblist->tree), "move-down", NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1956 } else if (strcmp(text, "a") == 0) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1957 finch_blist_place_tagged(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree)));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1958 } else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1959 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1960 } else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1961 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1962
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1963 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1964 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1965
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1966 static void
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1967 update_node_display(PurpleBlistNode *node, FinchBlist *ggblist)
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1968 {
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1969 GntTextFormatFlags flag = get_blist_node_flag(node);
16567
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1970 gnt_tree_set_row_flags(GNT_TREE(ggblist->tree), node, flag);
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1971 }
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1972
7b692d5dd704 This makes it possible to rearrange chats and groups using the tag+attach system. Thanks a bunch to wabz for testing this. Fixes #379.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16483
diff changeset
1973 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1974 update_buddy_display(PurpleBuddy *buddy, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1975 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1976 PurpleContact *contact;
21695
52bbf38a1cd2 Refactor the code a little bit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21694
diff changeset
1977
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1978 contact = purple_buddy_get_contact(buddy);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1979
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1980 gnt_tree_change_text(GNT_TREE(ggblist->tree), buddy, 0, get_display_name((PurpleBlistNode*)buddy));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1981 gnt_tree_change_text(GNT_TREE(ggblist->tree), contact, 0, get_display_name((PurpleBlistNode*)contact));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1982
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1983 blist_update_row_flags((PurpleBlistNode *)buddy);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1984 if (buddy == purple_contact_get_priority_buddy(contact))
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
1985 blist_update_row_flags((PurpleBlistNode *)contact);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1986
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1987 if (ggblist->tnode == (PurpleBlistNode*)buddy)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1988 draw_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1989 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1990
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1991 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1992 buddy_status_changed(PurpleBuddy *buddy, PurpleStatus *old, PurpleStatus *now, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1993 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1994 update_buddy_display(buddy, ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1995 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1996
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1997 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
1998 buddy_idle_changed(PurpleBuddy *buddy, int old, int new, FinchBlist *ggblist)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1999 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2000 update_buddy_display(buddy, ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2001 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2002
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2003 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2004 remove_peripherals(FinchBlist *ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2005 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2006 if (ggblist->tooltip)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2007 remove_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2008 else if (ggblist->context)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2009 gnt_widget_destroy(ggblist->context);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2010 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2011
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2012 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2013 size_changed_cb(GntWidget *w, int wi, int h)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2014 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2015 int width, height;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2016 gnt_widget_get_size(w, &width, &height);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2017 purple_prefs_set_int(PREF_ROOT "/size/width", width);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2018 purple_prefs_set_int(PREF_ROOT "/size/height", height);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2019 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2020
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2021 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2022 save_position_cb(GntWidget *w, int x, int y)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2023 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2024 purple_prefs_set_int(PREF_ROOT "/position/x", x);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2025 purple_prefs_set_int(PREF_ROOT "/position/y", y);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2026 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2027
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2028 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2029 reset_blist_window(GntWidget *window, gpointer null)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2030 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2031 PurpleBlistNode *node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2032 purple_signals_disconnect_by_handle(finch_blist_get_handle());
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
2033 FINCH_SET_DATA(purple_get_blist(), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2034
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2035 node = purple_blist_get_root();
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2036 while (node) {
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2037 reset_blist_node_ui_data(node);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2038 node = purple_blist_node_next(node, TRUE);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2039 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2040
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2041 if (ggblist->typing)
25592
bd18bb4915ba *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25568
diff changeset
2042 purple_timeout_remove(ggblist->typing);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2043 remove_peripherals(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2044 if (ggblist->tagged)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2045 g_list_free(ggblist->tagged);
24215
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
2046
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
2047 if (ggblist->new_group_timeout)
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
2048 purple_timeout_remove(ggblist->new_group_timeout);
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
2049 if (ggblist->new_group)
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
2050 g_list_free(ggblist->new_group);
95da3ec97c27 Show a manually added new empty group even if the preference is not set.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24001
diff changeset
2051
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2052 g_free(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2053 ggblist = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2054 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2055
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2056 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
2057 populate_buddylist(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2058 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2059 PurpleBlistNode *node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2060 PurpleBuddyList *list;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2061
22190
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2062 if (ggblist->manager->init)
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2063 ggblist->manager->init();
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2064
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2065 if (strcmp(purple_prefs_get_string(PREF_ROOT "/sort_type"), "text") == 0) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2066 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2067 (GCompareFunc)blist_node_compare_text);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2068 } else if (strcmp(purple_prefs_get_string(PREF_ROOT "/sort_type"), "status") == 0) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2069 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2070 (GCompareFunc)blist_node_compare_status);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2071 } else if (strcmp(purple_prefs_get_string(PREF_ROOT "/sort_type"), "log") == 0) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2072 gnt_tree_set_compare_func(GNT_TREE(ggblist->tree),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2073 (GCompareFunc)blist_node_compare_log);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2074 }
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 29776
diff changeset
2075
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2076 list = purple_get_blist();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2077 node = purple_blist_get_root();
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2078 while (node)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2079 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2080 node_update(list, node);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2081 node = purple_blist_node_next(node, FALSE);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2082 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2083 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2084
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2085 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2086 destroy_status_list(GList *list)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2087 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2088 g_list_foreach(list, (GFunc)g_free, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2089 g_list_free(list);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2090 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2091
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2092 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
2093 populate_status_dropdown(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2094 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2095 int i;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2096 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2097 GList *items = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2098 StatusBoxItem *item = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2099
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2100 /* First the primitives */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2101 PurpleStatusPrimitive prims[] = {PURPLE_STATUS_AVAILABLE, PURPLE_STATUS_AWAY,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2102 PURPLE_STATUS_INVISIBLE, PURPLE_STATUS_OFFLINE, PURPLE_STATUS_UNSET};
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2103
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2104 gnt_combo_box_remove_all(GNT_COMBO_BOX(ggblist->status));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2105
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2106 for (i = 0; prims[i] != PURPLE_STATUS_UNSET; i++)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2107 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2108 item = g_new0(StatusBoxItem, 1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2109 item->type = STATUS_PRIMITIVE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2110 item->u.prim = prims[i];
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2111 items = g_list_prepend(items, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2112 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2113 purple_primitive_get_name_from_type(prims[i]));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2114 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2115
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2116 /* Now the popular statuses */
18585
823946ddd527 Memory leak fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18584
diff changeset
2117 for (iter = purple_savedstatuses_get_popular(6); iter; iter = g_list_delete_link(iter, iter))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2118 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2119 item = g_new0(StatusBoxItem, 1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2120 item->type = STATUS_SAVED_POPULAR;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2121 item->u.saved = iter->data;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2122 items = g_list_prepend(items, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2123 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2124 purple_savedstatus_get_title(iter->data));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2125 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2126
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2127 /* New savedstatus */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2128 item = g_new0(StatusBoxItem, 1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2129 item->type = STATUS_SAVED_NEW;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2130 items = g_list_prepend(items, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2131 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2132 _("New..."));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2133
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2134 /* More savedstatuses */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2135 item = g_new0(StatusBoxItem, 1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2136 item->type = STATUS_SAVED_ALL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2137 items = g_list_prepend(items, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2138 gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2139 _("Saved..."));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2140
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2141 /* The keys for the combobox are created here, and never used
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2142 * anywhere else. So make sure the keys are freed when the widget
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2143 * is destroyed. */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2144 g_object_set_data_full(G_OBJECT(ggblist->status), "list of statuses",
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2145 items, (GDestroyNotify)destroy_status_list);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2146 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2147
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2148 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2149 redraw_blist(const char *name, PurplePrefType type, gconstpointer val, gpointer data)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2150 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2151 PurpleBlistNode *node, *sel;
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2152 FinchBlistManager *manager;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2153
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2154 if (ggblist == NULL)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2155 return;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2156
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2157 manager = finch_blist_manager_find(purple_prefs_get_string(PREF_ROOT "/grouping"));
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2158 if (manager == NULL)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2159 manager = &default_manager;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2160 if (ggblist->manager != manager) {
22190
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2161 if (ggblist->manager->uninit)
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2162 ggblist->manager->uninit();
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2163
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2164 ggblist->manager = manager;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2165 if (manager->can_add_node == NULL)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2166 manager->can_add_node = default_can_add_node;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2167 if (manager->find_parent == NULL)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2168 manager->find_parent = default_find_parent;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2169 if (manager->create_tooltip == NULL)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2170 manager->create_tooltip = default_create_tooltip;
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2171 }
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2172
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2173 if (ggblist->window == NULL)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2174 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2175
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2176 sel = gnt_tree_get_selection_data(GNT_TREE(ggblist->tree));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2177 gnt_tree_remove_all(GNT_TREE(ggblist->tree));
22190
bcaf4a037704 Init and uninit the buddylist managers at appropriate times.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22181
diff changeset
2178
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2179 node = purple_blist_get_root();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2180 for (; node; node = purple_blist_node_next(node, TRUE))
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2181 reset_blist_node_ui_data(node);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2182 populate_buddylist();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2183 gnt_tree_set_selected(GNT_TREE(ggblist->tree), sel);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2184 draw_tooltip(ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2185 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2186
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2187 void finch_blist_init()
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2188 {
21738
e3e64d1e4869 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21695
diff changeset
2189 color_available = gnt_style_get_color(NULL, "color-available");
21694
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2190 if (!color_available)
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2191 color_available = gnt_color_add_pair(COLOR_GREEN, -1);
21738
e3e64d1e4869 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21695
diff changeset
2192 color_away = gnt_style_get_color(NULL, "color-away");
21694
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2193 if (!color_away)
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2194 color_away = gnt_color_add_pair(COLOR_BLUE, -1);
21738
e3e64d1e4869 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21695
diff changeset
2195 color_idle = gnt_style_get_color(NULL, "color-idle");
21694
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2196 if (!color_idle)
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2197 color_idle = gnt_color_add_pair(COLOR_CYAN, -1);
21738
e3e64d1e4869 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21695
diff changeset
2198 color_offline = gnt_style_get_color(NULL, "color-offline");
21694
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2199 if (!color_offline)
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2200 color_offline = gnt_color_add_pair(COLOR_RED, -1);
2de3a2de5f13 Update the changelogs. Correct the man page. Allow 'default' to mean the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21691
diff changeset
2201
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2202 purple_prefs_add_none(PREF_ROOT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2203 purple_prefs_add_none(PREF_ROOT "/size");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2204 purple_prefs_add_int(PREF_ROOT "/size/width", 20);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2205 purple_prefs_add_int(PREF_ROOT "/size/height", 17);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2206 purple_prefs_add_none(PREF_ROOT "/position");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2207 purple_prefs_add_int(PREF_ROOT "/position/x", 0);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2208 purple_prefs_add_int(PREF_ROOT "/position/y", 0);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2209 purple_prefs_add_bool(PREF_ROOT "/idletime", TRUE);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2210 purple_prefs_add_bool(PREF_ROOT "/showoffline", FALSE);
18441
24ecab0d40b3 Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18437
diff changeset
2211 purple_prefs_add_bool(PREF_ROOT "/emptygroups", FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2212 purple_prefs_add_string(PREF_ROOT "/sort_type", "text");
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2213 purple_prefs_add_string(PREF_ROOT "/grouping", "default");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2214
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2215 purple_prefs_connect_callback(finch_blist_get_handle(),
18441
24ecab0d40b3 Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18437
diff changeset
2216 PREF_ROOT "/emptygroups", redraw_blist, NULL);
24ecab0d40b3 Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18437
diff changeset
2217 purple_prefs_connect_callback(finch_blist_get_handle(),
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2218 PREF_ROOT "/showoffline", redraw_blist, NULL);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2219 purple_prefs_connect_callback(finch_blist_get_handle(),
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2220 PREF_ROOT "/sort_type", redraw_blist, NULL);
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2221 purple_prefs_connect_callback(finch_blist_get_handle(),
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2222 PREF_ROOT "/grouping", redraw_blist, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2223
29753
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2224 purple_signal_connect_priority(purple_connections_get_handle(),
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2225 "autojoin", purple_blist_get_handle(),
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2226 G_CALLBACK(account_autojoin_cb), NULL,
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2227 PURPLE_SIGNAL_PRIORITY_HIGHEST);
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2228
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2229 finch_blist_install_manager(&default_manager);
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2230
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2231 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2232 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2233
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2234 static gboolean
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2235 remove_typing_cb(gpointer null)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2236 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2237 PurpleSavedStatus *current;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2238 const char *message, *newmessage;
24537
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2239 char *escnewmessage;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2240 PurpleStatusPrimitive prim, newprim;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2241 StatusBoxItem *item;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2242
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2243 current = purple_savedstatus_get_current();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2244 message = purple_savedstatus_get_message(current);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2245 prim = purple_savedstatus_get_type(current);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2246
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2247 newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2248 item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status));
24537
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2249 escnewmessage = newmessage ? g_markup_escape_text(newmessage, -1) : NULL;
16655
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2250
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2251 switch (item->type) {
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2252 case STATUS_PRIMITIVE:
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2253 newprim = item->u.prim;
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2254 break;
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2255 case STATUS_SAVED_POPULAR:
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2256 newprim = purple_savedstatus_get_type(item->u.saved);
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2257 break;
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2258 default:
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2259 goto end; /* 'New' or 'Saved' is selected, but this should never happen. */
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2260 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2261
24537
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2262 if (newprim != prim || ((message && !escnewmessage) ||
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2263 (!message && escnewmessage) ||
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2264 (message && escnewmessage && g_utf8_collate(message, escnewmessage) != 0)))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2265 {
24537
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2266 PurpleSavedStatus *status = purple_savedstatus_find_transient_by_type_and_message(newprim, escnewmessage);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2267 /* Holy Crap! That's a LAWNG function name */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2268 if (status == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2269 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2270 status = purple_savedstatus_new(NULL, newprim);
24537
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2271 purple_savedstatus_set_message(status, escnewmessage);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2272 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2273
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2274 purple_savedstatus_activate(status);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2275 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2276
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2277 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
16655
1c9835f8b29c A rare crash fix for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16567
diff changeset
2278 end:
24537
0f7a248848ed Properly escape the status message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24285
diff changeset
2279 g_free(escnewmessage);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2280 if (ggblist->typing)
25592
bd18bb4915ba *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25568
diff changeset
2281 purple_timeout_remove(ggblist->typing);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2282 ggblist->typing = 0;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2283 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2284 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2285
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2286 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2287 status_selection_changed(GntComboBox *box, StatusBoxItem *old, StatusBoxItem *now, gpointer null)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2288 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2289 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2290 if (now->type == STATUS_SAVED_POPULAR)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2291 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2292 /* Set the status immediately */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2293 purple_savedstatus_activate(now->u.saved);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2294 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2295 else if (now->type == STATUS_PRIMITIVE)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2296 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2297 /* Move the focus to the entry box */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2298 /* XXX: Make sure the selected status can have a message */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2299 gnt_box_move_focus(GNT_BOX(ggblist->window), 1);
25592
bd18bb4915ba *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25568
diff changeset
2300 ggblist->typing = purple_timeout_add_seconds(TYPING_TIMEOUT_S, (GSourceFunc)remove_typing_cb, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2301 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2302 else if (now->type == STATUS_SAVED_ALL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2303 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2304 /* Restore the selection to reflect current status. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2305 savedstatus_changed(purple_savedstatus_get_current(), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2306 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2307 finch_savedstatus_show_all();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2308 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2309 else if (now->type == STATUS_SAVED_NEW)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2310 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2311 savedstatus_changed(purple_savedstatus_get_current(), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2312 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2313 finch_savedstatus_edit(NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2314 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2315 else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2316 g_return_if_reached();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2317 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2318
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2319 static gboolean
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2320 status_text_changed(GntEntry *entry, const char *text, gpointer null)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2321 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2322 if ((text[0] == 27 || (text[0] == '\t' && text[1] == '\0')) && ggblist->typing == 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2323 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2324
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2325 if (ggblist->typing)
25592
bd18bb4915ba *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25568
diff changeset
2326 purple_timeout_remove(ggblist->typing);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2327 ggblist->typing = 0;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2328
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2329 if (text[0] == '\r' && text[1] == 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2330 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2331 /* Set the status only after you press 'Enter' */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2332 remove_typing_cb(NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2333 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2334 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2335
25592
bd18bb4915ba *** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25568
diff changeset
2336 ggblist->typing = purple_timeout_add_seconds(TYPING_TIMEOUT_S, (GSourceFunc)remove_typing_cb, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2337 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2338 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2339
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2340 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2341 savedstatus_changed(PurpleSavedStatus *now, PurpleSavedStatus *old)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2342 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2343 GList *list;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2344 PurpleStatusPrimitive prim;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2345 const char *message;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2346 gboolean found = FALSE, saved = TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2347
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2348 if (!ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2349 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2350
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2351 /* Block the signals we don't want to emit */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2352 g_signal_handlers_block_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2353 0, 0, NULL, status_selection_changed, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2354 g_signal_handlers_block_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2355 0, 0, NULL, status_text_changed, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2356
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2357 prim = purple_savedstatus_get_type(now);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2358 message = purple_savedstatus_get_message(now);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2359
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2360 /* Rebuild the status dropdown */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2361 populate_status_dropdown();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2362
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2363 while (!found) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2364 list = g_object_get_data(G_OBJECT(ggblist->status), "list of statuses");
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2365 for (; list; list = list->next)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2366 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2367 StatusBoxItem *item = list->data;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2368 if ((saved && item->type != STATUS_PRIMITIVE && item->u.saved == now) ||
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2369 (!saved && item->type == STATUS_PRIMITIVE && item->u.prim == prim))
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2370 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2371 char *mess = purple_unescape_html(message);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2372 gnt_combo_box_set_selected(GNT_COMBO_BOX(ggblist->status), item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2373 gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), mess);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2374 gnt_widget_draw(ggblist->status);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2375 g_free(mess);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2376 found = TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2377 break;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2378 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2379 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2380 if (!saved)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2381 break;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2382 saved = FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2383 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2384
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2385 g_signal_handlers_unblock_matched(ggblist->status, G_SIGNAL_MATCH_FUNC,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2386 0, 0, NULL, status_selection_changed, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2387 g_signal_handlers_unblock_matched(ggblist->statustext, G_SIGNAL_MATCH_FUNC,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2388 0, 0, NULL, status_text_changed, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2389 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2390
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2391 static int
16483
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2392 blist_node_compare_position(PurpleBlistNode *n1, PurpleBlistNode *n2)
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2393 {
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2394 while ((n1 = purple_blist_node_get_sibling_prev(n1)) != NULL)
16483
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2395 if (n1 == n2)
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2396 return 1;
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2397 return -1;
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2398 }
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2399
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2400 static int
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2401 blist_node_compare_text(PurpleBlistNode *n1, PurpleBlistNode *n2)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2402 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2403 const char *s1, *s2;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2404 char *us1, *us2;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2405 int ret;
17240
29b3dc9cc8c5 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17203
diff changeset
2406
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2407 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2))
17240
29b3dc9cc8c5 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17203
diff changeset
2408 return blist_node_compare_position(n1, n2);
29b3dc9cc8c5 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17203
diff changeset
2409
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2410 switch (purple_blist_node_get_type(n1))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2411 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2412 case PURPLE_BLIST_CHAT_NODE:
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2413 s1 = purple_chat_get_name((PurpleChat*)n1);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2414 s2 = purple_chat_get_name((PurpleChat*)n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2415 break;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2416 case PURPLE_BLIST_BUDDY_NODE:
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2417 return purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2418 purple_buddy_get_presence((PurpleBuddy*)n2));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2419 break;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2420 case PURPLE_BLIST_CONTACT_NODE:
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2421 s1 = purple_contact_get_alias((PurpleContact*)n1);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2422 s2 = purple_contact_get_alias((PurpleContact*)n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2423 break;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2424 default:
16483
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2425 return blist_node_compare_position(n1, n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2426 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2427
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2428 us1 = g_utf8_strup(s1, -1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2429 us2 = g_utf8_strup(s2, -1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2430 ret = g_utf8_collate(us1, us2);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2431 g_free(us1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2432 g_free(us2);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2433
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2434 return ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2435 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2436
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2437 static int
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2438 blist_node_compare_status(PurpleBlistNode *n1, PurpleBlistNode *n2)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2439 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2440 int ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2441
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2442 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2))
17240
29b3dc9cc8c5 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17203
diff changeset
2443 return blist_node_compare_position(n1, n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2444
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2445 switch (purple_blist_node_get_type(n1)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2446 case PURPLE_BLIST_CONTACT_NODE:
25827
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
2447 n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1)));
0e08c847517d Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@wiktel.com>
parents: 25804
diff changeset
2448 n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2)));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2449 /* now compare the presence of the priority buddies */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2450 case PURPLE_BLIST_BUDDY_NODE:
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2451 ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2452 purple_buddy_get_presence((PurpleBuddy*)n2));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2453 if (ret != 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2454 return ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2455 break;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2456 default:
16483
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2457 return blist_node_compare_position(n1, n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2458 break;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2459 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2460
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2461 /* Sort alphabetically if presence is not comparable */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2462 ret = blist_node_compare_text(n1, n2);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2463
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2464 return ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2465 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2466
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2467 static int
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2468 get_contact_log_size(PurpleBlistNode *c)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2469 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2470 int log = 0;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2471 PurpleBlistNode *node;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2472
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
2473 for (node = purple_blist_node_get_first_child(c); node; node = purple_blist_node_get_sibling_next(node)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2474 PurpleBuddy *b = (PurpleBuddy*)node;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2475 log += purple_log_get_total_size(PURPLE_LOG_IM, purple_buddy_get_name(b),
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2476 purple_buddy_get_account(b));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2477 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2478
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2479 return log;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2480 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2481
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2482 static int
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2483 blist_node_compare_log(PurpleBlistNode *n1, PurpleBlistNode *n2)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2484 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2485 int ret;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2486 PurpleBuddy *b1, *b2;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2487
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2488 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2))
17240
29b3dc9cc8c5 It's valid for different types to be compared. In that case, use existing positions.
Richard Nelson <wabz@pidgin.im>
parents: 17203
diff changeset
2489 return blist_node_compare_position(n1, n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2490
22212
6bb29f94862c Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22192
diff changeset
2491 switch (purple_blist_node_get_type(n1)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2492 case PURPLE_BLIST_BUDDY_NODE:
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2493 b1 = (PurpleBuddy*)n1;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2494 b2 = (PurpleBuddy*)n2;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2495 ret = purple_log_get_total_size(PURPLE_LOG_IM, purple_buddy_get_name(b2), purple_buddy_get_account(b2)) -
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2496 purple_log_get_total_size(PURPLE_LOG_IM, purple_buddy_get_name(b1), purple_buddy_get_account(b1));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2497 if (ret != 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2498 return ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2499 break;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2500 case PURPLE_BLIST_CONTACT_NODE:
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2501 ret = get_contact_log_size(n2) - get_contact_log_size(n1);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2502 if (ret != 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2503 return ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2504 break;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2505 default:
16483
0b97b224a829 Never change the orders of chats or the groups.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16439
diff changeset
2506 return blist_node_compare_position(n1, n2);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2507 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2508 ret = blist_node_compare_text(n1, n2);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2509 return ret;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2510 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2511
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2512 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2513 plugin_action(GntMenuItem *item, gpointer data)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2514 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2515 PurplePluginAction *action = data;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2516 if (action && action->callback)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2517 action->callback(action);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2518 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2519
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2520 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2521 build_plugin_actions(GntMenuItem *item, PurplePlugin *plugin, gpointer context)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2522 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2523 GntWidget *sub = gnt_menu_new(GNT_MENU_POPUP);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2524 GList *actions;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2525 GntMenuItem *menuitem;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2526
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2527 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2528 for (actions = PURPLE_PLUGIN_ACTIONS(plugin, context); actions;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2529 actions = g_list_delete_link(actions, actions)) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2530 if (actions->data) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2531 PurplePluginAction *action = actions->data;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2532 action->plugin = plugin;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2533 action->context = context;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2534 menuitem = gnt_menuitem_new(action->label);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2535 gnt_menu_add_item(GNT_MENU(sub), menuitem);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2536
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2537 gnt_menuitem_set_callback(menuitem, plugin_action, action);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2538 g_object_set_data_full(G_OBJECT(menuitem), "plugin_action",
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2539 action, (GDestroyNotify)purple_plugin_action_free);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2540 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2541 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2542 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2543
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2544 static gboolean
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2545 buddy_recent_signed_on_off(gpointer data)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2546 {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2547 PurpleBlistNode *node = data;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
2548 FinchBlistNode *fnode = FINCH_GET_DATA(node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2549
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2550 purple_timeout_remove(fnode->signed_timer);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2551 fnode->signed_timer = 0;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2552
22181
8509419a666c Rework some of the code that deals with adding and removing blist nodes in the tree. There were some typoed code that just happened to work. This fixes those.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22178
diff changeset
2553 if (!ggblist->manager->can_add_node(node)) {
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2554 node_remove(purple_get_blist(), node);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2555 } else {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2556 update_node_display(node, ggblist);
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
2557 if (purple_blist_node_get_parent(node) && PURPLE_BLIST_NODE_IS_CONTACT(purple_blist_node_get_parent(node)))
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
2558 update_node_display(purple_blist_node_get_parent(node), ggblist);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2559 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2560
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2561 return FALSE;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2562 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2563
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2564 static gboolean
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2565 buddy_signed_on_off_cb(gpointer data)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2566 {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2567 PurpleBlistNode *node = data;
22217
ad357ca94de9 We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22214
diff changeset
2568 FinchBlistNode *fnode = FINCH_GET_DATA(node);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2569 if (!ggblist || !fnode)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2570 return FALSE;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2571
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2572 if (fnode->signed_timer)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2573 purple_timeout_remove(fnode->signed_timer);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2574 fnode->signed_timer = purple_timeout_add_seconds(6, (GSourceFunc)buddy_recent_signed_on_off, data);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2575 update_node_display(node, ggblist);
22168
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
2576 if (purple_blist_node_get_parent(node) && PURPLE_BLIST_NODE_IS_CONTACT(purple_blist_node_get_parent(node)))
2bff44d78523 Add some accessor functions for PurpleBlistNode.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22012
diff changeset
2577 update_node_display(purple_blist_node_get_parent(node), ggblist);
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2578 return FALSE;
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2579 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2580
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2581 static void
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2582 buddy_signed_on_off(PurpleBuddy* buddy, gpointer null)
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2583 {
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2584 g_idle_add(buddy_signed_on_off_cb, buddy);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2585 }
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
2586
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2587 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
2588 reconstruct_plugins_menu(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2589 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2590 GntWidget *sub;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2591 GntMenuItem *plg;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2592 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2593
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2594 if (!ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2595 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2596
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2597 if (ggblist->plugins == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2598 ggblist->plugins = gnt_menuitem_new(_("Plugins"));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2599
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2600 plg = ggblist->plugins;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2601 sub = gnt_menu_new(GNT_MENU_POPUP);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2602 gnt_menuitem_set_submenu(plg, GNT_MENU(sub));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2603
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2604 for (iter = purple_plugins_get_loaded(); iter; iter = iter->next) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2605 PurplePlugin *plugin = iter->data;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2606 GntMenuItem *item;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2607 if (PURPLE_IS_PROTOCOL_PLUGIN(plugin))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2608 continue;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2609
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2610 if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2611 continue;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2612
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2613 item = gnt_menuitem_new(_(plugin->info->name));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2614 gnt_menu_add_item(GNT_MENU(sub), item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2615 build_plugin_actions(item, plugin, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2616 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2617 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2618
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2619 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
2620 reconstruct_accounts_menu(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2621 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2622 GntWidget *sub;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2623 GntMenuItem *acc, *item;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2624 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2625
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2626 if (!ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2627 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2628
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2629 if (ggblist->accounts == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2630 ggblist->accounts = gnt_menuitem_new(_("Accounts"));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2631
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2632 acc = ggblist->accounts;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2633 sub = gnt_menu_new(GNT_MENU_POPUP);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2634 gnt_menuitem_set_submenu(acc, GNT_MENU(sub));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2635
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2636 for (iter = purple_accounts_get_all_active(); iter;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2637 iter = g_list_delete_link(iter, iter)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2638 PurpleAccount *account = iter->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2639 PurpleConnection *gc = purple_account_get_connection(account);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2640 PurplePlugin *prpl;
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2641
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2642 if (!gc || !PURPLE_CONNECTION_IS_CONNECTED(gc))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2643 continue;
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
2644 prpl = purple_connection_get_prpl(gc);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2645
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2646 if (PURPLE_PLUGIN_HAS_ACTIONS(prpl)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2647 item = gnt_menuitem_new(purple_account_get_username(account));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2648 gnt_menu_add_item(GNT_MENU(sub), item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2649 build_plugin_actions(item, prpl, gc);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2650 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2651 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2652 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2653
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2654 static void
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2655 reconstruct_grouping_menu(void)
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2656 {
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2657 GList *iter;
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2658 GntWidget *subsub;
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2659
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2660 if (!ggblist || !ggblist->grouping)
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2661 return;
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2662
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2663 subsub = gnt_menu_new(GNT_MENU_POPUP);
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2664 gnt_menuitem_set_submenu(ggblist->grouping, GNT_MENU(subsub));
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2665
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2666 for (iter = managers; iter; iter = iter->next) {
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2667 char menuid[128];
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2668 FinchBlistManager *manager = iter->data;
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2669 GntMenuItem *item = gnt_menuitem_new(_(manager->name));
25568
e0c8f689f60c applied changes from aa7ce93329f5ccbe74640a92b6656ae402d8eea8
Ethan Blanton <elb@pidgin.im>
parents: 24537
diff changeset
2670 g_snprintf(menuid, sizeof(menuid), "grouping-%s", manager->id);
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2671 gnt_menuitem_set_id(GNT_MENU_ITEM(item), menuid);
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2672 gnt_menu_add_item(GNT_MENU(subsub), item);
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2673 g_object_set_data_full(G_OBJECT(item), "grouping-id", g_strdup(manager->id), g_free);
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2674 gnt_menuitem_set_callback(item, menu_group_set_cb, NULL);
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2675 }
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2676 }
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
2677
19375
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2678 static gboolean
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2679 auto_join_chats(gpointer data)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2680 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2681 PurpleBlistNode *node;
19375
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2682 PurpleConnection *pc = data;
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2683 PurpleAccount *account = purple_connection_get_account(pc);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2684
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2685 for (node = purple_blist_get_root(); node;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2686 node = purple_blist_node_next(node, FALSE)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2687 if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2688 PurpleChat *chat = (PurpleChat*)node;
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2689 if (purple_chat_get_account(chat) == account &&
16771
d7ad8013b914 Fix this spectacularly braindead code. I must've been on the good stuff when I wrote this. Fixes #364.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 16655
diff changeset
2690 purple_blist_node_get_bool(node, "gnt-autojoin"))
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2691 serv_join_chat(purple_account_get_connection(account), purple_chat_get_components(chat));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2692 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2693 }
19375
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2694 return FALSE;
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2695 }
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2696
29753
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2697 static gboolean
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2698 account_autojoin_cb(PurpleConnection *gc, gpointer null)
19375
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2699 {
f520bf6dd4bc I think this fixes the auto-rejoin-after-auto-reconnect bug in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19305
diff changeset
2700 g_idle_add(auto_join_chats, gc);
29753
378cceb9131d Add an autojoin connection signal
Richard Laager <rlaager@wiktel.com>
parents: 28770
diff changeset
2701 return TRUE;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2702 }
18442
6d8aed4adcd6 Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18441
diff changeset
2703
6d8aed4adcd6 Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18441
diff changeset
2704 static void toggle_pref_cb(GntMenuItem *item, gpointer n)
18441
24ecab0d40b3 Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18437
diff changeset
2705 {
18442
6d8aed4adcd6 Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18441
diff changeset
2706 purple_prefs_set_bool(n, !purple_prefs_get_bool(n));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2707 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2708
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2709 static void sort_blist_change_cb(GntMenuItem *item, gpointer n)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2710 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2711 purple_prefs_set_string(PREF_ROOT "/sort_type", n);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2712 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2713
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2714 static void
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2715 block_select_cb(gpointer data, PurpleRequestFields *fields)
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2716 {
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2717 PurpleAccount *account = purple_request_fields_get_account(fields, "account");
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2718 const char *name = purple_request_fields_get_string(fields, "screenname");
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2719 if (account && name && *name != '\0') {
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2720 if (purple_request_fields_get_choice(fields, "block") == 1) {
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2721 purple_privacy_deny(account, name, FALSE, FALSE);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2722 } else {
22251
561f1e5e174f fix unblocking
Richard Nelson <wabz@pidgin.im>
parents: 22250
diff changeset
2723 purple_privacy_allow(account, name, FALSE, FALSE);
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2724 }
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2725 }
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2726 }
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2727
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2728 static void
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2729 block_select(GntMenuItem *item, gpointer n)
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2730 {
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2731 PurpleRequestFields *fields;
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2732 PurpleRequestFieldGroup *group;
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2733 PurpleRequestField *field;
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2734
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2735 fields = purple_request_fields_new();
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2736
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2737 group = purple_request_field_group_new(NULL);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2738 purple_request_fields_add_group(fields, group);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2739
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2740 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2741 purple_request_field_set_type_hint(field, "screenname");
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2742 purple_request_field_set_required(field, TRUE);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2743 purple_request_field_group_add_field(group, field);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2744
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2745 field = purple_request_field_account_new("account", _("Account"), NULL);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2746 purple_request_field_set_type_hint(field, "account");
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2747 purple_request_field_set_visible(field,
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2748 (purple_connections_get_all() != NULL &&
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2749 purple_connections_get_all()->next != NULL));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2750 purple_request_field_set_required(field, TRUE);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2751 purple_request_field_group_add_field(group, field);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2752
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2753 field = purple_request_field_choice_new("block", _("Block/Unblock"), 1);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2754 purple_request_field_choice_add(field, _("Block"));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2755 purple_request_field_choice_add(field, _("Unblock"));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2756 purple_request_field_group_add_field(group, field);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2757
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2758 purple_request_fields(purple_get_blist(), _("Block/Unblock"),
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2759 NULL,
22794
cc8903c59d6b Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents: 22786
diff changeset
2760 _("Please enter the username or alias of the person "
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2761 "you would like to Block/Unblock."),
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2762 fields,
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2763 _("OK"), G_CALLBACK(block_select_cb),
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2764 _("Cancel"), NULL,
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2765 NULL, NULL, NULL,
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2766 NULL);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2767 }
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
2768
18428
1dbd8ce2f11f Fix a bug where buddies from offline accounts were showing up.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18345
diff changeset
2769 /* send_im_select* -- Xerox */
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2770 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2771 send_im_select_cb(gpointer data, PurpleRequestFields *fields)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2772 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2773 PurpleAccount *account;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2774 const char *username;
22429
b0b8c94118c8 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22356
diff changeset
2775 PurpleConversation *conv;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2776
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2777 account = purple_request_fields_get_account(fields, "account");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2778 username = purple_request_fields_get_string(fields, "screenname");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2779
22429
b0b8c94118c8 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22356
diff changeset
2780 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, username);
b0b8c94118c8 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22356
diff changeset
2781 purple_conversation_present(conv);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2782 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2783
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2784 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2785 send_im_select(GntMenuItem *item, gpointer n)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2786 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2787 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2788 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2789 PurpleRequestField *field;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2790
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2791 fields = purple_request_fields_new();
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2792
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2793 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2794 purple_request_fields_add_group(fields, group);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2795
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2796 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2797 purple_request_field_set_type_hint(field, "screenname");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2798 purple_request_field_set_required(field, TRUE);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2799 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2800
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2801 field = purple_request_field_account_new("account", _("Account"), NULL);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2802 purple_request_field_set_type_hint(field, "account");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2803 purple_request_field_set_visible(field,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2804 (purple_connections_get_all() != NULL &&
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2805 purple_connections_get_all()->next != NULL));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2806 purple_request_field_set_required(field, TRUE);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
2807 purple_request_field_group_add_field(group, field);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2808
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2809 purple_request_fields(purple_get_blist(), _("New Instant Message"),
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2810 NULL,
22794
cc8903c59d6b Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents: 22786
diff changeset
2811 _("Please enter the username or alias of the person "
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2812 "you would like to IM."),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2813 fields,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2814 _("OK"), G_CALLBACK(send_im_select_cb),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2815 _("Cancel"), NULL,
16439
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16424
diff changeset
2816 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2817 NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2818 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2819
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2820 static void
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2821 join_chat_select_cb(gpointer data, PurpleRequestFields *fields)
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2822 {
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2823 PurpleAccount *account;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2824 const char *name;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2825 PurpleConnection *gc;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2826 PurpleChat *chat;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2827 GHashTable *hash = NULL;
23279
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2828 PurpleConversation *conv;
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2829
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2830 account = purple_request_fields_get_account(fields, "account");
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2831 name = purple_request_fields_get_string(fields, "chat");
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2832
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2833 if (!purple_account_is_connected(account))
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2834 return;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2835
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
2836 gc = purple_account_get_connection(account);
23279
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2837 /* Create a new conversation now. This will give focus to the new window.
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2838 * But it's necessary to pretend that we left the chat, because otherwise
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2839 * a new conversation window will pop up when we finally join the chat. */
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2840 if (!(conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, account))) {
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2841 conv = purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2842 purple_conv_chat_left(PURPLE_CONV_CHAT(conv));
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2843 } else {
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2844 purple_conversation_present(conv);
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2845 }
a601807bae2b Fix chat joining from the 'Join a chat' dialog. Thanks to w00b on IRC for
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22840
diff changeset
2846
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2847 chat = purple_blist_find_chat(account, name);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2848 if (chat == NULL) {
22214
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
2849 PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
2850 if (info->chat_info_defaults != NULL)
2b426862ffbf Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22213
diff changeset
2851 hash = info->chat_info_defaults(gc, name);
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2852 } else {
22219
797230b3e48e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22217
diff changeset
2853 hash = purple_chat_get_components(chat);
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2854 }
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2855 serv_join_chat(gc, hash);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2856 if (chat == NULL && hash != NULL)
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2857 g_hash_table_destroy(hash);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2858 }
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2859
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2860 static void
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2861 join_chat_select(GntMenuItem *item, gpointer n)
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2862 {
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2863 PurpleRequestFields *fields;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2864 PurpleRequestFieldGroup *group;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2865 PurpleRequestField *field;
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2866
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2867 fields = purple_request_fields_new();
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2868
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2869 group = purple_request_field_group_new(NULL);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2870 purple_request_fields_add_group(fields, group);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2871
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2872 field = purple_request_field_string_new("chat", _("Channel"), NULL, FALSE);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2873 purple_request_field_set_required(field, TRUE);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2874 purple_request_field_group_add_field(group, field);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2875
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2876 field = purple_request_field_account_new("account", _("Account"), NULL);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2877 purple_request_field_set_type_hint(field, "account");
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2878 purple_request_field_set_visible(field,
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2879 (purple_connections_get_all() != NULL &&
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2880 purple_connections_get_all()->next != NULL));
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2881 purple_request_field_set_required(field, TRUE);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2882 purple_request_field_group_add_field(group, field);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2883
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2884 purple_request_fields(purple_get_blist(), _("Join a Chat"),
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2885 NULL,
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2886 _("Please enter the name of the chat you want to join."),
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2887 fields,
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2888 _("Join"), G_CALLBACK(join_chat_select_cb),
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2889 _("Cancel"), NULL,
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
2890 NULL, NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2891 NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2892 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2893
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2894 static void
22840
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2895 view_log_select_cb(gpointer data, PurpleRequestFields *fields)
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2896 {
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2897 PurpleAccount *account;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2898 const char *name;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2899 PurpleBuddy *buddy;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2900 PurpleContact *contact;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2901
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2902 account = purple_request_fields_get_account(fields, "account");
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2903 name = purple_request_fields_get_string(fields, "screenname");
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2904
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2905 buddy = purple_find_buddy(account, name);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2906 if (buddy) {
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2907 contact = purple_buddy_get_contact(buddy);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2908 } else {
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2909 contact = NULL;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2910 }
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2911
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2912 if (contact) {
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2913 finch_log_show_contact(contact);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2914 } else {
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2915 finch_log_show(PURPLE_LOG_IM, name, account);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2916 }
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2917 }
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2918
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2919 static void
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2920 view_log_cb(GntMenuItem *item, gpointer n)
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2921 {
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2922 PurpleRequestFields *fields;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2923 PurpleRequestFieldGroup *group;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2924 PurpleRequestField *field;
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2925
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2926 fields = purple_request_fields_new();
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2927
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2928 group = purple_request_field_group_new(NULL);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2929 purple_request_fields_add_group(fields, group);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2930
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2931 field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2932 purple_request_field_set_type_hint(field, "screenname-all");
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2933 purple_request_field_set_required(field, TRUE);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2934 purple_request_field_group_add_field(group, field);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2935
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2936 field = purple_request_field_account_new("account", _("Account"), NULL);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2937 purple_request_field_set_type_hint(field, "account");
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2938 purple_request_field_set_visible(field,
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2939 (purple_accounts_get_all() != NULL &&
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2940 purple_accounts_get_all()->next != NULL));
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2941 purple_request_field_set_required(field, TRUE);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2942 purple_request_field_group_add_field(group, field);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2943 purple_request_field_account_set_show_all(field, TRUE);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2944
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2945 purple_request_fields(purple_get_blist(), _("View Log"),
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2946 NULL,
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2947 _("Please enter the username or alias of the person "
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2948 "whose log you would like to view."),
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2949 fields,
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2950 _("OK"), G_CALLBACK(view_log_select_cb),
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2951 _("Cancel"), NULL,
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2952 NULL, NULL, NULL,
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2953 NULL);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2954 }
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2955
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
2956 static void
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
2957 view_all_logs_cb(GntMenuItem *item, gpointer n)
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
2958 {
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
2959 finch_log_show(PURPLE_LOG_IM, NULL, NULL);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
2960 }
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
2961
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
2962 static void
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2963 menu_add_buddy_cb(GntMenuItem *item, gpointer null)
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2964 {
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2965 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2966 }
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2967
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2968 static void
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2969 menu_add_chat_cb(GntMenuItem *item, gpointer null)
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2970 {
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2971 purple_blist_request_add_chat(NULL, NULL, NULL, NULL);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2972 }
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2973
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2974 static void
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2975 menu_add_group_cb(GntMenuItem *item, gpointer null)
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2976 {
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2977 purple_blist_request_add_group();
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2978 }
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2979
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2980 static void
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2981 menu_group_set_cb(GntMenuItem *item, gpointer null)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2982 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2983 const char *id = g_object_get_data(G_OBJECT(item), "grouping-id");
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
2984 purple_prefs_set_string(PREF_ROOT "/grouping", id);
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2985 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2986
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
2987 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21738
diff changeset
2988 create_menu(void)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2989 {
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
2990 GntWidget *menu, *sub, *subsub;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2991 GntMenuItem *item;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2992 GntWindow *window;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2993
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2994 if (!ggblist)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2995 return;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2996
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2997 window = GNT_WINDOW(ggblist->window);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2998 ggblist->menu = menu = gnt_menu_new(GNT_MENU_TOPLEVEL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2999 gnt_window_set_menu(window, GNT_MENU(menu));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3000
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3001 item = gnt_menuitem_new(_("Options"));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3002 gnt_menu_add_item(GNT_MENU(menu), item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3003
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3004 sub = gnt_menu_new(GNT_MENU_POPUP);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3005 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3006
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3007 item = gnt_menuitem_new(_("Send IM..."));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3008 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "send-im");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3009 gnt_menu_add_item(GNT_MENU(sub), item);
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
3010 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3011
22250
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
3012 item = gnt_menuitem_new(_("Block/Unblock..."));
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
3013 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "block-unblock");
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
3014 gnt_menu_add_item(GNT_MENU(sub), item);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
3015 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), block_select, NULL);
9b620ed4fbc4 Add a [X] Blocked item to the buddy context menu, and add a dialog to
Richard Nelson <wabz@pidgin.im>
parents: 22248
diff changeset
3016
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
3017 item = gnt_menuitem_new(_("Join Chat..."));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3018 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "join-chat");
20739
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
3019 gnt_menu_add_item(GNT_MENU(sub), item);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
3020 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL);
3f9520e09805 Add a 'Join Chat...' item in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20625
diff changeset
3021
22840
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
3022 item = gnt_menuitem_new(_("View Log..."));
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
3023 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "view-log");
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
3024 gnt_menu_add_item(GNT_MENU(sub), item);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
3025 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_log_cb, NULL);
04e0d8677b9a Add a 'View log' option in the buddylist menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22838
diff changeset
3026
23288
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
3027 item = gnt_menuitem_new(_("View All Logs"));
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
3028 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "view-all-logs");
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
3029 gnt_menu_add_item(GNT_MENU(sub), item);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
3030 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_all_logs_cb, NULL);
5f9793c8510a Added "View All Logs" menu in the buddylist to display a list of all IM
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23279
diff changeset
3031
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3032 item = gnt_menuitem_new(_("Show"));
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3033 gnt_menu_add_item(GNT_MENU(sub), item);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3034 subsub = gnt_menu_new(GNT_MENU_POPUP);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3035 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3036
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3037 item = gnt_menuitem_check_new(_("Empty groups"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3038 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "show-empty-groups");
18441
24ecab0d40b3 Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18437
diff changeset
3039 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
24ecab0d40b3 Plucked revision from im.pidgin.soc.2007.finchfeat to allow showing empty
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18437
diff changeset
3040 purple_prefs_get_bool(PREF_ROOT "/emptygroups"));
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3041 gnt_menu_add_item(GNT_MENU(subsub), item);
18442
6d8aed4adcd6 Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18441
diff changeset
3042 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/emptygroups");
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3043
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3044 item = gnt_menuitem_check_new(_("Offline buddies"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3045 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "show-offline-buddies");
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
3046 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3047 purple_prefs_get_bool(PREF_ROOT "/showoffline"));
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3048 gnt_menu_add_item(GNT_MENU(subsub), item);
18442
6d8aed4adcd6 Minor changes to remove a couple of lines of duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18441
diff changeset
3049 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/showoffline");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3050
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3051 item = gnt_menuitem_new(_("Sort"));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3052 gnt_menu_add_item(GNT_MENU(sub), item);
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3053 subsub = gnt_menu_new(GNT_MENU_POPUP);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3054 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3055
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3056 item = gnt_menuitem_new(_("By Status"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3057 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "sort-status");
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3058 gnt_menu_add_item(GNT_MENU(subsub), item);
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
3059 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "status");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3060
20597
591267f6f1d5 propagate from branch 'im.pidgin.pidgin' (head 025faf23aaac403798451974c320c4de6df470d5)
Gabriel Schulhof <nix@go-nix.ca>
parents: 20561 19975
diff changeset
3061 item = gnt_menuitem_new(_("Alphabetically"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3062 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "sort-alpha");
20597
591267f6f1d5 propagate from branch 'im.pidgin.pidgin' (head 025faf23aaac403798451974c320c4de6df470d5)
Gabriel Schulhof <nix@go-nix.ca>
parents: 20561 19975
diff changeset
3063 gnt_menu_add_item(GNT_MENU(subsub), item);
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15870
diff changeset
3064 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "text");
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3065
20604
6c6fd163a992 Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20603
diff changeset
3066 item = gnt_menuitem_new(_("By Log Size"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3067 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "sort-log");
20604
6c6fd163a992 Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20603
diff changeset
3068 gnt_menu_add_item(GNT_MENU(subsub), item);
6c6fd163a992 Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20603
diff changeset
3069 gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log");
6c6fd163a992 Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20603
diff changeset
3070
6c6fd163a992 Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20603
diff changeset
3071 item = gnt_menuitem_new(_("Add"));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3072 gnt_menu_add_item(GNT_MENU(sub), item);
20604
6c6fd163a992 Restoring gntblist.c:create_menu
Gabriel Schulhof <nix@go-nix.ca>
parents: 20603
diff changeset
3073
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3074 subsub = gnt_menu_new(GNT_MENU_POPUP);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3075 gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3076
22174
18ad08694be4 Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22172
diff changeset
3077 item = gnt_menuitem_new(_("Buddy"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3078 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "add-buddy");
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3079 gnt_menu_add_item(GNT_MENU(subsub), item);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3080 gnt_menuitem_set_callback(item, menu_add_buddy_cb, NULL);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3081
22174
18ad08694be4 Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22172
diff changeset
3082 item = gnt_menuitem_new(_("Chat"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3083 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "add-chat");
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3084 gnt_menu_add_item(GNT_MENU(subsub), item);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3085 gnt_menuitem_set_callback(item, menu_add_chat_cb, NULL);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3086
22174
18ad08694be4 Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22172
diff changeset
3087 item = gnt_menuitem_new(_("Group"));
21214
05bb2853f350 Add IDs to the menuitems in the buddylist menu so they can have acceletor keys.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20739
diff changeset
3088 gnt_menuitem_set_id(GNT_MENU_ITEM(item), "add-group");
20561
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3089 gnt_menu_add_item(GNT_MENU(subsub), item);
c7b2c6ae3bea Re-arrange the menu. Add 'Add buddy/chat/group' in the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20074
diff changeset
3090 gnt_menuitem_set_callback(item, menu_add_group_cb, NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3091
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3092 ggblist->grouping = item = gnt_menuitem_new(_("Grouping"));
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3093 gnt_menu_add_item(GNT_MENU(sub), item);
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3094 reconstruct_grouping_menu();
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3095
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3096 reconstruct_accounts_menu();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3097 gnt_menu_add_item(GNT_MENU(menu), ggblist->accounts);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3098
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3099 reconstruct_plugins_menu();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3100 gnt_menu_add_item(GNT_MENU(menu), ggblist->plugins);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3101 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3102
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3103 void finch_blist_show()
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3104 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3105 blist_show(purple_get_blist());
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3106 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3107
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3108 static void
16105
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
3109 group_collapsed(GntWidget *widget, PurpleBlistNode *node, gboolean collapsed, gpointer null)
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
3110 {
16106
b73761ac005e ...only for groups
Richard Nelson <wabz@pidgin.im>
parents: 16105
diff changeset
3111 if (PURPLE_BLIST_NODE_IS_GROUP(node))
b73761ac005e ...only for groups
Richard Nelson <wabz@pidgin.im>
parents: 16105
diff changeset
3112 purple_blist_node_set_bool(node, "collapsed", collapsed);
16105
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
3113 }
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
3114
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
3115 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3116 blist_show(PurpleBuddyList *list)
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3117 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3118 if (ggblist == NULL)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3119 new_list(list);
18345
2d4df5ef0090 If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18332
diff changeset
3120 else if (ggblist->window) {
2d4df5ef0090 If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18332
diff changeset
3121 gnt_window_present(ggblist->window);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3122 return;
18345
2d4df5ef0090 If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18332
diff changeset
3123 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3124
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3125 ggblist->window = gnt_vwindow_new(FALSE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3126 gnt_widget_set_name(ggblist->window, "buddylist");
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3127 gnt_box_set_toplevel(GNT_BOX(ggblist->window), TRUE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3128 gnt_box_set_title(GNT_BOX(ggblist->window), _("Buddy List"));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3129 gnt_box_set_pad(GNT_BOX(ggblist->window), 0);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3130
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3131 ggblist->tree = gnt_tree_new();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3132
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3133 GNT_WIDGET_SET_FLAGS(ggblist->tree, GNT_WIDGET_NO_BORDER);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3134 gnt_widget_set_size(ggblist->tree, purple_prefs_get_int(PREF_ROOT "/size/width"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3135 purple_prefs_get_int(PREF_ROOT "/size/height"));
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3136 gnt_widget_set_position(ggblist->window, purple_prefs_get_int(PREF_ROOT "/position/x"),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3137 purple_prefs_get_int(PREF_ROOT "/position/y"));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3138
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3139 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3140
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3141 ggblist->status = gnt_combo_box_new();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3142 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->status);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3143 ggblist->statustext = gnt_entry_new(NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3144 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->statustext);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3145
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3146 gnt_widget_show(ggblist->window);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3147
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3148 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3149 PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3150 purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3151 PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
26694
83e6e710cbf3 Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents: 26650
diff changeset
3152 purple_signal_connect(purple_accounts_get_handle(), "account-actions-changed", finch_blist_get_handle(),
83e6e710cbf3 Add a new signal which is emitted (after the account is connected) if the
Paul Aurich <paul@darkrain42.org>
parents: 26650
diff changeset
3153 PURPLE_CALLBACK(reconstruct_accounts_menu), NULL);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3154 purple_signal_connect(purple_blist_get_handle(), "buddy-status-changed", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3155 PURPLE_CALLBACK(buddy_status_changed), ggblist);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3156 purple_signal_connect(purple_blist_get_handle(), "buddy-idle-changed", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3157 PURPLE_CALLBACK(buddy_idle_changed), ggblist);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3158
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3159 purple_signal_connect(purple_plugins_get_handle(), "plugin-load", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3160 PURPLE_CALLBACK(reconstruct_plugins_menu), NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3161 purple_signal_connect(purple_plugins_get_handle(), "plugin-unload", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3162 PURPLE_CALLBACK(reconstruct_plugins_menu), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3163
21981
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
3164 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_blist_get_handle(),
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
3165 PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
3166 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_blist_get_handle(),
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
3167 PURPLE_CALLBACK(buddy_signed_on_off), ggblist);
05c2ef19e2fa Blink the buddies that signed on/off recently for six seconds.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21738
diff changeset
3168
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3169 #if 0
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3170 /* These I plan to use to indicate unread-messages etc. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3171 purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3172 PURPLE_CALLBACK(received_im_msg), list);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3173 purple_signal_connect(purple_conversations_get_handle(), "sent-im-msg", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3174 PURPLE_CALLBACK(sent_im_msg), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3175
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3176 purple_signal_connect(purple_conversations_get_handle(), "received-chat-msg", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3177 PURPLE_CALLBACK(received_chat_msg), list);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3178 #endif
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3179
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3180 g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3181 g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3182 g_signal_connect(G_OBJECT(ggblist->tree), "context-menu", G_CALLBACK(context_menu), ggblist);
16105
1983ecd15174 Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
3183 g_signal_connect(G_OBJECT(ggblist->tree), "collapse-toggled", G_CALLBACK(group_collapsed), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3184 g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3185 g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3186 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3187 g_signal_connect_data(G_OBJECT(ggblist->tree), "lost-focus", G_CALLBACK(remove_peripherals),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3188 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
17707
3c3fc1432a01 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 16655
diff changeset
3189 g_signal_connect_data(G_OBJECT(ggblist->window), "workspace-hidden", G_CALLBACK(remove_peripherals),
3c3fc1432a01 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 16655
diff changeset
3190 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3191 g_signal_connect(G_OBJECT(ggblist->tree), "size_changed", G_CALLBACK(size_changed_cb), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3192 g_signal_connect(G_OBJECT(ggblist->window), "position_set", G_CALLBACK(save_position_cb), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3193 g_signal_connect(G_OBJECT(ggblist->window), "destroy", G_CALLBACK(reset_blist_window), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3194
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3195 /* Status signals */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3196 purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-changed", finch_blist_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3197 PURPLE_CALLBACK(savedstatus_changed), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3198 g_signal_connect(G_OBJECT(ggblist->status), "selection_changed",
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3199 G_CALLBACK(status_selection_changed), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3200 g_signal_connect(G_OBJECT(ggblist->statustext), "key_pressed",
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3201 G_CALLBACK(status_text_changed), NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3202
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3203 create_menu();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3204
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3205 populate_buddylist();
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3206
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15817
diff changeset
3207 savedstatus_changed(purple_savedstatus_get_current(), NULL);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3208 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3209
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3210 void finch_blist_uninit()
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3211 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3212 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3213
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3214 gboolean finch_blist_get_position(int *x, int *y)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3215 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3216 if (!ggblist || !ggblist->window)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3217 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3218 gnt_widget_get_position(ggblist->window, x, y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3219 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3220 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3221
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3222 void finch_blist_set_position(int x, int y)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3223 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3224 gnt_widget_set_position(ggblist->window, x, y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3225 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3226
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3227 gboolean finch_blist_get_size(int *width, int *height)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3228 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3229 if (!ggblist || !ggblist->window)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3230 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3231 gnt_widget_get_size(ggblist->window, width, height);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3232 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3233 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3234
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3235 void finch_blist_set_size(int width, int height)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3236 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3237 gnt_widget_set_size(ggblist->window, width, height);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3238 }
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3239
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3240 void finch_blist_install_manager(const FinchBlistManager *manager)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3241 {
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3242 if (!g_list_find(managers, manager)) {
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3243 managers = g_list_append(managers, (gpointer)manager);
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3244 reconstruct_grouping_menu();
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
3245 if (strcmp(manager->id, purple_prefs_get_string(PREF_ROOT "/grouping")) == 0)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
3246 purple_prefs_trigger_callback(PREF_ROOT "/grouping");
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3247 }
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3248 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3249
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3250 void finch_blist_uninstall_manager(const FinchBlistManager *manager)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3251 {
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3252 if (g_list_find(managers, manager)) {
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3253 managers = g_list_remove(managers, manager);
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3254 reconstruct_grouping_menu();
22178
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
3255 if (strcmp(manager->id, purple_prefs_get_string(PREF_ROOT "/grouping")) == 0)
b0bce463aa4e Remember the selected grouping option.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22177
diff changeset
3256 purple_prefs_trigger_callback(PREF_ROOT "/grouping");
22177
71d0761fe572 Reconstruct the 'Grouping' menu when a blist manager is un/installed.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22174
diff changeset
3257 }
22171
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3258 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3259
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3260 FinchBlistManager * finch_blist_manager_find(const char *id)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3261 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3262 GList *iter = managers;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3263 if (!id)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3264 return NULL;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3265
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3266 for (; iter; iter = iter->next) {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3267 FinchBlistManager *m = iter->data;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3268 if (strcmp(id, m->id) == 0)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3269 return m;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3270 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3271 return NULL;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3272 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3273
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3274 GntTree * finch_blist_get_tree(void)
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3275 {
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3276 return ggblist ? GNT_TREE(ggblist->tree) : NULL;
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3277 }
2c9646c55369 Add a buddy list manager for finch. This allows plugins to show the buddylist
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22168
diff changeset
3278