pidgin/pidginaccountmanager.c

Thu, 21 Nov 2024 21:41:35 -0600

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 21 Nov 2024 21:41:35 -0600
changeset 43073
b97e5e85b97d
parent 42575
580339aa47cc
child 43080
dd2d26e6c6f9
permissions
-rw-r--r--

Port account manager to AdwNavigationView

This handles all the forward/back stuff for us (with the `GtkButton`, Escape key, `Alt`-`←`, or mouse back button.)

The editor is currently a page that's re-used. I'm not sure if it's better to use a page per account, but this works just fine.

The overview/placeholder page remains about the same, except the Add button is in an action bar.

The account editor is also about the same, except for the movement of the Back button to the header, and the Save button to the action bar. I also added a Remove button on the opposite end. I'm not sure, but debating whether we should remove the Remove buttons from the overview page since they take up space for something you probably won't do that often.

Testing Done:
Opened empty config, added a Bonjour/IRCv3 account, toggled a few options, went back and forth to overview, and removed the account from both pages.

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

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 *
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 pidgin_account_manager_new(void) {
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 return g_object_new(PIDGIN_TYPE_ACCOUNT_MANAGER, NULL);
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 }
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
277
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
278 void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
279 pidgin_account_manager_show_overview(PidginAccountManager *manager) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
280 g_return_if_fail(PIDGIN_IS_ACCOUNT_MANAGER(manager));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
281
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
282 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
283
43073
b97e5e85b97d Port account manager to AdwNavigationView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
284 pidgin_account_editor_set_account(manager->editor.editor, NULL);
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
285 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
286
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
287 void
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
288 pidgin_account_manager_edit_account(PidginAccountManager *manager,
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
289 PurpleAccount *account)
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
290 {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
291 g_return_if_fail(PIDGIN_IS_ACCOUNT_MANAGER(manager));
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
292 g_return_if_fail(PURPLE_IS_ACCOUNT(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 pidgin_account_manager_real_edit_account(manager, account, TRUE);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42028
diff changeset
295 }

mercurial