Sun, 28 Aug 2022 21:53:47 -0500
Set volume on audio test pipeline at startup
If you change the volume slider in prefs, then the Test Audio button does not respect that initially. If you move the slider around with the test playing, then the volume jumps to whatever you have. But stopping and starting the test again goes to full volume.
Testing Done:
Opened prefs, set to test source, made volume really low, and hit Test Audio. Output volume was low immediately.
Reviewed at https://reviews.imfreedom.org/r/1670/
|
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 | |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | #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
|
28 | |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
29 | #include "pidginapplication.h" |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
30 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
31 | struct _PidginAccountsEnabledMenu { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
32 | GMenuModel parent; |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
33 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
34 | GQueue *accounts; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
35 | }; |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
37 | G_DEFINE_TYPE(PidginAccountsEnabledMenu, pidgin_accounts_enabled_menu, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
38 | G_TYPE_MENU_MODEL) |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | /****************************************************************************** |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
41 | * Callbacks |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | *****************************************************************************/ |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
44 | pidgin_accounts_enabled_menu_enabled_cb(PurpleAccount *account, gpointer data) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
45 | PidginAccountsEnabledMenu *menu = data; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
46 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
47 | /* Add the account to the start of the list. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
48 | g_queue_push_head(menu->accounts, g_object_ref(account)); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
49 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
50 | /* Tell everyone our model added a new item at position 0. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
51 | g_menu_model_items_changed(G_MENU_MODEL(menu), 0, 0, 1); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
52 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
53 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
54 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
55 | pidgin_accounts_enabled_menu_disabled_cb(PurpleAccount *account, 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
|
56 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
57 | PidginAccountsEnabledMenu *menu = data; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
58 | gint index = -1; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
59 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
60 | 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
|
61 | if(index >= 0) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
62 | g_queue_pop_nth(menu->accounts, index); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
63 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
64 | /* Tell the model that we removed one item at the given index. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
65 | g_menu_model_items_changed(G_MENU_MODEL(menu), index, 1, 0); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
66 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
67 | g_object_unref(account); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
68 | } |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | } |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
70 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
72 | pidgin_accounts_enabled_menu_connected_cb(PurpleAccount *account, 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
|
73 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
74 | PidginAccountsEnabledMenu *menu = data; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
75 | PurpleProtocol *protocol = NULL; |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
76 | gint index = -1; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
77 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
78 | 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
|
79 | if(index >= 0) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
80 | /* 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
|
81 | 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
|
82 | } |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
83 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
84 | /* If the protocol has actions add them to the application windows. */ |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
85 | protocol = purple_account_get_protocol(account); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
86 | if(PURPLE_IS_PROTOCOL_ACTIONS(protocol)) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
87 | PurpleProtocolActions *actions = PURPLE_PROTOCOL_ACTIONS(protocol); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
88 | PurpleConnection *connection = NULL; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
89 | GActionGroup *action_group = NULL; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
90 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
91 | connection = purple_account_get_connection(account); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
92 | action_group = purple_protocol_actions_get_action_group(actions, |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
93 | connection); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
94 | if(G_IS_ACTION_GROUP(action_group)) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
95 | GApplication *application = g_application_get_default(); |
|
41460
fccbea158b51
Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents:
41458
diff
changeset
|
96 | const gchar *prefix = purple_protocol_actions_get_prefix(actions); |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
97 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
98 | pidgin_application_add_action_group(PIDGIN_APPLICATION(application), |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
99 | prefix, action_group); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
100 | g_object_unref(action_group); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
101 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
102 | } |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
103 | } |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
104 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
105 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
106 | pidgin_accounts_enabled_menu_disconnected_cb(PurpleAccount *account, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
107 | gpointer data) |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
108 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
109 | PidginAccountsEnabledMenu *menu = data; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
110 | PurpleProtocol *protocol = NULL; |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
111 | gint index = -1; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
112 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
113 | 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
|
114 | if(index >= 0) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
115 | /* 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
|
116 | 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
|
117 | } |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
118 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
119 | /* 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
|
120 | * 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
|
121 | */ |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
122 | protocol = purple_account_get_protocol(account); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
123 | if(PURPLE_IS_PROTOCOL_ACTIONS(protocol)) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
124 | PurpleAccountManager *manager = NULL; |
|
41460
fccbea158b51
Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents:
41458
diff
changeset
|
125 | PurpleProtocolActions *actions = PURPLE_PROTOCOL_ACTIONS(protocol); |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
126 | GList *enabled_accounts = NULL; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
127 | gboolean found = FALSE; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
128 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
129 | 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
|
130 | 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
|
131 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
132 | while(enabled_accounts != NULL) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
133 | 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
|
134 | 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
|
135 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
136 | if(!found && protocol2 == protocol) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
137 | found = TRUE; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
138 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
139 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
140 | 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
|
141 | enabled_accounts); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
142 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
143 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
144 | if(!found) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
145 | GApplication *application = g_application_get_default(); |
|
41460
fccbea158b51
Add a get_prefix method to the PurpleProtocolActions interface
Gary Kramlich <grim@reaperworld.com>
parents:
41458
diff
changeset
|
146 | const gchar *prefix = purple_protocol_actions_get_prefix(actions); |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
147 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
148 | pidgin_application_add_action_group(PIDGIN_APPLICATION(application), |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
149 | prefix, NULL); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
150 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
151 | } |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
152 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
153 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
154 | /****************************************************************************** |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
155 | * GMenuModel Implementation |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
156 | *****************************************************************************/ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
157 | static gboolean |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
158 | pidgin_accounts_enabled_menu_is_mutable(GMenuModel *model) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
159 | return TRUE; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
160 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
161 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
162 | static gint |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
163 | 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
|
164 | 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
|
165 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
166 | 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
|
167 | } |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
168 | |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
169 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
170 | 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
|
171 | GHashTable **attributes) |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
172 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
173 | 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
|
174 | PurpleAccount *account = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
175 | PurpleProtocol *protocol = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
176 | GVariant *value = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
177 | gchar *label = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
178 | 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
|
179 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
180 | /* 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
|
181 | * populated. |
|
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 | *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
|
184 | (GDestroyNotify)g_variant_unref); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
185 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
186 | /* 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
|
187 | 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
|
188 | if(!PURPLE_IS_ACCOUNT(account)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
189 | return; |
|
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 | account_name = purple_account_get_username(account); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
193 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
194 | /* 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
|
195 | 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
|
196 | if(PURPLE_IS_PROTOCOL(protocol)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
197 | 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
|
198 | 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
|
199 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
200 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
201 | /* Add the label. */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
202 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
203 | /* 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
|
204 | * 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
|
205 | * account. |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
206 | */ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
207 | 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
|
208 | 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
|
209 | g_free(label); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
210 | 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
|
211 | g_variant_ref_sink(value)); |
|
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 | /* 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
|
214 | if(icon_name != NULL) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
215 | 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
|
216 | 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
|
217 | g_variant_ref_sink(value)); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
218 | } |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
219 | } |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
220 | |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
221 | static void |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
222 | 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
|
223 | 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
|
224 | { |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
225 | 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
|
226 | PurpleAccount *account = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
227 | PurpleConnection *connection = NULL; |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
228 | PurpleProtocol *protocol = NULL; |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
229 | 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
|
230 | GMenu *submenu = NULL, *template = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
231 | 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
|
232 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
233 | /* 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
|
234 | *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
|
235 | g_object_unref); |
|
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 | 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
|
238 | if(!PURPLE_IS_ACCOUNT(account)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
239 | return; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
240 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
241 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
242 | account_id = purple_account_get_id(account); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
243 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
244 | 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
|
245 | if(PURPLE_IS_CONNECTION(connection)) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
246 | 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
|
247 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
248 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
249 | /* 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
|
250 | 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
|
251 | "enabled-account"); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
252 | 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
|
253 | |
|
41458
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
254 | /* 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
|
255 | protocol = purple_account_get_protocol(account); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
256 | if(PURPLE_IS_PROTOCOL_ACTIONS(protocol)) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
257 | PurpleProtocolActions *actions = PURPLE_PROTOCOL_ACTIONS(protocol); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
258 | GMenu *protocol_menu = NULL; |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
259 | |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
260 | protocol_menu = purple_protocol_actions_get_menu(actions); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
261 | if(G_IS_MENU(protocol_menu)) { |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
262 | g_menu_insert_section(submenu, 1, NULL, |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
263 | G_MENU_MODEL(protocol_menu)); |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
264 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
265 | } |
|
90276efac79d
Add protocol actions to Pidgin account menu
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41457
diff
changeset
|
266 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
267 | 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
|
268 | "account", account_id, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
269 | "connection", connection_id, |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
270 | NULL); |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
271 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
272 | 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
|
273 | } |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
274 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
275 | /****************************************************************************** |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
276 | * 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
|
277 | *****************************************************************************/ |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
278 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
279 | 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
|
280 | 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
|
281 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
282 | if(menu->accounts != NULL) { |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
283 | 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
|
284 | menu->accounts = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
285 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
286 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
287 | 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
|
288 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
289 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
290 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
291 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
292 | 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
|
293 | 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
|
294 | PurpleAccountManager *manager = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
295 | GList *enabled = NULL, *l = NULL; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
296 | gint count = 0; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
297 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
298 | 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
|
299 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
300 | 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
|
301 | 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
|
302 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
303 | 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
|
304 | 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
|
305 | count++; |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
306 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
307 | g_list_free(enabled); |
|
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_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
|
310 | } |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
311 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
312 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
313 | pidgin_accounts_enabled_menu_init(PidginAccountsEnabledMenu *menu) { |
|
41304
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
314 | gpointer handle = NULL; |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
315 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
316 | 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
|
317 | |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
318 | /* Wire up the purple signals we care about. */ |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
319 | handle = purple_accounts_get_handle(); |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
320 | purple_signal_connect(handle, "account-enabled", menu, |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
321 | G_CALLBACK(pidgin_accounts_enabled_menu_enabled_cb), |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
322 | menu); |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
323 | purple_signal_connect(handle, "account-disabled", menu, |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
324 | G_CALLBACK(pidgin_accounts_enabled_menu_disabled_cb), |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
325 | menu); |
|
25830cad9bfc
Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
326 | |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
327 | /* For the account actions, we also need to know when an account is online |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
328 | * or offline. |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
329 | */ |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
330 | purple_signal_connect(handle, "account-signed-on", menu, |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
331 | G_CALLBACK(pidgin_accounts_enabled_menu_connected_cb), |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
332 | menu); |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
333 | purple_signal_connect(handle, "account-signed-off", menu, |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
334 | G_CALLBACK(pidgin_accounts_enabled_menu_disconnected_cb), |
|
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
335 | menu); |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
336 | } |
|
41403
0186ae21071f
Add purple_menu_populate_dynamic_targets to dynamically update GMenu's
Gary Kramlich <grim@reaperworld.com>
parents:
41392
diff
changeset
|
337 | |
|
41457
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
338 | static void |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
339 | 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
|
340 | 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
|
341 | 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
|
342 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
343 | 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
|
344 | 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
|
345 | |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
346 | 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
|
347 | 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
|
348 | 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
|
349 | 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
|
350 | } |
|
41457
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 | /****************************************************************************** |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
353 | * Public API |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
354 | *****************************************************************************/ |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
355 | GMenuModel * |
|
f0e7534a555d
Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents:
41403
diff
changeset
|
356 | 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
|
357 | 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
|
358 | } |