Tue, 11 Apr 2023 00:17:15 -0500
Use gtk_widget_set_visible for everything
gtk_widget_show and gtk_widget_hide are deprecated in GTK 4.10. However,
gtk_widget_set_visible has been around forever so we just need to move to that.
I didn't test all of these and there are probably some that can still be
removed, but most of those are in code that is going to get refreshed in the
future so I didn't bother for now.
Testing Done:
I tested the join chat, add chat, and add buddy dialogs, as well as the contact added notification.
Reviewed at https://reviews.imfreedom.org/r/2430/
| 35122 | 1 | /* |
| 2 | * Integration with Unity's messaging menu and launcher | |
| 3 | * Copyright (C) 2013 Ankit Vani <a@nevitus.org> | |
| 4 | * | |
| 5 | * This program is free software; you can redistribute it and/or modify | |
| 6 | * it under the terms of the GNU General Public License as published by | |
| 7 | * the Free Software Foundation; either version 2 of the License, or | |
| 8 | * (at your option) any later version. | |
| 9 | * | |
| 10 | * This program is distributed in the hope that it will be useful, | |
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 13 | * GNU General Public License for more details. | |
| 14 | * | |
| 15 | * You should have received a copy of the GNU General Public License | |
| 16 | * along with this program; if not, write to the Free Software | |
| 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA | |
| 18 | */ | |
|
40947
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
19 | #include <glib.h> |
|
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
20 | #include <glib/gi18n-lib.h> |
|
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
21 | |
|
40360
e21f3bbcc2a5
Update all of the pidgin code to include purple.h
Gary Kramlich <grim@reaperworld.com>
parents:
40197
diff
changeset
|
22 | #include <purple.h> |
| 35122 | 23 | |
|
40502
875489636847
pidgin.h phase3: create pidgin.h and force its usage
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
24 | #include <pidgin.h> |
| 35122 | 25 | |
|
40947
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
26 | #include <talkatu.h> |
|
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
27 | |
| 35122 | 28 | #include <unity.h> |
| 29 | #include <messaging-menu.h> | |
| 30 | ||
| 31 | #define UNITY_PLUGIN_ID "gtk-unity-integration" | |
| 32 | ||
| 33 | static MessagingMenuApp *mmapp = NULL; | |
| 34 | static UnityLauncherEntry *launcher = NULL; | |
| 35 | static guint n_sources = 0; | |
| 36 | static gint launcher_count; | |
| 37 | static gint messaging_menu_text; | |
| 38 | static gboolean alert_chat_nick = TRUE; | |
| 39 | ||
| 40 | enum { | |
| 41 | LAUNCHER_COUNT_DISABLE, | |
| 42 | LAUNCHER_COUNT_MESSAGES, | |
| 43 | LAUNCHER_COUNT_SOURCES, | |
| 44 | }; | |
| 45 | ||
| 46 | enum { | |
| 47 | MESSAGING_MENU_COUNT, | |
| 48 | MESSAGING_MENU_TIME, | |
| 49 | }; | |
| 50 | ||
| 51 | static int attach_signals(PurpleConversation *conv); | |
| 52 | static void detach_signals(PurpleConversation *conv); | |
| 53 | ||
| 54 | static void | |
|
41840
fe350460fb1c
Remove C99-obsoleted constructs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41696
diff
changeset
|
55 | update_launcher(void) |
| 35122 | 56 | { |
| 57 | guint count = 0; | |
| 58 | GList *convs = NULL; | |
| 35124 | 59 | g_return_if_fail(launcher != NULL); |
| 60 | if (launcher_count == LAUNCHER_COUNT_DISABLE) | |
| 61 | return; | |
| 35122 | 62 | |
| 63 | if (launcher_count == LAUNCHER_COUNT_MESSAGES) { | |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
64 | PurpleConversationManager *manager = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
65 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
66 | manager = purple_conversation_manager_get_default(); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
67 | convs = purple_conversation_manager_get_all(manager); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
68 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
69 | while(convs != NULL) { |
| 35122 | 70 | PurpleConversation *conv = convs->data; |
| 35123 | 71 | count += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv), |
| 72 | "unity-message-count")); | |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
73 | convs = g_list_delete_link(convs, convs); |
| 35122 | 74 | } |
| 75 | } else { | |
| 76 | count = n_sources; | |
| 77 | } | |
| 78 | ||
| 79 | if (launcher != NULL) { | |
| 80 | if (count > 0) | |
| 81 | unity_launcher_entry_set_count_visible(launcher, TRUE); | |
| 82 | else | |
| 83 | unity_launcher_entry_set_count_visible(launcher, FALSE); | |
| 84 | unity_launcher_entry_set_count(launcher, count); | |
| 85 | } | |
| 86 | } | |
| 87 | ||
| 88 | static gchar * | |
| 89 | conversation_id(PurpleConversation *conv) | |
| 90 | { | |
| 91 | PurpleAccount *account = purple_conversation_get_account(conv); | |
|
41962
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
92 | PurpleContactInfo *info = PURPLE_CONTACT_INFO(account); |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
93 | const char *type = "misc"; |
| 35122 | 94 | |
|
41962
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
95 | if(PURPLE_IS_IM_CONVERSATION(conv)) { |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
96 | type = "im"; |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
97 | } else if(PURPLE_IS_CHAT_CONVERSATION(conv)) { |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
98 | type = "chat"; |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
99 | } |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
100 | |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
101 | return g_strdup_printf("%s:%s:%s:%s", |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
102 | type, |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
103 | purple_conversation_get_name(conv), |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
104 | purple_contact_info_get_username(info), |
|
f802660eaef2
Update Pidgin to stop using deprecated account methods
Gary Kramlich <grim@reaperworld.com>
parents:
41840
diff
changeset
|
105 | purple_account_get_protocol_id(account)); |
| 35122 | 106 | } |
| 107 | ||
| 108 | static void | |
| 109 | messaging_menu_add_conversation(PurpleConversation *conv, gint count) | |
| 110 | { | |
| 111 | gchar *id; | |
| 112 | g_return_if_fail(count > 0); | |
| 113 | id = conversation_id(conv); | |
| 114 | ||
| 115 | /* GBytesIcon may be useful for messaging menu source icons using buddy | |
| 116 | icon data for IMs */ | |
| 117 | if (!messaging_menu_app_has_source(mmapp, id)) | |
| 118 | messaging_menu_app_append_source(mmapp, id, NULL, | |
| 35123 | 119 | purple_conversation_get_title(conv)); |
| 35122 | 120 | |
| 121 | if (messaging_menu_text == MESSAGING_MENU_TIME) | |
| 122 | messaging_menu_app_set_source_time(mmapp, id, g_get_real_time()); | |
| 123 | else if (messaging_menu_text == MESSAGING_MENU_COUNT) | |
| 124 | messaging_menu_app_set_source_count(mmapp, id, count); | |
| 125 | messaging_menu_app_draw_attention(mmapp, id); | |
| 126 | ||
| 127 | g_free(id); | |
| 128 | } | |
| 129 | ||
| 130 | static void | |
| 131 | messaging_menu_remove_conversation(PurpleConversation *conv) | |
| 132 | { | |
| 133 | gchar *id = conversation_id(conv); | |
| 134 | if (messaging_menu_app_has_source(mmapp, id)) | |
| 135 | messaging_menu_app_remove_source(mmapp, id); | |
| 136 | g_free(id); | |
| 137 | } | |
| 138 | ||
| 139 | static void | |
|
41840
fe350460fb1c
Remove C99-obsoleted constructs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41696
diff
changeset
|
140 | refill_messaging_menu(void) |
| 35122 | 141 | { |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
142 | PurpleConversationManager *manager = NULL; |
| 35122 | 143 | GList *convs; |
| 144 | ||
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
145 | manager = purple_conversation_manager_get_default(); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
146 | convs = purple_conversation_manager_get_all(manager); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
147 | while(convs != NULL) { |
| 35122 | 148 | PurpleConversation *conv = convs->data; |
| 149 | messaging_menu_add_conversation(conv, | |
| 35123 | 150 | GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv), |
| 151 | "unity-message-count"))); | |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
152 | convs = g_list_delete_link(convs, convs); |
| 35122 | 153 | } |
| 154 | } | |
| 155 | ||
| 156 | static int | |
| 157 | alert(PurpleConversation *conv) | |
| 158 | { | |
| 159 | gint count; | |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
160 | PidginConversation *gtkconv = NULL; |
|
41696
35f8ce475b21
Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents:
41665
diff
changeset
|
161 | PidginDisplayWindow *displaywin = NULL; |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
162 | GtkRoot *root = NULL; |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
163 | GtkWidget *win = NULL; |
|
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
164 | |
| 35122 | 165 | if (conv == NULL || PIDGIN_CONVERSATION(conv) == NULL) |
| 166 | return 0; | |
| 167 | ||
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
168 | gtkconv = PIDGIN_CONVERSATION(conv); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
169 | root = gtk_widget_get_root(gtkconv->tab_cont); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
170 | win = GTK_WIDGET(root); |
|
41696
35f8ce475b21
Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents:
41665
diff
changeset
|
171 | displaywin = PIDGIN_DISPLAY_WINDOW(win); |
| 35122 | 172 | |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
173 | if (!gtk_widget_has_focus(win) || |
|
41696
35f8ce475b21
Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents:
41665
diff
changeset
|
174 | !pidgin_display_window_conversation_is_selected(displaywin, conv)) |
| 35122 | 175 | { |
| 35123 | 176 | count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv), |
| 177 | "unity-message-count")); | |
| 35122 | 178 | if (!count++) |
| 179 | ++n_sources; | |
| 180 | ||
| 35123 | 181 | g_object_set_data(G_OBJECT(conv), "unity-message-count", |
| 182 | GINT_TO_POINTER(count)); | |
| 35122 | 183 | messaging_menu_add_conversation(conv, count); |
| 184 | update_launcher(); | |
| 185 | } | |
| 186 | ||
| 187 | return 0; | |
| 188 | } | |
| 189 | ||
| 190 | static void | |
| 191 | unalert(PurpleConversation *conv) | |
| 192 | { | |
| 35123 | 193 | if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv), "unity-message-count")) > 0) |
| 35122 | 194 | --n_sources; |
| 35123 | 195 | |
| 196 | g_object_set_data(G_OBJECT(conv), "unity-message-count", | |
| 197 | GINT_TO_POINTER(0)); | |
| 35122 | 198 | messaging_menu_remove_conversation(conv); |
| 199 | update_launcher(); | |
| 200 | } | |
| 201 | ||
| 202 | static int | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
203 | unalert_cb(G_GNUC_UNUSED GtkWidget *widget, G_GNUC_UNUSED gpointer data, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
204 | PurpleConversation *conv) |
| 35122 | 205 | { |
| 206 | unalert(conv); | |
| 207 | return 0; | |
| 208 | } | |
| 209 | ||
| 210 | static gboolean | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
211 | message_displayed_cb(PurpleConversation *conv, PurpleMessage *msg, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
212 | G_GNUC_UNUSED gpointer data) |
| 35122 | 213 | { |
|
36110
63663622e327
Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36103
diff
changeset
|
214 | PurpleMessageFlags flags = purple_message_get_flags(msg); |
|
63663622e327
Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36103
diff
changeset
|
215 | |
| 35123 | 216 | if ((PURPLE_IS_CHAT_CONVERSATION(conv) && alert_chat_nick && |
| 217 | !(flags & PURPLE_MESSAGE_NICK))) | |
| 35122 | 218 | return FALSE; |
| 219 | ||
| 220 | if ((flags & PURPLE_MESSAGE_RECV) && !(flags & PURPLE_MESSAGE_DELAYED)) | |
| 221 | alert(conv); | |
| 222 | ||
| 223 | return FALSE; | |
| 224 | } | |
| 225 | ||
| 226 | static void | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
227 | im_sent_im(PurpleAccount *account, PurpleMessage *msg, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
228 | G_GNUC_UNUSED gpointer data) |
| 35122 | 229 | { |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
230 | PurpleConversation *im = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
231 | PurpleConversationManager *manager = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
232 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
233 | manager = purple_conversation_manager_get_default(); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
234 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
235 | im = purple_conversation_manager_find_im(manager, account, |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
236 | purple_message_get_recipient(msg)); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
237 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
238 | unalert(im); |
| 35122 | 239 | } |
| 240 | ||
| 241 | static void | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
242 | chat_sent_im(PurpleAccount *account, G_GNUC_UNUSED PurpleMessage *msg, int id) |
| 35122 | 243 | { |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
244 | PurpleConversation *chat = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
245 | PurpleConversationManager *manager = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
246 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
247 | manager = purple_conversation_manager_get_default(); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
248 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
249 | chat = purple_conversation_manager_find_chat_by_id(manager, account, id); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
250 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
251 | unalert(chat); |
| 35122 | 252 | } |
| 253 | ||
| 254 | static void | |
| 255 | conv_created(PurpleConversation *conv) | |
| 256 | { | |
| 35123 | 257 | g_object_set_data(G_OBJECT(conv), "unity-message-count", |
| 258 | GINT_TO_POINTER(0)); | |
| 35122 | 259 | attach_signals(conv); |
| 260 | } | |
| 261 | ||
| 262 | static void | |
| 263 | deleting_conv(PurpleConversation *conv) | |
| 264 | { | |
| 265 | detach_signals(conv); | |
| 266 | unalert(conv); | |
| 267 | } | |
| 268 | ||
| 269 | static void | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
270 | message_source_activated(G_GNUC_UNUSED MessagingMenuApp *app, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
271 | const gchar *id, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
272 | G_GNUC_UNUSED gpointer user_data) |
| 35122 | 273 | { |
| 274 | gchar **sections = g_strsplit(id, ":", 0); | |
| 275 | PurpleConversation *conv = NULL; | |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
276 | PurpleConversationManager *conversation_manager = NULL; |
| 35122 | 277 | PurpleAccount *account; |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
278 | PurpleAccountManager *account_manager = NULL; |
| 35122 | 279 | |
| 280 | char *type = sections[0]; | |
| 281 | char *cname = sections[1]; | |
| 282 | char *aname = sections[2]; | |
| 283 | char *protocol = sections[3]; | |
| 284 | ||
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
285 | conversation_manager = purple_conversation_manager_get_default(); |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
286 | |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
287 | account_manager = purple_account_manager_get_default(); |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
288 | account = purple_account_manager_find(account_manager, aname, protocol); |
| 35123 | 289 | |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
290 | if (g_strcmp0(type, "im") == 0) { |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
291 | conv = purple_conversation_manager_find_im(conversation_manager, |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
292 | account, cname); |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
293 | } else if (g_strcmp0(type, "chat") == 0) { |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
294 | conv = purple_conversation_manager_find_chat(conversation_manager, |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
295 | account, cname); |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
296 | } else { |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
297 | conv = purple_conversation_manager_find(conversation_manager, |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
298 | account, cname); |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
299 | } |
| 35122 | 300 | |
| 301 | if (conv) { | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
302 | GtkRoot *root = NULL; |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
303 | GtkWidget *win = NULL; |
|
41696
35f8ce475b21
Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents:
41665
diff
changeset
|
304 | PidginDisplayWindow *displaywin = NULL; |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
305 | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
306 | root = gtk_widget_get_root(PIDGIN_CONVERSATION(conv)->tab_cont); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
307 | win = GTK_WIDGET(root); |
|
41696
35f8ce475b21
Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents:
41665
diff
changeset
|
308 | displaywin = PIDGIN_DISPLAY_WINDOW(win); |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
309 | |
| 35122 | 310 | unalert(conv); |
|
41184
05b5c210352b
Move conversation management from gtkconv.c to PidginConversationWindow.
Gary Kramlich <grim@reaperworld.com>
parents:
41081
diff
changeset
|
311 | |
|
41696
35f8ce475b21
Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents:
41665
diff
changeset
|
312 | pidgin_display_window_select(displaywin, conv); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
313 | |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
314 | gtk_root_set_focus(root, PIDGIN_CONVERSATION(conv)->entry); |
| 35122 | 315 | } |
| 316 | g_strfreev (sections); | |
| 317 | } | |
| 318 | ||
| 319 | static PurpleSavedStatus * | |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
320 | create_transient_status(PurpleStatusPrimitive primitive, |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
321 | PurpleStatusType *status_type) |
| 35122 | 322 | { |
| 323 | PurpleSavedStatus *saved_status = purple_savedstatus_new(NULL, primitive); | |
| 324 | ||
| 325 | if(status_type != NULL) { | |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
326 | PurpleAccountManager *manager = NULL; |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
327 | GList *active_accts = NULL; |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
328 | |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
329 | manager = purple_account_manager_get_default(); |
|
41454
7cc69bde919d
Update pidgin for the purple_account_manager_get_(in)active deprecations
Gary Kramlich <grim@reaperworld.com>
parents:
41314
diff
changeset
|
330 | active_accts = purple_account_manager_get_enabled(manager); |
|
41209
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
331 | |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
332 | while(active_accts != NULL) { |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
333 | PurpleAccount *account = PURPLE_ACCOUNT(active_accts->data); |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
334 | |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
335 | purple_savedstatus_set_substatus(saved_status, account, |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
336 | status_type, NULL); |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
337 | |
|
909561f42b1f
port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents:
41184
diff
changeset
|
338 | active_accts = g_list_delete_link(active_accts, active_accts); |
| 35122 | 339 | } |
| 340 | } | |
| 341 | ||
| 342 | return saved_status; | |
| 343 | } | |
| 344 | ||
| 345 | static void | |
| 346 | status_changed_cb(PurpleSavedStatus *saved_status) | |
| 347 | { | |
| 348 | MessagingMenuStatus status = MESSAGING_MENU_STATUS_AVAILABLE; | |
| 349 | ||
|
35378
5d9e2581005b
gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents:
35317
diff
changeset
|
350 | switch (purple_savedstatus_get_primitive_type(saved_status)) { |
| 35122 | 351 | case PURPLE_STATUS_AVAILABLE: |
| 352 | case PURPLE_STATUS_UNSET: | |
| 353 | status = MESSAGING_MENU_STATUS_AVAILABLE; | |
| 354 | break; | |
| 355 | ||
| 356 | case PURPLE_STATUS_AWAY: | |
| 357 | case PURPLE_STATUS_EXTENDED_AWAY: | |
| 358 | status = MESSAGING_MENU_STATUS_AWAY; | |
| 359 | break; | |
| 360 | ||
| 361 | case PURPLE_STATUS_INVISIBLE: | |
| 362 | status = MESSAGING_MENU_STATUS_INVISIBLE; | |
| 363 | break; | |
| 364 | ||
| 365 | case PURPLE_STATUS_MOBILE: | |
| 366 | case PURPLE_STATUS_OFFLINE: | |
| 367 | status = MESSAGING_MENU_STATUS_OFFLINE; | |
| 368 | break; | |
| 369 | ||
| 370 | case PURPLE_STATUS_UNAVAILABLE: | |
| 371 | status = MESSAGING_MENU_STATUS_BUSY; | |
| 372 | break; | |
| 373 | ||
| 374 | default: | |
| 375 | g_assert_not_reached(); | |
| 376 | } | |
| 377 | messaging_menu_app_set_status(mmapp, status); | |
| 378 | } | |
| 379 | ||
| 380 | static void | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
381 | messaging_menu_status_changed(G_GNUC_UNUSED MessagingMenuApp *mmapp, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
382 | MessagingMenuStatus mm_status, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
383 | G_GNUC_UNUSED gpointer user_data) |
| 35122 | 384 | { |
| 385 | PurpleSavedStatus *saved_status; | |
| 386 | PurpleStatusPrimitive primitive = PURPLE_STATUS_UNSET; | |
| 387 | ||
| 388 | switch (mm_status) { | |
| 389 | case MESSAGING_MENU_STATUS_AVAILABLE: | |
| 390 | primitive = PURPLE_STATUS_AVAILABLE; | |
| 391 | break; | |
| 392 | ||
| 393 | case MESSAGING_MENU_STATUS_AWAY: | |
| 394 | primitive = PURPLE_STATUS_AWAY; | |
| 395 | break; | |
| 396 | ||
| 397 | case MESSAGING_MENU_STATUS_BUSY: | |
| 398 | primitive = PURPLE_STATUS_UNAVAILABLE; | |
| 399 | break; | |
| 400 | ||
| 401 | case MESSAGING_MENU_STATUS_INVISIBLE: | |
| 402 | primitive = PURPLE_STATUS_INVISIBLE; | |
| 403 | break; | |
| 404 | ||
| 405 | case MESSAGING_MENU_STATUS_OFFLINE: | |
| 406 | primitive = PURPLE_STATUS_OFFLINE; | |
| 407 | break; | |
| 408 | ||
| 409 | default: | |
| 410 | g_assert_not_reached(); | |
| 411 | } | |
| 412 | ||
| 413 | saved_status = purple_savedstatus_find_transient_by_type_and_message(primitive, NULL); | |
| 414 | if (saved_status == NULL) | |
| 415 | saved_status = create_transient_status(primitive, NULL); | |
| 416 | purple_savedstatus_activate(saved_status); | |
| 417 | } | |
| 418 | ||
| 419 | static void | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
420 | alert_config_cb(GtkWidget *widget, G_GNUC_UNUSED gpointer data) |
| 35122 | 421 | { |
| 422 | gboolean on = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); | |
| 423 | purple_prefs_set_bool("/plugins/gtk/unity/alert_chat_nick", on); | |
| 424 | alert_chat_nick = on; | |
| 425 | } | |
| 426 | ||
| 427 | static void | |
| 428 | launcher_config_cb(GtkWidget *widget, gpointer data) | |
| 429 | { | |
| 430 | gint option = GPOINTER_TO_INT(data); | |
| 35124 | 431 | if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) |
| 432 | return; | |
| 35122 | 433 | |
| 434 | purple_prefs_set_int("/plugins/gtk/unity/launcher_count", option); | |
| 435 | launcher_count = option; | |
| 436 | if (option == LAUNCHER_COUNT_DISABLE) | |
| 437 | unity_launcher_entry_set_count_visible(launcher, FALSE); | |
| 438 | else | |
| 439 | update_launcher(); | |
| 440 | } | |
| 441 | ||
| 442 | static void | |
| 443 | messaging_menu_config_cb(GtkWidget *widget, gpointer data) | |
| 444 | { | |
| 445 | gint option = GPOINTER_TO_INT(data); | |
| 35124 | 446 | if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) |
| 447 | return; | |
| 35122 | 448 | |
| 449 | purple_prefs_set_int("/plugins/gtk/unity/messaging_menu_text", option); | |
| 450 | messaging_menu_text = option; | |
| 451 | refill_messaging_menu(); | |
| 452 | } | |
| 453 | ||
| 454 | static int | |
| 455 | attach_signals(PurpleConversation *conv) | |
| 456 | { | |
| 457 | PidginConversation *gtkconv = NULL; | |
| 458 | guint id; | |
| 459 | ||
| 460 | gtkconv = PIDGIN_CONVERSATION(conv); | |
| 461 | if (!gtkconv) | |
| 462 | return 0; | |
| 463 | ||
| 464 | id = g_signal_connect(G_OBJECT(gtkconv->entry), "focus-in-event", | |
| 35123 | 465 | G_CALLBACK(unalert_cb), conv); |
| 466 | g_object_set_data(G_OBJECT(conv), "unity-entry-signal", GUINT_TO_POINTER(id)); | |
| 35122 | 467 | |
|
40947
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
468 | id = g_signal_connect(G_OBJECT(gtkconv->history), "focus-in-event", |
| 35123 | 469 | G_CALLBACK(unalert_cb), conv); |
|
40947
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
470 | g_object_set_data(G_OBJECT(conv), "unity-history-signal", GUINT_TO_POINTER(id)); |
| 35122 | 471 | |
| 472 | return 0; | |
| 473 | } | |
| 474 | ||
| 475 | static void | |
| 476 | detach_signals(PurpleConversation *conv) | |
| 477 | { | |
| 478 | PidginConversation *gtkconv = NULL; | |
| 479 | guint id; | |
| 480 | gtkconv = PIDGIN_CONVERSATION(conv); | |
| 481 | if (!gtkconv) | |
| 482 | return; | |
| 483 | ||
|
40947
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
484 | id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv), "unity-history-signal")); |
|
4169f8090a0e
Make the unity plugin compile again and add stuff to ci ubuntu builds
Gary Kramlich <grim@reaperworld.com>
parents:
40894
diff
changeset
|
485 | g_signal_handler_disconnect(gtkconv->history, id); |
| 35122 | 486 | |
| 35123 | 487 | id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(conv), "unity-entry-signal")); |
| 35122 | 488 | g_signal_handler_disconnect(gtkconv->entry, id); |
| 489 | ||
| 35123 | 490 | g_object_set_data(G_OBJECT(conv), "unity-message-count", |
| 491 | GINT_TO_POINTER(0)); | |
| 35122 | 492 | } |
| 493 | ||
| 494 | static GtkWidget * | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
495 | get_config_frame(G_GNUC_UNUSED PurplePlugin *plugin) |
| 35122 | 496 | { |
| 497 | GtkWidget *ret = NULL, *frame = NULL; | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
498 | GtkWidget *vbox = NULL, *toggle = NULL, *group = NULL; |
| 35122 | 499 | |
|
35534
8e72593def2c
Fix gtk_[hv]box_new gtk3 deprecation warnings in unity plugin
Ankit Vani <a@nevitus.org>
parents:
35378
diff
changeset
|
500 | ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, 18); |
| 35122 | 501 | |
| 502 | /* Alerts */ | |
| 503 | ||
| 504 | frame = pidgin_make_frame(ret, _("Chatroom alerts")); | |
|
35534
8e72593def2c
Fix gtk_[hv]box_new gtk3 deprecation warnings in unity plugin
Ankit Vani <a@nevitus.org>
parents:
35378
diff
changeset
|
505 | vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
506 | gtk_box_append(GTK_BOX(frame), vbox); |
| 35122 | 507 | |
| 508 | toggle = gtk_check_button_new_with_mnemonic(_("Chatroom message alerts _only where someone says your username")); | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
509 | gtk_box_append(GTK_BOX(vbox), toggle); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
510 | gtk_check_button_set_active(GTK_CHECK_BUTTON(toggle), |
| 35123 | 511 | purple_prefs_get_bool("/plugins/gtk/unity/alert_chat_nick")); |
| 35122 | 512 | g_signal_connect(G_OBJECT(toggle), "toggled", |
| 35123 | 513 | G_CALLBACK(alert_config_cb), NULL); |
| 35122 | 514 | |
| 515 | /* Launcher integration */ | |
| 516 | ||
| 517 | frame = pidgin_make_frame(ret, _("Launcher Icon")); | |
|
35534
8e72593def2c
Fix gtk_[hv]box_new gtk3 deprecation warnings in unity plugin
Ankit Vani <a@nevitus.org>
parents:
35378
diff
changeset
|
518 | vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
519 | gtk_box_append(GTK_BOX(frame), vbox); |
| 35122 | 520 | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
521 | toggle = gtk_check_button_new_with_mnemonic(_("_Disable launcher integration")); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
522 | group = toggle; |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
523 | gtk_box_append(GTK_BOX(vbox), toggle); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
524 | gtk_check_button_set_active(GTK_CHECK_BUTTON(toggle), |
| 35122 | 525 | purple_prefs_get_int("/plugins/gtk/unity/launcher_count") == LAUNCHER_COUNT_DISABLE); |
| 526 | g_signal_connect(G_OBJECT(toggle), "toggled", | |
| 35123 | 527 | G_CALLBACK(launcher_config_cb), GUINT_TO_POINTER(LAUNCHER_COUNT_DISABLE)); |
| 35122 | 528 | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
529 | toggle = gtk_check_button_new_with_mnemonic( |
| 35123 | 530 | _("Show number of unread _messages on launcher icon")); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
531 | gtk_check_button_set_group(GTK_CHECK_BUTTON(toggle), |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
532 | GTK_CHECK_BUTTON(group)); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
533 | gtk_box_append(GTK_BOX(vbox), toggle); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
534 | gtk_check_button_set_active(GTK_CHECK_BUTTON(toggle), |
| 35122 | 535 | purple_prefs_get_int("/plugins/gtk/unity/launcher_count") == LAUNCHER_COUNT_MESSAGES); |
| 536 | g_signal_connect(G_OBJECT(toggle), "toggled", | |
| 35123 | 537 | G_CALLBACK(launcher_config_cb), GUINT_TO_POINTER(LAUNCHER_COUNT_MESSAGES)); |
| 35122 | 538 | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
539 | toggle = gtk_check_button_new_with_mnemonic( |
|
35317
3c9c77b80a6c
Merge the release-2.x.y branch into default.
Mark Doliner <mark@kingant.net>
diff
changeset
|
540 | _("Show number of unread co_nversations on launcher icon")); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
541 | gtk_check_button_set_group(GTK_CHECK_BUTTON(toggle), |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
542 | GTK_CHECK_BUTTON(group)); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
543 | gtk_box_append(GTK_BOX(vbox), toggle); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
544 | gtk_check_button_set_active(GTK_CHECK_BUTTON(toggle), |
| 35122 | 545 | purple_prefs_get_int("/plugins/gtk/unity/launcher_count") == LAUNCHER_COUNT_SOURCES); |
| 546 | g_signal_connect(G_OBJECT(toggle), "toggled", | |
| 35123 | 547 | G_CALLBACK(launcher_config_cb), GUINT_TO_POINTER(LAUNCHER_COUNT_SOURCES)); |
| 35122 | 548 | |
| 549 | /* Messaging menu integration */ | |
| 550 | ||
| 551 | frame = pidgin_make_frame(ret, _("Messaging Menu")); | |
|
35534
8e72593def2c
Fix gtk_[hv]box_new gtk3 deprecation warnings in unity plugin
Ankit Vani <a@nevitus.org>
parents:
35378
diff
changeset
|
552 | vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
553 | gtk_box_append(GTK_BOX(frame), vbox); |
| 35122 | 554 | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
555 | toggle = gtk_check_button_new_with_mnemonic( |
| 35123 | 556 | _("Show number of _unread messages for conversations in messaging menu")); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
557 | group = toggle; |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
558 | gtk_box_append(GTK_BOX(vbox), toggle); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
559 | gtk_check_button_set_active(GTK_CHECK_BUTTON(toggle), |
| 35122 | 560 | purple_prefs_get_int("/plugins/gtk/unity/messaging_menu_text") == MESSAGING_MENU_COUNT); |
| 561 | g_signal_connect(G_OBJECT(toggle), "toggled", | |
| 35123 | 562 | G_CALLBACK(messaging_menu_config_cb), GUINT_TO_POINTER(MESSAGING_MENU_COUNT)); |
| 35122 | 563 | |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
564 | toggle = gtk_check_button_new_with_mnemonic( |
| 35123 | 565 | _("Show _elapsed time for unread conversations in messaging menu")); |
|
41580
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
566 | gtk_check_button_set_group(GTK_CHECK_BUTTON(toggle), |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
567 | GTK_CHECK_BUTTON(group)); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
568 | gtk_box_append(GTK_BOX(vbox), toggle); |
|
787ca853b6c4
Port the unity plugin to gtk4
Gary Kramlich <grim@reaperworld.com>
parents:
41454
diff
changeset
|
569 | gtk_check_button_set_active(GTK_CHECK_BUTTON(toggle), |
| 35122 | 570 | purple_prefs_get_int("/plugins/gtk/unity/messaging_menu_text") == MESSAGING_MENU_TIME); |
| 571 | g_signal_connect(G_OBJECT(toggle), "toggled", | |
| 35123 | 572 | G_CALLBACK(messaging_menu_config_cb), GUINT_TO_POINTER(MESSAGING_MENU_TIME)); |
| 35122 | 573 | |
| 574 | return ret; | |
| 575 | } | |
| 576 | ||
|
40894
80d9d7a73a60
Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents:
40502
diff
changeset
|
577 | static GPluginPluginInfo * |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
578 | unity_query(G_GNUC_UNUSED GError **error) |
|
36969
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
579 | { |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
580 | const gchar * const authors[] = { |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
581 | "Ankit Vani <a@nevitus.org>", |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
582 | NULL |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
583 | }; |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
584 | |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
585 | return pidgin_plugin_info_new( |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
586 | "id", UNITY_PLUGIN_ID, |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
587 | "name", N_("Unity Integration"), |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
588 | "version", DISPLAY_VERSION, |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
589 | "category", N_("Notification"), |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
590 | "summary", N_("Provides integration with Unity."), |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
591 | "description", N_("Provides integration with Unity's " |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
592 | "messaging menu and launcher."), |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
593 | "authors", authors, |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
594 | "website", PURPLE_WEBSITE, |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
595 | "abi-version", PURPLE_ABI_VERSION, |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
596 | "gtk-config-frame-cb", get_config_frame, |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
597 | NULL |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
598 | ); |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
599 | } |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
600 | |
| 35122 | 601 | static gboolean |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
602 | unity_load(GPluginPlugin *plugin, G_GNUC_UNUSED GError **error) { |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
603 | GList *convs = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
604 | PurpleConversationManager *manager = NULL; |
| 35122 | 605 | PurpleSavedStatus *saved_status; |
| 606 | void *conv_handle = purple_conversations_get_handle(); | |
| 607 | void *gtk_conv_handle = pidgin_conversations_get_handle(); | |
| 608 | void *savedstat_handle = purple_savedstatuses_get_handle(); | |
| 609 | ||
|
36969
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
610 | purple_prefs_add_none("/plugins/gtk"); |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
611 | purple_prefs_add_none("/plugins/gtk/unity"); |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
612 | purple_prefs_add_int("/plugins/gtk/unity/launcher_count", LAUNCHER_COUNT_SOURCES); |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
613 | purple_prefs_add_int("/plugins/gtk/unity/messaging_menu_text", MESSAGING_MENU_COUNT); |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
614 | purple_prefs_add_bool("/plugins/gtk/unity/alert_chat_nick", TRUE); |
|
c78437610c6d
Refactored unity plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents:
35125
diff
changeset
|
615 | |
| 35122 | 616 | alert_chat_nick = purple_prefs_get_bool("/plugins/gtk/unity/alert_chat_nick"); |
| 617 | ||
| 618 | mmapp = messaging_menu_app_new("pidgin.desktop"); | |
| 619 | g_object_ref(mmapp); | |
| 620 | messaging_menu_app_register(mmapp); | |
| 621 | messaging_menu_text = purple_prefs_get_int("/plugins/gtk/unity/messaging_menu_text"); | |
| 622 | ||
| 623 | g_signal_connect(mmapp, "activate-source", | |
| 35123 | 624 | G_CALLBACK(message_source_activated), NULL); |
| 35122 | 625 | g_signal_connect(mmapp, "status-changed", |
| 35123 | 626 | G_CALLBACK(messaging_menu_status_changed), NULL); |
| 35122 | 627 | |
| 628 | saved_status = purple_savedstatus_get_current(); | |
| 629 | status_changed_cb(saved_status); | |
| 630 | ||
| 631 | purple_signal_connect(savedstat_handle, "savedstatus-changed", plugin, | |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
632 | G_CALLBACK(status_changed_cb), NULL); |
| 35122 | 633 | |
| 634 | launcher = unity_launcher_entry_get_for_desktop_id("pidgin.desktop"); | |
| 635 | g_object_ref(launcher); | |
| 636 | launcher_count = purple_prefs_get_int("/plugins/gtk/unity/launcher_count"); | |
| 637 | ||
| 638 | purple_signal_connect(gtk_conv_handle, "displayed-im-msg", plugin, | |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
639 | G_CALLBACK(message_displayed_cb), NULL); |
| 35122 | 640 | purple_signal_connect(gtk_conv_handle, "displayed-chat-msg", plugin, |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
641 | G_CALLBACK(message_displayed_cb), NULL); |
| 35122 | 642 | purple_signal_connect(conv_handle, "sent-im-msg", plugin, |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
643 | G_CALLBACK(im_sent_im), NULL); |
| 35122 | 644 | purple_signal_connect(conv_handle, "sent-chat-msg", plugin, |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
645 | G_CALLBACK(chat_sent_im), NULL); |
| 35122 | 646 | purple_signal_connect(conv_handle, "conversation-created", plugin, |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
647 | G_CALLBACK(conv_created), NULL); |
| 35122 | 648 | purple_signal_connect(conv_handle, "deleting-conversation", plugin, |
|
41314
0dc72eacd8bf
Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41209
diff
changeset
|
649 | G_CALLBACK(deleting_conv), NULL); |
| 35122 | 650 | |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
651 | manager = purple_conversation_manager_get_default(); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
652 | convs = purple_conversation_manager_get_all(manager); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
653 | while(convs != NULL) { |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
654 | PurpleConversation *conv = PURPLE_CONVERSATION(convs->data); |
| 35122 | 655 | attach_signals(conv); |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
656 | convs = g_list_delete_link(convs, convs); |
| 35122 | 657 | } |
| 658 | ||
| 659 | return TRUE; | |
| 660 | } | |
| 661 | ||
| 662 | static gboolean | |
|
42074
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
663 | unity_unload(G_GNUC_UNUSED GPluginPlugin *plugin, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
664 | G_GNUC_UNUSED gboolean shutdown, |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
665 | G_GNUC_UNUSED GError **error) |
|
58ae70ad7f21
Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents:
41962
diff
changeset
|
666 | { |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
667 | GList *convs = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
668 | PurpleConversationManager *manager = NULL; |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
669 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
670 | manager = purple_conversation_manager_get_default(); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
671 | convs = purple_conversation_manager_get_all(manager); |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
672 | |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
673 | while(convs != NULL) { |
|
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
674 | PurpleConversation *conv = PURPLE_CONVERSATION(convs->data); |
| 35122 | 675 | unalert(conv); |
| 676 | detach_signals(conv); | |
|
41002
717c8a3f95a3
Update the unity plugin for the PurpleConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents:
40947
diff
changeset
|
677 | convs = g_list_delete_link(convs, convs); |
| 35122 | 678 | } |
|
40894
80d9d7a73a60
Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents:
40502
diff
changeset
|
679 | |
| 35122 | 680 | unity_launcher_entry_set_count_visible(launcher, FALSE); |
| 681 | messaging_menu_app_unregister(mmapp); | |
| 682 | ||
| 683 | g_object_unref(launcher); | |
| 684 | g_object_unref(mmapp); | |
| 685 | return TRUE; | |
| 686 | } | |
| 687 | ||
|
40894
80d9d7a73a60
Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents:
40502
diff
changeset
|
688 | GPLUGIN_NATIVE_PLUGIN_DECLARE(unity) |