pidgin/pidginaccountmanager.c

Wed, 01 Jan 2025 15:32:28 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 01 Jan 2025 15:32:28 -0600
changeset 43120
a7fd7e06c486
parent 43080
dd2d26e6c6f9
permissions
-rw-r--r--

Prepare for the 2.90.1 release

Testing Done:
Ran `meson dist`

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

41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <glib/gi18n.h>
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include <purple.h>
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "pidginaccountmanager.h"
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 #include "pidgincore.h"
41483
e3bd18c1769d The start of the new account editor.
Gary Kramlich <grim@reaperworld.com>
parents: 41439
diff changeset
30 #include "pidginaccounteditor.h"
42363
25ccd3d6e30e Rename PidginAccountRow to PidginAccountManagerRow
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
31 #include "pidginaccountmanagerrow.h"
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 struct _PidginAccountManager {
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
34 AdwWindow parent;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
35
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
36 AdwNavigationView *view;
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
38 struct {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
39 GtkListBox *list_box;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
40 GtkActionBar *action_bar;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
41 } overview;
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
42
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
43 struct {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
44 PidginAccountEditor *editor;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
45 GtkButton *add;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
46 GtkWidget *remove;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
47 } editor;
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
48
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
49 /* This is used to not go back to the manager when an account was edited
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
50 * directly, via the `accounts->(account)->edit` menu or the
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
51 * `connection error` notification.
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
52 */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
53 gboolean edit_only;
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 };
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42363
diff changeset
56 G_DEFINE_FINAL_TYPE(PidginAccountManager, pidgin_account_manager,
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
57 ADW_TYPE_WINDOW)
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 /******************************************************************************
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 * Helpers
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 *****************************************************************************/
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
62 static GtkWidget *
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
63 pidgin_account_manager_create_widget(gpointer item,
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
64 G_GNUC_UNUSED gpointer data)
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 {
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
66 if(!PURPLE_IS_ACCOUNT(item)) {
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 return NULL;
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 }
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
42363
25ccd3d6e30e Rename PidginAccountRow to PidginAccountManagerRow
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
70 return pidgin_account_manager_row_new(PURPLE_ACCOUNT(item));
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 }
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72
41818
60b85f276728 Clean up pidgin_account_manager_response_cb to make it a bit more readable
Gary Kramlich <grim@reaperworld.com>
parents: 41817
diff changeset
73 static void
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
74 pidgin_account_manager_real_edit_account(PidginAccountManager *manager,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
75 PurpleAccount *account,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
76 gboolean edit_only)
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
77 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
78 g_return_if_fail(PIDGIN_IS_ACCOUNT_MANAGER(manager));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
79
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
80 manager->edit_only = edit_only;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
81
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
82 pidgin_account_editor_set_account(manager->editor.editor, account);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
83
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
84 /* Scroll the editor back to the top of the scrolled window. */
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
85 adw_preferences_page_scroll_to_top(ADW_PREFERENCES_PAGE(manager->editor.editor));
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
86
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
87 if(PURPLE_IS_ACCOUNT(account)) {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
88 gtk_button_set_label(manager->editor.add, _("_Save"));
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
89 gtk_widget_set_visible(manager->editor.remove, TRUE);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
90 } else {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
91 gtk_button_set_label(manager->editor.add, _("_Add"));
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
92 gtk_widget_set_visible(manager->editor.remove, FALSE);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
93 }
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
94
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
95 adw_navigation_view_push_by_tag(manager->view, "editor");
41818
60b85f276728 Clean up pidgin_account_manager_response_cb to make it a bit more readable
Gary Kramlich <grim@reaperworld.com>
parents: 41817
diff changeset
96 }
60b85f276728 Clean up pidgin_account_manager_response_cb to make it a bit more readable
Gary Kramlich <grim@reaperworld.com>
parents: 41817
diff changeset
97
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 /******************************************************************************
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 * Callbacks
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 *****************************************************************************/
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
101 /* This is used by the add button on the placeholder page. */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
102 static void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
103 pidgin_account_manager_create_account(G_GNUC_UNUSED GtkButton *self,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
104 gpointer data)
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
105 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
106 PidginAccountManager *manager = data;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
107
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
108 pidgin_account_manager_real_edit_account(manager, NULL, FALSE);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
109 }
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
110
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 static void
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
112 pidgin_account_manager_refresh_add_cb(GListModel *list,
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
113 G_GNUC_UNUSED guint position,
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
114 G_GNUC_UNUSED guint removed,
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
115 G_GNUC_UNUSED guint added,
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
116 gpointer data)
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 {
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
118 PidginAccountManager *manager = data;
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
120 /* If there are no accounts, the placeholder is shown, which includes an
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
121 * Add button. So hide the button box if that's the case. */
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
122 gtk_action_bar_set_revealed(manager->overview.action_bar,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
123 g_list_model_get_n_items(list) != 0);
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 }
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 static void
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
127 pidgin_account_manager_row_activated_cb(G_GNUC_UNUSED GtkListBox *box,
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
128 GtkListBoxRow *row,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
129 gpointer data)
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 {
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
131 PurpleAccount *account = NULL;
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
132 PidginAccountManager *manager = data;
42363
25ccd3d6e30e Rename PidginAccountRow to PidginAccountManagerRow
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
133 PidginAccountManagerRow *manager_row = NULL;
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
42363
25ccd3d6e30e Rename PidginAccountRow to PidginAccountManagerRow
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
135 manager_row = PIDGIN_ACCOUNT_MANAGER_ROW(row);
25ccd3d6e30e Rename PidginAccountRow to PidginAccountManagerRow
Gary Kramlich <grim@reaperworld.com>
parents: 42255
diff changeset
136 account = pidgin_account_manager_row_get_account(manager_row);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
137
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
138 pidgin_account_manager_real_edit_account(manager, account, FALSE);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
139 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
140
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
141 static void
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
142 pidgin_account_manager_remove_account_cb(G_GNUC_UNUSED AdwMessageDialog *self,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
143 char *response, gpointer data)
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
144 {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
145 PidginAccountManager *account_manager = data;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
146 PurpleAccount *account = NULL;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
147 PurpleNotificationManager *notification_manager = NULL;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
148
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
149 if(!purple_strequal(response, "remove")) {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
150 return;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
151 }
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
152
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
153 account = pidgin_account_editor_get_account(account_manager->editor.editor);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
154
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
155 /* Remove all notifications including connection errors for the account. */
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
156 notification_manager = purple_notification_manager_get_default();
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
157 purple_notification_manager_remove_with_account(notification_manager,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
158 account, TRUE);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
159
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
160 /* Delete the account. */
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
161 purple_accounts_delete(account);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
162
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
163 pidgin_account_manager_show_overview(account_manager);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
164 }
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
165
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
166 static void
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
167 pidgin_account_manager_remove_clicked_cb(G_GNUC_UNUSED GtkButton *self,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
168 gpointer data)
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
169 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
170 PidginAccountManager *manager = data;
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
171 PurpleAccount *account = NULL;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
172 PurpleProtocol *protocol = NULL;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
173 AdwAlertDialog *dialog = NULL;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
174 const char *name = NULL;
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
175 const char *protocol_name = _("Unknown");
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
176
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
177 account = pidgin_account_editor_get_account(manager->editor.editor);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
178 name = purple_account_get_username(account);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
179 protocol = purple_account_get_protocol(account);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
180 if(PURPLE_IS_PROTOCOL(protocol)) {
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
181 protocol_name = purple_protocol_get_name(protocol);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
182 }
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
183
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
184 dialog = ADW_ALERT_DIALOG(adw_alert_dialog_new(_("Remove account?"), NULL));
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
185 adw_alert_dialog_format_body(
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
186 dialog,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
187 _("Do you want to remove the %s (%s) account from Pidgin?"),
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
188 name, protocol_name);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
189 adw_alert_dialog_add_responses(dialog, "cancel", _("Cancel"),
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
190 "remove", _("Remove"), NULL);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
191 adw_alert_dialog_set_response_appearance(dialog, "remove",
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
192 ADW_RESPONSE_DESTRUCTIVE);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
193 adw_alert_dialog_set_default_response(dialog, "cancel");
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
194 adw_alert_dialog_set_close_response(dialog, "cancel");
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
195
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
196 g_signal_connect(dialog, "response",
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
197 G_CALLBACK(pidgin_account_manager_remove_account_cb),
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
198 manager);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
199
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
200 adw_dialog_present(ADW_DIALOG(dialog), GTK_WIDGET(manager));
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
201 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
202
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
203 static void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
204 pidgin_account_manager_save_clicked_cb(G_GNUC_UNUSED GtkButton *self,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
205 gpointer data)
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
206 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
207 PidginAccountManager *manager = data;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
208
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
209 pidgin_account_editor_save(manager->editor.editor);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
210
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
211 if(manager->edit_only) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
212 gtk_window_destroy(GTK_WINDOW(manager));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
213 } else {
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42231
diff changeset
214 pidgin_account_manager_show_overview(manager);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
215 }
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 }
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 /******************************************************************************
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 * GObject Implementation
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 *****************************************************************************/
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 static void
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 pidgin_account_manager_init(PidginAccountManager *manager) {
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
223 GListModel *purple_manager = NULL;
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 gtk_widget_init_template(GTK_WIDGET(manager));
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
227 purple_manager = purple_account_manager_get_default_as_model();
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
228 gtk_list_box_bind_model(manager->overview.list_box, purple_manager,
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
229 pidgin_account_manager_create_widget, NULL, NULL);
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
230 g_signal_connect_object(purple_manager, "items-changed",
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
231 G_CALLBACK(pidgin_account_manager_refresh_add_cb),
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 manager, 0);
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
233 pidgin_account_manager_refresh_add_cb(purple_manager, 0, 0, 0, manager);
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 }
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 static void
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 pidgin_account_manager_class_init(PidginAccountManagerClass *klass) {
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 gtk_widget_class_set_template_from_resource(
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 widget_class,
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 "/im/pidgin/Pidgin3/Accounts/manager.ui"
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 );
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 gtk_widget_class_bind_template_child(widget_class, PidginAccountManager,
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
246 view);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
247
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 gtk_widget_class_bind_template_child(widget_class, PidginAccountManager,
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
249 overview.list_box);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
250 gtk_widget_class_bind_template_child(widget_class, PidginAccountManager,
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
251 overview.action_bar);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
252
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
253 gtk_widget_class_bind_template_child(widget_class, PidginAccountManager,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
254 editor.editor);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
255 gtk_widget_class_bind_template_child(widget_class, PidginAccountManager,
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
256 editor.add);
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
257 gtk_widget_class_bind_template_child(widget_class, PidginAccountManager,
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
258 editor.remove);
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 gtk_widget_class_bind_template_callback(widget_class,
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 pidgin_account_manager_row_activated_cb);
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 gtk_widget_class_bind_template_callback(widget_class,
42028
f3090252de57 Re-design account manager as a GtkListBox
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41962
diff changeset
263 pidgin_account_manager_create_account);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
264 gtk_widget_class_bind_template_callback(widget_class,
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
265 pidgin_account_manager_remove_clicked_cb);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
266 gtk_widget_class_bind_template_callback(widget_class,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
267 pidgin_account_manager_save_clicked_cb);
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 }
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 /******************************************************************************
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 * Public API
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 *****************************************************************************/
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 GtkWidget *
43080
dd2d26e6c6f9 Set the application on all windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43073
diff changeset
274 pidgin_account_manager_new(GtkApplication *application) {
dd2d26e6c6f9 Set the application on all windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43073
diff changeset
275 return g_object_new(
dd2d26e6c6f9 Set the application on all windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43073
diff changeset
276 PIDGIN_TYPE_ACCOUNT_MANAGER,
dd2d26e6c6f9 Set the application on all windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43073
diff changeset
277 "application", application,
dd2d26e6c6f9 Set the application on all windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43073
diff changeset
278 NULL);
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 }
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
280
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
281 void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
282 pidgin_account_manager_show_overview(PidginAccountManager *manager) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
283 g_return_if_fail(PIDGIN_IS_ACCOUNT_MANAGER(manager));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
284
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
285 adw_navigation_view_pop_to_tag(manager->view, "overview");
42255
642478e32820 Fix a number of bugs in the account editor
Gary Kramlich <grim@reaperworld.com>
parents: 42231
diff changeset
286
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
287 pidgin_account_editor_set_account(manager->editor.editor, NULL);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
288 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
289
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
290 void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
291 pidgin_account_manager_edit_account(PidginAccountManager *manager,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
292 PurpleAccount *account)
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
293 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
294 g_return_if_fail(PIDGIN_IS_ACCOUNT_MANAGER(manager));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
295 g_return_if_fail(PURPLE_IS_ACCOUNT(account));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
296
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
297 pidgin_account_manager_real_edit_account(manager, account, TRUE);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
298 }

mercurial