Sun, 03 Nov 2024 00:05:44 -0500
remove purple3-url-handler.desktop.in.in
The application that did the launching was removed long ago. Also this should
be implemented by the user interfaces and they might provide separate files to
groups schemas as well.
Testing Done:
Called in the turtles.
Reviewed at https://reviews.imfreedom.org/r/3640/
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Pidgin - Internet Messenger |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * Pidgin is the legal property of its developers, whose names are too numerous |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * source distribution. |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * This program is free software; you can redistribute it and/or modify |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * it under the terms of the GNU General Public License as published by |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * the Free Software Foundation; either version 2 of the License, or |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * (at your option) any later version. |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * This program is distributed in the hope that it will be useful, |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | * GNU General Public License for more details. |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | * |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | * along with this program; if not, see <https://www.gnu.org/licenses/>. |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | */ |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
23 | #include <glib/gi18n.h> |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
25 | #include <gtk/gtk.h> |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
26 | |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
27 | #include <birb.h> |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
28 | |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | #include "pidginaccountsenabledmenu.h" |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
31 | #include "pidginapplication.h" |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
32 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
33 | struct _PidginAccountsEnabledMenu { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
34 | GMenuModel parent; |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
35 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
36 | GQueue *accounts; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
37 | }; |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | /****************************************************************************** |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
40 | * Helpers |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
41 | *****************************************************************************/ |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
42 | static void |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
43 | pidgin_accounts_enabled_menu_foreach_add_action_groups(const char *prefix, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
44 | GActionGroup *group, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
45 | gpointer data) |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
46 | { |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
47 | PidginApplication *application = data; |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
48 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
49 | pidgin_application_add_action_group(application, prefix, group); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
50 | } |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
51 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
52 | static void |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
53 | pidgin_accounts_enabled_menu_foreach_remove_action_groups(const char *prefix, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
54 | G_GNUC_UNUSED GActionGroup *group, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
55 | gpointer data) |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
56 | { |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
57 | PidginApplication *application = data; |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
58 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
59 | pidgin_application_add_action_group(application, prefix, NULL); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
60 | } |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
61 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
62 | static void |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
63 | pidgin_accounts_enabled_menu_update(PidginAccountsEnabledMenu *menu, |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
64 | PurpleAccount *account) |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
65 | { |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
66 | PurpleProtocol *protocol = NULL; |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
67 | gint index = -1; |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
68 | |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
69 | index = g_queue_index(menu->accounts, account); |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
70 | if(index >= 0) { |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
71 | /* Tell the model that the account needs to be updated. */ |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
72 | g_menu_model_items_changed(G_MENU_MODEL(menu), index, 0, 0); |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
73 | } |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
74 | |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
75 | /* If the protocol has actions add them to the application windows. */ |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
76 | protocol = purple_account_get_protocol(account); |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
77 | if(PURPLE_IS_PROTOCOL(protocol)) { |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
78 | BirbActionMenu *action_menu = NULL; |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
79 | |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
80 | action_menu = purple_protocol_get_action_menu(protocol, account); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
81 | if(BIRB_IS_ACTION_MENU(action_menu)) { |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
82 | GApplication *application = g_application_get_default(); |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
83 | |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
84 | birb_action_menu_foreach_action_group(action_menu, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
85 | pidgin_accounts_enabled_menu_foreach_add_action_groups, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
86 | application); |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
87 | } |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
88 | g_clear_object(&action_menu); |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
89 | } |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
90 | } |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
91 | |
|
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
92 | /****************************************************************************** |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
93 | * Callbacks |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
94 | *****************************************************************************/ |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
95 | static void |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
96 | pidgin_accounts_enabled_menu_changed_cb(G_GNUC_UNUSED PurpleAccountManager *manager, |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
97 | PurpleAccount *account, |
|
41946
0fb3b0e7122f
Add a setting-changed signal to PurpleAccount and propagate it from PurpleAccountManager
Gary Kramlich <grim@reaperworld.com>
parents:
41891
diff
changeset
|
98 | G_GNUC_UNUSED GParamSpec *pspec, |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
99 | gpointer data) |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
100 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
101 | PidginAccountsEnabledMenu *menu = data; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
102 | |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
103 | if(purple_account_get_enabled(account)) { |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
104 | /* Add the account to the start of the list. */ |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
105 | g_queue_push_head(menu->accounts, g_object_ref(account)); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
106 | |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
107 | /* Tell everyone our model added a new item at position 0. */ |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
108 | g_menu_model_items_changed(G_MENU_MODEL(menu), 0, 0, 1); |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
109 | } else { |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
110 | gint index = g_queue_index(menu->accounts, account); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
111 | |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
112 | if(index >= 0) { |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
113 | g_queue_pop_nth(menu->accounts, index); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
114 | |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
115 | /* Tell the model that we removed one item at the given index. */ |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
116 | g_menu_model_items_changed(G_MENU_MODEL(menu), index, 1, 0); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
117 | |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
118 | /* Remove the reference to the account that we were holding. */ |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
119 | g_object_unref(account); |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
120 | } |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
121 | } |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
122 | } |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
123 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
124 | static void |
|
42262
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
125 | pidgin_accounts_enabled_menu_account_connected_cb(G_GNUC_UNUSED PurpleAccountManager *m, |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
126 | PurpleAccount *account, |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
127 | gpointer data) |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
128 | { |
|
42009
fb172b78a9ee
Replace the account-actions-changed signal with an actions-changed signal on PurpleProtocolActions
Gary Kramlich <grim@reaperworld.com>
parents:
42004
diff
changeset
|
129 | pidgin_accounts_enabled_menu_update(data, account); |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
130 | } |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
131 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
132 | static void |
|
42262
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
133 | pidgin_accounts_enabled_menu_account_disconnected_cb(G_GNUC_UNUSED PurpleAccountManager *manager, |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
134 | PurpleAccount *account, |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
135 | gpointer data) |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
136 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
137 | PidginAccountsEnabledMenu *menu = data; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
138 | PurpleProtocol *protocol = NULL; |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
139 | gint index = -1; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
140 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
141 | index = g_queue_index(menu->accounts, account); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
142 | if(index >= 0) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
143 | /* Tell the model that the account needs to be updated. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
144 | g_menu_model_items_changed(G_MENU_MODEL(menu), index, 0, 0); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
145 | } |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
146 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
147 | /* Figure out if this is the last connected account for this protocol, and |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
148 | * if so, remove the action group from the application windows. |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
149 | */ |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
150 | protocol = purple_account_get_protocol(account); |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
151 | if(PURPLE_IS_PROTOCOL(protocol)) { |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
152 | PurpleAccountManager *manager = NULL; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
153 | GList *enabled_accounts = NULL; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
154 | gboolean found = FALSE; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
155 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
156 | manager = purple_account_manager_get_default(); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
157 | enabled_accounts = purple_account_manager_get_enabled(manager); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
158 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
159 | while(enabled_accounts != NULL) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
160 | PurpleAccount *account2 = PURPLE_ACCOUNT(enabled_accounts->data); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
161 | PurpleProtocol *protocol2 = purple_account_get_protocol(account2); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
162 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
163 | if(!found && protocol2 == protocol) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
164 | found = TRUE; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
165 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
166 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
167 | enabled_accounts = g_list_delete_link(enabled_accounts, |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
168 | enabled_accounts); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
169 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
170 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
171 | if(!found) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
172 | GApplication *application = g_application_get_default(); |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
173 | BirbActionMenu *action_menu = NULL; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
174 | |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
175 | action_menu = purple_protocol_get_action_menu(protocol, account); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
176 | birb_action_menu_foreach_action_group(action_menu, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
177 | pidgin_accounts_enabled_menu_foreach_remove_action_groups, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
178 | application); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
179 | g_clear_object(&action_menu); |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
180 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
181 | } |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
182 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
183 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
184 | /****************************************************************************** |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
185 | * GMenuModel Implementation |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
186 | *****************************************************************************/ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
187 | static gboolean |
|
41947
7b3312d0760c
Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41946
diff
changeset
|
188 | pidgin_accounts_enabled_menu_is_mutable(G_GNUC_UNUSED GMenuModel *model) { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
189 | return TRUE; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
190 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
191 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
192 | static gint |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
193 | pidgin_accounts_enabled_menu_get_n_items(GMenuModel *model) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
194 | PidginAccountsEnabledMenu *menu = PIDGIN_ACCOUNTS_ENABLED_MENU(model); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
195 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
196 | return g_queue_get_length(menu->accounts); |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
197 | } |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
198 | |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
199 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
200 | pidgin_accounts_enabled_menu_get_item_attributes(GMenuModel *model, gint index, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
201 | GHashTable **attributes) |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
202 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
203 | PidginAccountsEnabledMenu *menu = PIDGIN_ACCOUNTS_ENABLED_MENU(model); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
204 | PurpleAccount *account = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
205 | PurpleProtocol *protocol = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
206 | GVariant *value = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
207 | gchar *label = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
208 | const gchar *account_name = NULL, *protocol_name = NULL, *icon_name = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
209 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
210 | /* Create our hash table of attributes to return. This must always be |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
211 | * populated. |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
212 | */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
213 | *attributes = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
214 | (GDestroyNotify)g_variant_unref); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
215 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
216 | /* Get the account the caller is interested in. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
217 | account = g_queue_peek_nth(menu->accounts, index); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
218 | if(!PURPLE_IS_ACCOUNT(account)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
219 | return; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
220 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
221 | |
|
42804
be8c8b5471ca
Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents:
42575
diff
changeset
|
222 | account_name = purple_account_get_username(account); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
223 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
224 | /* Get the protocol from the account. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
225 | protocol = purple_account_get_protocol(account); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
226 | if(PURPLE_IS_PROTOCOL(protocol)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
227 | protocol_name = purple_protocol_get_name(protocol); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
228 | icon_name = purple_protocol_get_icon_name(protocol); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
229 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
230 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
231 | /* Add the label. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
232 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
233 | /* translators: This format string is intended to contain the account |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
234 | * name followed by the protocol name to uniquely identify a specific |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
235 | * account. |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
236 | */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
237 | label = g_strdup_printf(_("%s (%s)"), account_name, protocol_name); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
238 | value = g_variant_new_string(label); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
239 | g_free(label); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
240 | g_hash_table_insert(*attributes, G_MENU_ATTRIBUTE_LABEL, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
241 | g_variant_ref_sink(value)); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
242 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
243 | /* Add the icon if we have one. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
244 | if(icon_name != NULL) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
245 | value = g_variant_new_string(icon_name); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
246 | g_hash_table_insert(*attributes, G_MENU_ATTRIBUTE_ICON, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
247 | g_variant_ref_sink(value)); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
248 | } |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
249 | } |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
250 | |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
251 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
252 | pidgin_accounts_enabled_menu_get_item_links(GMenuModel *model, gint index, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
253 | GHashTable **links) |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
254 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
255 | PidginAccountsEnabledMenu *menu = PIDGIN_ACCOUNTS_ENABLED_MENU(model); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
256 | PurpleAccount *account = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
257 | PurpleConnection *connection = NULL; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
258 | PurpleProtocol *protocol = NULL; |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
259 | GApplication *application = g_application_get_default(); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
260 | GMenu *submenu = NULL, *template = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
261 | const gchar *account_id = NULL, *connection_id = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
262 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
263 | /* Create our hash table for links, this must always be populated. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
264 | *links = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
265 | g_object_unref); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
266 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
267 | account = g_queue_peek_nth(menu->accounts, index); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
268 | if(!PURPLE_IS_ACCOUNT(account)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
269 | return; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
270 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
271 | |
|
42804
be8c8b5471ca
Update pidgin to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents:
42575
diff
changeset
|
272 | account_id = purple_account_get_id(account); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
273 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
274 | connection = purple_account_get_connection(account); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
275 | if(PURPLE_IS_CONNECTION(connection)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
276 | connection_id = purple_connection_get_id(connection); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
277 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
278 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
279 | /* Create a copy of our template menu. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
280 | template = gtk_application_get_menu_by_id(GTK_APPLICATION(application), |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
281 | "enabled-account"); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
282 | submenu = purple_menu_copy(G_MENU_MODEL(template)); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
283 | |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
284 | /* Add the account actions if we have any. */ |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
285 | protocol = purple_account_get_protocol(account); |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
286 | if(PURPLE_IS_PROTOCOL(protocol)) { |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
287 | BirbActionMenu *action_menu = NULL; |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
288 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
289 | action_menu = purple_protocol_get_action_menu(protocol, account); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
290 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
291 | if(BIRB_IS_ACTION_MENU(action_menu)) { |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
292 | GMenu *protocol_menu = NULL; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
293 | |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
294 | protocol_menu = birb_action_menu_get_menu(action_menu); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
295 | if(G_IS_MENU(protocol_menu)) { |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
296 | g_menu_insert_section(submenu, 1, NULL, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
297 | G_MENU_MODEL(protocol_menu)); |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
298 | } |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
299 | |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
300 | g_clear_object(&action_menu); |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
301 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
302 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
303 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
304 | purple_menu_populate_dynamic_targets(submenu, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
305 | "account", account_id, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
306 | "connection", connection_id, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
307 | NULL); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
308 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
309 | g_hash_table_insert(*links, G_MENU_LINK_SUBMENU, submenu); |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
310 | } |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
311 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
312 | /****************************************************************************** |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
313 | * GObject Implementation |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
314 | *****************************************************************************/ |
|
42880
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
315 | G_DEFINE_FINAL_TYPE(PidginAccountsEnabledMenu, pidgin_accounts_enabled_menu, |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
316 | G_TYPE_MENU_MODEL) |
|
6df94d23bdea
Update Pidgin.AccountsEnabledMenu to use Purple.Protocol.get_action_menu
Gary Kramlich <grim@reaperworld.com>
parents:
42804
diff
changeset
|
317 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
318 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
319 | pidgin_accounts_enabled_menu_dispose(GObject *obj) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
320 | PidginAccountsEnabledMenu *menu = PIDGIN_ACCOUNTS_ENABLED_MENU(obj); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
321 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
322 | if(menu->accounts != NULL) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
323 | g_queue_free_full(menu->accounts, g_object_unref); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
324 | menu->accounts = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
325 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
326 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
327 | G_OBJECT_CLASS(pidgin_accounts_enabled_menu_parent_class)->dispose(obj); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
328 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
329 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
330 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
331 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
332 | pidgin_accounts_enabled_menu_constructed(GObject *obj) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
333 | PidginAccountsEnabledMenu *menu = PIDGIN_ACCOUNTS_ENABLED_MENU(obj); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
334 | PurpleAccountManager *manager = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
335 | GList *enabled = NULL, *l = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
336 | gint count = 0; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
337 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
338 | G_OBJECT_CLASS(pidgin_accounts_enabled_menu_parent_class)->constructed(obj); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
339 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
340 | manager = purple_account_manager_get_default(); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
341 | enabled = purple_account_manager_get_enabled(manager); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
342 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
343 | for(l = enabled; l != NULL; l = l->next) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
344 | g_queue_push_head(menu->accounts, g_object_ref(l->data)); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
345 | count++; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
346 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
347 | g_list_free(enabled); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
348 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
349 | g_menu_model_items_changed(G_MENU_MODEL(obj), 0, 0, count); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
350 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
351 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
352 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
353 | pidgin_accounts_enabled_menu_init(PidginAccountsEnabledMenu *menu) { |
|
42262
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
354 | PurpleAccountManager *account_manager = NULL; |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
355 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
356 | menu->accounts = g_queue_new(); |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
357 | |
|
42262
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
358 | account_manager = purple_account_manager_get_default(); |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
359 | g_signal_connect_object(account_manager, "account-changed::enabled", |
|
41891
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
360 | G_CALLBACK(pidgin_accounts_enabled_menu_changed_cb), |
|
a45d6db4f857
Propagate the PurpleAccount::notify signal via PurpleAccountManager::account-changed
Gary Kramlich <grim@reaperworld.com>
parents:
41460
diff
changeset
|
361 | menu, 0); |
|
42262
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
362 | g_signal_connect_object(account_manager, "account-connected", |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
363 | G_CALLBACK(pidgin_accounts_enabled_menu_account_connected_cb), |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
364 | menu, 0); |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
365 | g_signal_connect_object(account_manager, "account-disconnected", |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
366 | G_CALLBACK(pidgin_accounts_enabled_menu_account_disconnected_cb), |
|
5f218efc3c7b
Port PidginAccountsEnabledMenu to the AccountManager propagated signals
Gary Kramlich <grim@reaperworld.com>
parents:
42103
diff
changeset
|
367 | menu, 0); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
368 | } |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
369 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
370 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
371 | pidgin_accounts_enabled_menu_class_init(PidginAccountsEnabledMenuClass *klass) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
372 | GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
373 | GMenuModelClass *model_class = G_MENU_MODEL_CLASS(klass); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
374 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
375 | obj_class->constructed = pidgin_accounts_enabled_menu_constructed; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
376 | obj_class->dispose = pidgin_accounts_enabled_menu_dispose; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
377 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
378 | model_class->is_mutable = pidgin_accounts_enabled_menu_is_mutable; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
379 | model_class->get_n_items = pidgin_accounts_enabled_menu_get_n_items; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
380 | model_class->get_item_attributes = pidgin_accounts_enabled_menu_get_item_attributes; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
381 | model_class->get_item_links = pidgin_accounts_enabled_menu_get_item_links; |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
382 | } |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
383 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
384 | /****************************************************************************** |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
385 | * Public API |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
386 | *****************************************************************************/ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
387 | GMenuModel * |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
388 | pidgin_accounts_enabled_menu_new(void) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
389 | return g_object_new(PIDGIN_TYPE_ACCOUNTS_ENABLED_MENU, NULL); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
390 | } |