pidgin/pidginaddbuddydialog.c

Sun, 28 Aug 2022 21:53:47 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Sun, 28 Aug 2022 21:53:47 -0500
branch
gtk4
changeset 41613
4be49932c288
parent 41561
ac5416e7e4f5
child 41854
c1d7e7445b0f
permissions
-rw-r--r--

Set volume on audio test pipeline at startup

If you change the volume slider in prefs, then the Test Audio button does not respect that initially. If you move the slider around with the test playing, then the volume jumps to whatever you have. But stopping and starting the test again goes to full volume.

Testing Done:
Opened prefs, set to test source, made volume really low, and hit Test Audio. Output volume was low immediately.

Reviewed at https://reviews.imfreedom.org/r/1670/

41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <glib/gi18n.h>
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include "pidginaddbuddydialog.h"
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "gtkaccount.h"
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 #include "pidginaccountchooser.h"
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 #include "pidginaccountstore.h"
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 #include "pidgincore.h"
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 struct _PidginAddBuddyDialog {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 GtkDialog parent;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 GtkTreeModel *filter;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 GtkWidget *account;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 GtkWidget *username;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 GtkWidget *alias;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 GtkWidget *message;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 GtkWidget *group;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 };
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 G_DEFINE_TYPE(PidginAddBuddyDialog, pidgin_add_buddy_dialog, GTK_TYPE_DIALOG)
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 /******************************************************************************
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 * Helpers
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 *****************************************************************************/
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 static gboolean
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 pidgin_add_buddy_dialog_filter_accounts(GtkTreeModel *model, GtkTreeIter *iter,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 gpointer data)
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 PurpleAccount *account = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 PurpleProtocol *protocol = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 gboolean ret = FALSE;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 g_return_val_if_fail(GTK_IS_TREE_MODEL(model), FALSE);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 g_return_val_if_fail(iter != NULL, FALSE);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 gtk_tree_model_get(model, iter, PIDGIN_ACCOUNT_STORE_COLUMN_ACCOUNT,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 &account, -1);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 if(!PURPLE_IS_ACCOUNT(account)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 return FALSE;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 protocol = purple_account_get_protocol(account);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 if(PURPLE_IS_PROTOCOL(protocol)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 ret = PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER, add_buddy);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 g_object_unref(G_OBJECT(account));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 return ret;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 pidgin_add_buddy_dialog_validate(PidginAddBuddyDialog *dialog) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 PurpleAccount *account = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 gboolean valid = FALSE;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(dialog->account));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 if(PURPLE_IS_ACCOUNT(account)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 PurpleProtocol *protocol = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 protocol = purple_account_get_protocol(account);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 if(PURPLE_IS_PROTOCOL(protocol)) {
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
88 const gchar *username = gtk_editable_get_text(GTK_EDITABLE(dialog->username));
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 valid = purple_validate(protocol, username);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 valid);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 /******************************************************************************
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 * Callbacks
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 *****************************************************************************/
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 pidgin_add_buddy_dialog_response_cb(GtkDialog *dialog, gint response_id,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 G_GNUC_UNUSED gpointer data)
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 PidginAddBuddyDialog *abdialog = PIDGIN_ADD_BUDDY_DIALOG(dialog);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 if(response_id == GTK_RESPONSE_OK) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 PurpleAccount *account = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 PurpleBuddy *buddy = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 PurpleConversation *im = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 PurpleConversationManager *manager = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 PurpleGroup *group = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 const gchar *username = NULL, *alias = NULL, *message = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 gchar *groupname = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 /* Grab all of the values that the user entered. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(abdialog->account));
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
118 username = gtk_editable_get_text(GTK_EDITABLE(abdialog->username));
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
119 alias = gtk_editable_get_text(GTK_EDITABLE(abdialog->alias));
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
120 message = gtk_editable_get_text(GTK_EDITABLE(abdialog->message));
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 groupname = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(abdialog->group));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 /* Make anything that is an empty string NULL. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 if(alias != NULL && *alias == '\0') {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 alias = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 if(message != NULL && *message == '\0') {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 message = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 if(groupname != NULL && *groupname == '\0') {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 g_clear_pointer(&groupname, g_free);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 /* Find the PurpleGroup that the user requested. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 if(groupname != NULL) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 group = purple_blist_find_group(groupname);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 if(group == NULL) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 /* Create the group if it's new. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 group = purple_group_new(groupname);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 purple_blist_add_group(group, NULL);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 } else {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 /* Otherwise see if we already have a buddy in the existing
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 * group.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 buddy = purple_blist_find_buddy_in_group(account, username,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 group);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 } else {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 /* If a group name was not provided, look if the buddy exists, and
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 * use its group.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 buddy = purple_blist_find_buddy(account, username);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 if(PURPLE_IS_BUDDY(buddy)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 group = purple_buddy_get_group(buddy);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 /* If we don't a buddy yet, create it now. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 if(!PURPLE_IS_BUDDY(buddy)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 buddy = purple_buddy_new(account, username, alias);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 purple_blist_add_buddy(buddy, NULL, group, NULL);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 /* Add the buddy to the account. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 purple_account_add_buddy(account, buddy, message);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 #if 0
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 /* This is disabled for now because gtk_blist_auto_personize is static
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 * and we're going to be changing the data structure of the contact list
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 * in the near future, so this probably completely change.
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 /* Offer to merge people with the same alias. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 if(alias != NULL && PURPLE_IS_GROUP(group)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 gtk_blist_auto_personize(PURPLE_BLIST_NODE(group), alias);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 #endif
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 /* Finally update the icon for any open im's with this person. */
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 manager = purple_conversation_manager_get_default();
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 im = purple_conversation_manager_find_im(manager, account, username);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 if(PURPLE_IS_IM_CONVERSATION(im)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 PurpleBuddyIcon *icon = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 icon = purple_im_conversation_get_icon(PURPLE_IM_CONVERSATION(im));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 if(icon != NULL) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 purple_buddy_icon_update(icon);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 g_free(groupname);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
197 gtk_window_destroy(GTK_WINDOW(abdialog));
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 pidgin_add_buddy_dialog_account_changed_cb(GtkComboBox *widget, gpointer data) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 PidginAddBuddyDialog *dialog = data;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 PurpleAccount *account = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 gboolean message_sensitive = TRUE;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 account = pidgin_account_chooser_get_selected(PIDGIN_ACCOUNT_CHOOSER(widget));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 if(PURPLE_IS_ACCOUNT(account)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 PurpleProtocol *protocol = purple_account_get_protocol(account);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 if(PURPLE_IS_PROTOCOL(protocol)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 PurpleProtocolOptions opts = purple_protocol_get_options(protocol);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 message_sensitive = (opts & OPT_PROTO_INVITE_MESSAGE);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 gtk_widget_set_sensitive(dialog->message, message_sensitive);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 pidgin_add_buddy_dialog_validate(dialog);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 pidgin_add_buddy_dialog_username_changed_cb(G_GNUC_UNUSED GtkEditable *editable,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 gpointer data)
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 pidgin_add_buddy_dialog_validate(data);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 pidgin_add_buddy_dialog_group_cb(PurpleBlistNode *node, gpointer data) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 PidginAddBuddyDialog *dialog = data;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 PurpleGroup *group = PURPLE_GROUP(node);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dialog->group),
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 purple_group_get_name(group));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 /******************************************************************************
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 * GObject Implementation
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 *****************************************************************************/
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 pidgin_add_buddy_dialog_init(PidginAddBuddyDialog *dialog) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 gtk_widget_init_template(GTK_WIDGET(dialog));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(dialog->filter),
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 pidgin_add_buddy_dialog_filter_accounts,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 NULL, NULL);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(dialog->filter));
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->account), 0);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 purple_blist_walk(pidgin_add_buddy_dialog_group_cb, NULL, NULL, NULL,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 dialog);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 static void
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 pidgin_add_buddy_dialog_class_init(PidginAddBuddyDialogClass *klass) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 gtk_widget_class_set_template_from_resource(
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 widget_class,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 "/im/pidgin/Pidgin3/Dialogs/addbuddy.ui"
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 );
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 filter);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 account);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 username);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 alias);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 message);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 group);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 gtk_widget_class_bind_template_callback(widget_class,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 pidgin_add_buddy_dialog_response_cb);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 gtk_widget_class_bind_template_callback(widget_class,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 pidgin_add_buddy_dialog_account_changed_cb);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 gtk_widget_class_bind_template_callback(widget_class,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 pidgin_add_buddy_dialog_username_changed_cb);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 /******************************************************************************
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 * Public API
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 *****************************************************************************/
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 GtkWidget *
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 pidgin_add_buddy_dialog_new(PurpleAccount *account, const gchar *username,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 const gchar *alias, const gchar *message,
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 const gchar *group)
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297 {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298 GtkWidget *dialog = g_object_new(PIDGIN_TYPE_ADD_BUDDY_DIALOG, NULL);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299 PidginAddBuddyDialog *abdialog = PIDGIN_ADD_BUDDY_DIALOG(dialog);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 if(PURPLE_IS_ACCOUNT(account)) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302 pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(abdialog->account),
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 account);
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 if(username != NULL) {
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
307 gtk_editable_set_text(GTK_EDITABLE(abdialog->username), username);
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 if(alias != NULL) {
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
311 gtk_editable_set_text(GTK_EDITABLE(abdialog->alias), alias);
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 if(message != NULL) {
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
315 gtk_editable_set_text(GTK_EDITABLE(abdialog->message), message);
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 if(group != NULL) {
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 GtkWidget *entry = NULL;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320
41561
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
321 entry = gtk_combo_box_get_child(GTK_COMBO_BOX(abdialog->group));
ac5416e7e4f5 Port PidginAddBuddyDialog to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41491
diff changeset
322 gtk_editable_set_text(GTK_EDITABLE(entry), group);
41491
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 }
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 return dialog;
565b31cc5238 Create PidginAddBuddyDialog.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 }

mercurial