Thu, 21 Nov 2024 21:41:35 -0600
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 | } |