finch/gntstatus.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26477
245d9650bb2b
child 27829
94b279f7c38c
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
1 /**
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
2 * @file gntstatus.c GNT Status API
16255
fa61ee19f526 Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@pidgin.im>
parents: 15931
diff changeset
3 * @ingroup finch
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* finch
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15906
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
10 * source distribution.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
11 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
12 * This program is free software; you can redistribute it and/or modify
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
13 * it under the terms of the GNU General Public License as published by
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
15 * (at your option) any later version.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
16 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
17 * This program is distributed in the hope that it will be useful,
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
20 * GNU General Public License for more details.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
21 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
22 * You should have received a copy of the GNU General Public License
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19554
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14251
diff changeset
25 */
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 #include <gnt.h>
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include <gntbox.h>
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 #include <gntbutton.h>
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
29 #include <gntcombobox.h>
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include <gntentry.h>
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 #include <gntlabel.h>
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
32 #include <gntline.h>
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include <gnttree.h>
18763
7731e1028071 Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18558
diff changeset
34 #include <gntutils.h>
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18190
diff changeset
36 #include "finch.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18190
diff changeset
37
26477
245d9650bb2b Remove some extra edits that snuck into Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 22069
diff changeset
38 #include <notify.h>
245d9650bb2b Remove some extra edits that snuck into Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 22069
diff changeset
39 #include <request.h>
245d9650bb2b Remove some extra edits that snuck into Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 22069
diff changeset
40
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 #include "gntstatus.h"
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 static struct
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44 {
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45 GntWidget *window;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 GntWidget *tree;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 } statuses;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
49 typedef struct
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
50 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
51 PurpleSavedStatus *saved;
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
52 GntWidget *window;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
53 GntWidget *title;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
54 GntWidget *type;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
55 GntWidget *message;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
56 GntWidget *tree;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
57 GHashTable *hash; /* list of windows for substatuses */
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
58 } EditStatus;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
59
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
60 typedef struct
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
61 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
62 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
63 const PurpleStatusType *type;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
64 char *message;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
65 } RowInfo;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
66
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
67 typedef struct
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
68 {
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
69 GntWidget *window;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
70 GntWidget *type;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
71 GntWidget *message;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
72
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
73 EditStatus *parent;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
74 RowInfo *key;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
75 } EditSubStatus;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
76
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
77 static GList *edits; /* List of opened edit-status dialogs */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
78
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79 static void
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 reset_status_window(GntWidget *widget, gpointer null)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
81 {
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
82 statuses.window = NULL;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83 statuses.tree = NULL;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
85
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
86 static void
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87 populate_statuses(GntTree *tree)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
89 GList *list;
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
91 for (list = purple_savedstatuses_get_all(); list; list = list->next)
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
93 PurpleSavedStatus *saved = list->data;
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 const char *title, *type, *message;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
96 if (purple_savedstatus_is_transient(saved))
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 continue;
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
99 title = purple_savedstatus_get_title(saved);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
100 type = purple_primitive_get_name_from_type(purple_savedstatus_get_type(saved));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
101 message = purple_savedstatus_get_message(saved); /* XXX: Strip possible markups */
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 gnt_tree_add_row_last(tree, saved,
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 gnt_tree_create_row(tree, title, type, message), NULL);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
109 really_delete_status(PurpleSavedStatus *saved)
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 {
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
111 GList *iter;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
112
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
113 for (iter = edits; iter; iter = iter->next)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
114 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
115 EditStatus *edit = iter->data;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
116 if (edit->saved == saved)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
117 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
118 gnt_widget_destroy(edit->window);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
119 break;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
120 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
121 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
122
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 if (statuses.tree)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124 gnt_tree_remove(GNT_TREE(statuses.tree), saved);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
126 purple_savedstatus_delete(purple_savedstatus_get_title(saved));
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129 static void
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 ask_before_delete(GntWidget *button, gpointer null)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 {
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 char *ask;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
133 PurpleSavedStatus *saved;
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135 g_return_if_fail(statuses.tree != NULL);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137 saved = gnt_tree_get_selection_data(GNT_TREE(statuses.tree));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138 ask = g_strdup_printf(_("Are you sure you want to delete \"%s\""),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
139 purple_savedstatus_get_title(saved));
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140
16490
68c22924d66b 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 <evands@pidgin.im>
parents: 16255
diff changeset
141 purple_request_action(saved, _("Delete Status"), ask, NULL, 0,
68c22924d66b 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 <evands@pidgin.im>
parents: 16255
diff changeset
142 NULL, NULL, NULL,
68c22924d66b 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 <evands@pidgin.im>
parents: 16255
diff changeset
143 saved, 2,
68c22924d66b 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 <evands@pidgin.im>
parents: 16255
diff changeset
144 _("Delete"), really_delete_status,
68c22924d66b 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 <evands@pidgin.im>
parents: 16255
diff changeset
145 _("Cancel"), NULL);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 g_free(ask);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
147 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149 static void
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 use_savedstatus_cb(GntWidget *widget, gpointer null)
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 {
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 g_return_if_fail(statuses.tree != NULL);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
154 purple_savedstatus_activate(gnt_tree_get_selection_data(GNT_TREE(statuses.tree)));
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
157 static void
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
158 edit_savedstatus_cb(GntWidget *widget, gpointer null)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
159 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
160 g_return_if_fail(statuses.tree != NULL);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
161
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15113
diff changeset
162 finch_savedstatus_edit(gnt_tree_get_selection_data(GNT_TREE(statuses.tree)));
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
163 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
164
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15113
diff changeset
165 void finch_savedstatus_show_all()
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166 {
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 GntWidget *window, *tree, *box, *button;
18558
1a90a2b56443 Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18400
diff changeset
168 int widths[] = {25, 12, 35};
18400
549820f4725c If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
169 if (statuses.window) {
549820f4725c If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
170 gnt_window_present(statuses.window);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 return;
18400
549820f4725c If the action-windows are already there, then bring them to front when
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
172 }
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 statuses.window = window = gnt_vbox_new(FALSE);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175 gnt_box_set_toplevel(GNT_BOX(window), TRUE);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176 gnt_box_set_title(GNT_BOX(window), _("Saved Statuses"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 gnt_box_set_fill(GNT_BOX(window), FALSE);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 gnt_box_set_pad(GNT_BOX(window), 0);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 /* XXX: Add some sorting function to sort alphabetically, perhaps */
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 statuses.tree = tree = gnt_tree_new_with_columns(3);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183 gnt_tree_set_column_titles(GNT_TREE(tree), _("Title"), _("Type"), _("Message"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
18558
1a90a2b56443 Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18400
diff changeset
185 gnt_tree_set_column_width_ratio(GNT_TREE(tree), widths);
1a90a2b56443 Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18400
diff changeset
186 gnt_widget_set_size(tree, 72, 0);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187 gnt_box_add_widget(GNT_BOX(window), tree);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 populate_statuses(GNT_TREE(tree));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 box = gnt_hbox_new(FALSE);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 gnt_box_add_widget(GNT_BOX(window), box);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 button = gnt_button_new(_("Use"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 gnt_box_add_widget(GNT_BOX(box), button);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 g_signal_connect(G_OBJECT(button), "activate",
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 G_CALLBACK(use_savedstatus_cb), NULL);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199 button = gnt_button_new(_("Add"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
200 gnt_box_add_widget(GNT_BOX(box), button);
18763
7731e1028071 Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18558
diff changeset
201 gnt_util_set_trigger_widget(tree, GNT_KEY_INS, button);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
202 g_signal_connect_swapped(G_OBJECT(button), "activate",
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15113
diff changeset
203 G_CALLBACK(finch_savedstatus_edit), NULL);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 button = gnt_button_new(_("Edit"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206 gnt_box_add_widget(GNT_BOX(box), button);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
207 g_signal_connect(G_OBJECT(button), "activate",
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
208 G_CALLBACK(edit_savedstatus_cb), NULL);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210 button = gnt_button_new(_("Delete"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 gnt_box_add_widget(GNT_BOX(box), button);
18763
7731e1028071 Add utility function to trigger some button when some key is pressed with
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18558
diff changeset
212 gnt_util_set_trigger_widget(tree, GNT_KEY_DEL, button);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213 g_signal_connect(G_OBJECT(button), "activate",
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 G_CALLBACK(ask_before_delete), NULL);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 button = gnt_button_new(_("Close"));
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 gnt_box_add_widget(GNT_BOX(box), button);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218 g_signal_connect_swapped(G_OBJECT(button), "activate",
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219 G_CALLBACK(gnt_widget_destroy), window);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 g_signal_connect(G_OBJECT(window), "destroy",
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 G_CALLBACK(reset_status_window), NULL);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
223 gnt_widget_show(window);
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
226 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
227 destroy_substatus_win(PurpleAccount *account, EditSubStatus *sub, gpointer null)
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
228 {
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
229 gnt_widget_destroy(sub->window); /* the "destroy" callback will remove entry from the hashtable */
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
230 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
231
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
232 static void
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
233 free_key(gpointer key, gpointer n)
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
234 {
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
235 RowInfo *row = key;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
236 g_free(row->message);
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
237 g_free(key);
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
238 }
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
239
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
240
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
241 static void
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
242 update_edit_list(GntWidget *widget, EditStatus *edit)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
243 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
244 edits = g_list_remove(edits, edit);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
245 purple_notify_close_with_handle(edit);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
246 g_hash_table_foreach(edit->hash, (GHFunc)destroy_substatus_win, NULL);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
247 g_list_foreach((GList*)gnt_tree_get_rows(GNT_TREE(edit->tree)), free_key, NULL);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
248 g_free(edit);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
249 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
250
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
251 static void
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
252 set_substatuses(EditStatus *edit)
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
253 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
254 GList *iter;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
255 for (iter = gnt_tree_get_rows(GNT_TREE(edit->tree)); iter; iter = iter->next) {
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
256 RowInfo *key = iter->data;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
257 if (gnt_tree_get_choice(GNT_TREE(edit->tree), key)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
258 purple_savedstatus_set_substatus(edit->saved, key->account, key->type, key->message);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
259 }
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
260 }
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
261 }
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
262
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
263
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
264 static void
14757
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
265 use_trans_status_cb(GntWidget *button, EditStatus *edit)
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
266 {
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
267 const char *message;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
268 PurpleStatusPrimitive prim;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
269 PurpleSavedStatus *saved;
14757
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
270
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
271 message = gnt_entry_get_text(GNT_ENTRY(edit->message));
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
272 prim = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(edit->type)));
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
273
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
274 saved = purple_savedstatus_find_transient_by_type_and_message(prim, message);
14757
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
275 if (saved == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
276 saved = purple_savedstatus_new(NULL, prim);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
277 edit->saved = saved;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
278 set_substatuses(edit);
14757
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
279 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
280 purple_savedstatus_set_message(saved, message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
281 purple_savedstatus_activate(saved);
14757
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
282 gnt_widget_destroy(edit->window);
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
283 }
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
284
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
285 static void
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
286 save_savedstatus_cb(GntWidget *button, EditStatus *edit)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
287 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
288 const char *title, *message;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
289 PurpleStatusPrimitive prim;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
290 PurpleSavedStatus *find;
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
291
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
292 title = gnt_entry_get_text(GNT_ENTRY(edit->title));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
293 message = gnt_entry_get_text(GNT_ENTRY(edit->message));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
294 if (!message || !*message)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
295 message = NULL;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
296
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
297 prim = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(edit->type)));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
298
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
299 if (!title || !*title)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
300 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
301 purple_notify_error(edit, _("Error"), _("Invalid title"),
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
302 _("Please enter a non-empty title for the status."));
19554
90d1bbdcf0ed Make some of the dialogs look and behave more like each other.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18763
diff changeset
303 gnt_box_give_focus_to_child(GNT_BOX(edit->window), edit->title);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
304 return;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
305 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
306
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
307 find = purple_savedstatus_find(title);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
308 if (find && find != edit->saved)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
309 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
310 purple_notify_error(edit, _("Error"), _("Duplicate title"),
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
311 _("Please enter a different title for the status."));
19554
90d1bbdcf0ed Make some of the dialogs look and behave more like each other.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18763
diff changeset
312 gnt_box_give_focus_to_child(GNT_BOX(edit->window), edit->title);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
313 return;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
314 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
315
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
316 if (edit->saved == NULL)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
317 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
318 edit->saved = purple_savedstatus_new(title, prim);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
319 purple_savedstatus_set_message(edit->saved, message);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
320 set_substatuses(edit);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
321 if (statuses.tree)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
322 gnt_tree_add_row_last(GNT_TREE(statuses.tree), edit->saved,
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
323 gnt_tree_create_row(GNT_TREE(statuses.tree), title,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
324 purple_primitive_get_name_from_type(prim), message), NULL);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
325 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
326 else
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
327 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
328 purple_savedstatus_set_title(edit->saved, title);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
329 purple_savedstatus_set_type(edit->saved, prim);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
330 purple_savedstatus_set_message(edit->saved, message);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
331 if (statuses.tree)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
332 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
333 gnt_tree_change_text(GNT_TREE(statuses.tree), edit->saved, 0, title);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
334 gnt_tree_change_text(GNT_TREE(statuses.tree), edit->saved, 1,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
335 purple_primitive_get_name_from_type(prim));
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
336 gnt_tree_change_text(GNT_TREE(statuses.tree), edit->saved, 2, message);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
337 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
338 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
339
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
340 if (g_object_get_data(G_OBJECT(button), "use"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
341 purple_savedstatus_activate(edit->saved);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
342
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
343 gnt_widget_destroy(edit->window);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
344 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
345
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
346 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
347 add_substatus(EditStatus *edit, PurpleAccount *account)
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
348 {
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
349 char *name;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
350 const char *type = NULL, *message = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
351 PurpleSavedStatusSub *sub = NULL;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
352 RowInfo *key;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
353
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
354 if (!edit || !edit->tree)
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
355 return;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
356
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
357 if (edit->saved)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
358 sub = purple_savedstatus_get_substatus(edit->saved, account);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
359
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
360 key = g_new0(RowInfo, 1);
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
361 key->account = account;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
362
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
363 if (sub)
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
364 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
365 key->type = purple_savedstatus_substatus_get_type(sub);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
366 type = purple_status_type_get_name(key->type);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
367 message = purple_savedstatus_substatus_get_message(sub);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
368 key->message = g_strdup(message);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
369 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
370
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
371 name = g_strdup_printf("%s (%s)", purple_account_get_username(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
372 purple_account_get_protocol_name(account));
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
373 gnt_tree_add_choice(GNT_TREE(edit->tree), key,
15113
956d8ac87bf6 [gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14817
diff changeset
374 gnt_tree_create_row(GNT_TREE(edit->tree),
956d8ac87bf6 [gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14817
diff changeset
375 name, type ? type : "", message ? message : ""), NULL, NULL);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
376
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
377 if (sub)
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
378 gnt_tree_set_choice(GNT_TREE(edit->tree), key, TRUE);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
379 g_free(name);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
380 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
381
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
382 static void
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
383 substatus_window_destroy_cb(GntWidget *window, EditSubStatus *sub)
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
384 {
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
385 g_hash_table_remove(sub->parent->hash, sub->key->account);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
386 g_free(sub);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
387 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
388
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
389 static void
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
390 save_substatus_cb(GntWidget *widget, EditSubStatus *sub)
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
391 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
392 PurpleSavedStatus *saved = sub->parent->saved;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
393 RowInfo *row = sub->key;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
394 const char *message;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
395 PurpleStatusType *type;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
396
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
397 type = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(sub->type));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
398 message = gnt_entry_get_text(GNT_ENTRY(sub->message));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
399
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
400 row->type = type;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
401 row->message = g_strdup(message);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
402
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
403 if (saved) /* Save the substatus if the savedstatus actually exists. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
404 purple_savedstatus_set_substatus(saved, row->account, type, message);
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
405
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
406 gnt_tree_set_choice(GNT_TREE(sub->parent->tree), row, TRUE);
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
407 gnt_tree_change_text(GNT_TREE(sub->parent->tree), row, 1,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
408 purple_status_type_get_name(type));
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
409 gnt_tree_change_text(GNT_TREE(sub->parent->tree), row, 2, message);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
410
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
411 gnt_widget_destroy(sub->window);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
412 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
413
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
414 static gboolean
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
415 popup_substatus(GntTree *tree, const char *key, EditStatus *edit)
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
416 {
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
417 if (key[0] == ' ' && key[1] == 0)
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
418 {
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
419 EditSubStatus *sub;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
420 GntWidget *window, *combo, *entry, *box, *button, *l;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
421 PurpleSavedStatusSub *substatus = NULL;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
422 GList *iter;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
423 char *name;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
424 RowInfo *selected = gnt_tree_get_selection_data(tree);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
425 PurpleAccount *account = selected->account;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
426
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
427 if (gnt_tree_get_choice(tree, selected))
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
428 {
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
429 /* There was a savedstatus for this account. Now remove it. */
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
430 g_free(selected->message);
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
431 selected->type = NULL;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
432 selected->message = NULL;
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
433 /* XXX: should we really be saving it right now? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
434 purple_savedstatus_unset_substatus(edit->saved, account);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
435 gnt_tree_change_text(tree, account, 1, NULL);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
436 gnt_tree_change_text(tree, account, 2, NULL);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
437 return FALSE;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
438 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
439
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
440 if (g_hash_table_lookup(edit->hash, account))
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
441 return TRUE;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
442
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
443 if (edit->saved)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
444 substatus = purple_savedstatus_get_substatus(edit->saved, account);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
445
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
446 sub = g_new0(EditSubStatus, 1);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
447 sub->parent = edit;
14817
742ea8c9ffb4 [gaim-migrate @ 17512]
Richard Nelson <wabz@pidgin.im>
parents: 14757
diff changeset
448 sub->key = selected;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
449
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
450 sub->window = window = gnt_vbox_new(FALSE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
451 gnt_box_set_toplevel(GNT_BOX(window), TRUE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
452 gnt_box_set_title(GNT_BOX(window), _("Substatus")); /* XXX: a better title */
19554
90d1bbdcf0ed Make some of the dialogs look and behave more like each other.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18763
diff changeset
453 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
454
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
455 box = gnt_hbox_new(FALSE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
456 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(_("Account:")));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
457 name = g_strdup_printf("%s (%s)", purple_account_get_username(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
458 purple_account_get_protocol_name(account));
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
459 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(name));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
460 g_free(name);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
461 gnt_box_add_widget(GNT_BOX(window), box);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
462
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
463 box = gnt_hbox_new(FALSE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
464 gnt_box_add_widget(GNT_BOX(box), (l = gnt_label_new(_("Status:"))));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
465 gnt_widget_set_size(l, 0, 1); /* I don't like having to do this */
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
466 sub->type = combo = gnt_combo_box_new();
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
467 gnt_box_add_widget(GNT_BOX(box), combo);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
468 gnt_box_add_widget(GNT_BOX(window), box);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
469
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
470 for (iter = purple_account_get_status_types(account); iter; iter = iter->next)
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
471 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
472 PurpleStatusType *type = iter->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
473 if (!purple_status_type_is_user_settable(type))
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
474 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
475 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), type, purple_status_type_get_name(type));
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
476 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
477
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
478 box = gnt_hbox_new(FALSE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
479 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(_("Message:")));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
480 sub->message = entry = gnt_entry_new(substatus ? purple_savedstatus_substatus_get_message(substatus) : NULL);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
481 gnt_box_add_widget(GNT_BOX(box), entry);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
482 gnt_box_add_widget(GNT_BOX(window), box);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
483
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
484 box = gnt_hbox_new(FALSE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
485 button = gnt_button_new(_("Cancel"));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
486 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), window);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
487 gnt_box_add_widget(GNT_BOX(box), button);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
488 button = gnt_button_new(_("Save"));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
489 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(save_substatus_cb), sub);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
490 gnt_box_add_widget(GNT_BOX(box), button);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
491 gnt_box_add_widget(GNT_BOX(window), box);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
492
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
493 gnt_widget_show(window);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
494
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
495 g_hash_table_insert(edit->hash, account, sub);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
496
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
497 g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(substatus_window_destroy_cb), sub);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
498
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
499 return TRUE;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
500 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
501 return FALSE;
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
502 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
503
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
504 void finch_savedstatus_edit(PurpleSavedStatus *saved)
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
505 {
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
506 EditStatus *edit;
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
507 GntWidget *window, *box, *button, *entry, *combo, *label, *tree;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
508 PurpleStatusPrimitive prims[] = {PURPLE_STATUS_AVAILABLE, PURPLE_STATUS_AWAY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
509 PURPLE_STATUS_INVISIBLE, PURPLE_STATUS_OFFLINE, PURPLE_STATUS_UNSET}, current;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
510 GList *iter;
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
511 int i;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
512
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
513 if (saved)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
514 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
515 GList *iter;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
516 for (iter = edits; iter; iter = iter->next)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
517 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
518 edit = iter->data;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
519 if (edit->saved == saved)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
520 return;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
521 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
522 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
523
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
524 edit = g_new0(EditStatus, 1);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
525 edit->saved = saved;
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
526 edit->window = window = gnt_vbox_new(FALSE);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
527 gnt_box_set_toplevel(GNT_BOX(window), TRUE);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
528 gnt_box_set_title(GNT_BOX(window), _("Edit Status"));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
529 gnt_box_set_fill(GNT_BOX(window), TRUE);
19554
90d1bbdcf0ed Make some of the dialogs look and behave more like each other.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18763
diff changeset
530 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
531 gnt_box_set_pad(GNT_BOX(window), 0);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
532
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
533 edits = g_list_append(edits, edit);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
534
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
535 /* Title */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
536 box = gnt_hbox_new(FALSE);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
537 gnt_box_set_alignment(GNT_BOX(box), GNT_ALIGN_LEFT);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
538 gnt_box_add_widget(GNT_BOX(window), box);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
539 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(_("Title")));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
540
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
541 edit->title = entry = gnt_entry_new(saved ? purple_savedstatus_get_title(saved) : NULL);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
542 gnt_box_add_widget(GNT_BOX(box), entry);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
543
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
544 /* Type */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
545 box = gnt_hbox_new(FALSE);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
546 gnt_box_add_widget(GNT_BOX(window), box);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
547 gnt_box_add_widget(GNT_BOX(box), label = gnt_label_new(_("Status")));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
548 gnt_widget_set_size(label, 0, 1);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
549
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
550 edit->type = combo = gnt_combo_box_new();
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
551 gnt_box_add_widget(GNT_BOX(box), combo);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
552 current = saved ? purple_savedstatus_get_type(saved) : PURPLE_STATUS_UNSET;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
553 for (i = 0; prims[i] != PURPLE_STATUS_UNSET; i++)
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
554 {
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
555 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), GINT_TO_POINTER(prims[i]),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
556 purple_primitive_get_name_from_type(prims[i]));
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
557 if (prims[i] == current)
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
558 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), GINT_TO_POINTER(current));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
559 }
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
560
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
561 /* Message */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
562 box = gnt_hbox_new(FALSE);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
563 gnt_box_add_widget(GNT_BOX(window), box);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
564 gnt_box_add_widget(GNT_BOX(box), gnt_label_new(_("Message")));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
565
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
566 edit->message = entry = gnt_entry_new(saved ? purple_savedstatus_get_message(saved) : NULL);
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
567 gnt_box_add_widget(GNT_BOX(window), entry);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
568
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
569 gnt_box_add_widget(GNT_BOX(window), gnt_hline_new());
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
570 gnt_box_add_widget(GNT_BOX(window), gnt_label_new(_("Use different status for following accounts")));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
571
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
572 edit->hash = g_hash_table_new(g_direct_hash, g_direct_equal);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
573 edit->tree = tree = gnt_tree_new_with_columns(3);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
574 gnt_box_add_widget(GNT_BOX(window), tree);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
575 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
576 gnt_tree_set_column_titles(GNT_TREE(tree), _("Account"), _("Status"), _("Message"));
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
577 gnt_tree_set_col_width(GNT_TREE(tree), 0, 30);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
578 gnt_tree_set_col_width(GNT_TREE(tree), 1, 10);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
579 gnt_tree_set_col_width(GNT_TREE(tree), 2, 30);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
580
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
581 for (iter = purple_accounts_get_all(); iter; iter = iter->next)
14251
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
582 {
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
583 add_substatus(edit, iter->data);
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
584 }
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
585
25305470c355 [gaim-migrate @ 16853]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14194
diff changeset
586 g_signal_connect(G_OBJECT(tree), "key_pressed", G_CALLBACK(popup_substatus), edit);
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
587
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
588 /* The buttons */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
589 box = gnt_hbox_new(FALSE);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
590 gnt_box_add_widget(GNT_BOX(window), box);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
591
14757
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
592 /* Use */
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
593 button = gnt_button_new(_("Use"));
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
594 gnt_box_add_widget(GNT_BOX(box), button);
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
595 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(use_trans_status_cb), edit);
8b8073188289 [gaim-migrate @ 17447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14620
diff changeset
596
14194
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
597 /* Save */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
598 button = gnt_button_new(_("Save"));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
599 gnt_box_add_widget(GNT_BOX(box), button);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
600 g_object_set_data(G_OBJECT(button), "use", NULL);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
601 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(save_savedstatus_cb), edit);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
602
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
603 /* Save & Use */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
604 button = gnt_button_new(_("Save & Use"));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
605 gnt_box_add_widget(GNT_BOX(box), button);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
606 g_object_set_data(G_OBJECT(button), "use", GINT_TO_POINTER(TRUE));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
607 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(save_savedstatus_cb), edit);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
608
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
609 /* Cancel */
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
610 button = gnt_button_new(_("Cancel"));
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
611 gnt_box_add_widget(GNT_BOX(box), button);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
612 g_signal_connect_swapped(G_OBJECT(button), "activate",
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
613 G_CALLBACK(gnt_widget_destroy), window);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
614
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
615 g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(update_edit_list), edit);
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
616
b371a53b1695 [gaim-migrate @ 16774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14188
diff changeset
617 gnt_widget_show(window);
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
618 }
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
619

mercurial