pidgin/pidgin

8f6c0247f9f2
Parents dbc5c2d601ab
Children c3e9a7d14e6f
Start setting up the protocol specific set mood menu items
--- a/pidgin/pidginaccountactionsmenu.c Tue Apr 07 00:55:43 2020 -0500
+++ b/pidgin/pidginaccountactionsmenu.c Tue Apr 07 01:20:01 2020 -0500
@@ -33,6 +33,7 @@
GtkMenu parent;
GtkWidget *separator;
+ GtkWidget *set_mood;
PurpleAccount *account;
};
@@ -62,6 +63,11 @@
}
static void
+pidgin_account_actions_menu_set_mood_cb(GtkMenuItem *item, gpointer data) {
+ g_warning("open the mood dialog");
+}
+
+static void
pidgin_account_actions_menu_action(GtkMenuItem *item, gpointer data) {
PurpleProtocolAction *action = (PurpleProtocolAction *)data;
@@ -80,7 +86,7 @@
PurpleConnection *connection = NULL;
PurpleProtocol *protocol = NULL;
GList *children = NULL, *l = NULL;
- gboolean items_added = FALSE;
+ gboolean show_separator = FALSE;
gint position = 0;
g_clear_object(&menu->account);
@@ -106,11 +112,11 @@
*/
children = gtk_container_get_children(GTK_CONTAINER(menu));
for(l = children, position = 0; l != NULL; l = l->next, position++) {
- /* check if the widget is our separator and if so, bail out of the
+ /* check if the widget is the `set_mood` item and if so, bail out of the
* loop.
*/
- if(l->data == menu->separator) {
- /* and push position past the separator */
+ if(l->data == menu->set_mood) {
+ /* and push position past the set_mood item */
position++;
break;
@@ -119,6 +125,13 @@
g_list_free(children);
protocol = purple_connection_get_protocol(connection);
+
+ if(PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT, get_moods)) {
+ gtk_widget_show(menu->set_mood);
+
+ show_separator = TRUE;
+ }
+
if(PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT, get_actions)) {
GtkWidget *item = NULL;
GList *actions = NULL, *l = NULL;
@@ -154,14 +167,14 @@
gtk_widget_show(item);
/* since we added an item, make sure items_added is true */
- items_added = TRUE;
+ show_separator = TRUE;
}
g_list_free(actions);
}
/* if we added any items, make our separator visible. */
- if(items_added) {
+ if(show_separator) {
gtk_widget_show(menu->separator);
}
}
@@ -253,11 +266,15 @@
gtk_widget_class_bind_template_child(widget_class, PidginAccountActionsMenu,
separator);
+ gtk_widget_class_bind_template_child(widget_class, PidginAccountActionsMenu,
+ set_mood);
gtk_widget_class_bind_template_callback(widget_class,
pidgin_account_actions_menu_edit_cb);
gtk_widget_class_bind_template_callback(widget_class,
pidgin_account_actions_menu_disable_cb);
+ gtk_widget_class_bind_template_callback(widget_class,
+ pidgin_account_actions_menu_set_mood_cb);
}
/******************************************************************************
--- a/pidgin/resources/Accounts/actionsmenu.ui Tue Apr 07 00:55:43 2020 -0500
+++ b/pidgin/resources/Accounts/actionsmenu.ui Tue Apr 07 01:20:01 2020 -0500
@@ -43,6 +43,14 @@
</object>
</child>
<child>
+ <object class="GtkMenuItem" id="set_mood">
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Set _Mood...</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="pidgin_account_actions_menu_set_mood_cb" object="PidginAccountActionsMenu" swapped="no"/>
+ </object>
+ </child>
+ <child>
<object class="GtkSeparatorMenuItem">
<property name="visible">True</property>
<property name="can_focus">False</property>