pidgin/pidgin

Remove the roomlist from Pidgin

2 weeks ago, Gary Kramlich
b87a01be99af
Parents 15d740cec729
Children 6f71c59e437e
Remove the roomlist from Pidgin

This is going to be rewritten and none of this existing code is going to be
used.

Testing Done:
The turtles spared with the code as I spared with the app.

Reviewed at https://reviews.imfreedom.org/r/3116/
--- a/pidgin/gtkroomlist.c Sat Apr 13 21:59:37 2024 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,542 +0,0 @@
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include <glib/gi18n-lib.h>
-
-#include <gtk/gtk.h>
-
-#include <purple.h>
-
-#include "gtkroomlist.h"
-
-#include "pidginaccountchooser.h"
-
-#define PIDGIN_TYPE_ROOMLIST_DIALOG (pidgin_roomlist_dialog_get_type())
-G_DECLARE_FINAL_TYPE(PidginRoomlistDialog, pidgin_roomlist_dialog, PIDGIN,
- ROOMLIST_DIALOG, GtkDialog)
-
-#define PIDGIN_ROOMLIST_UI_DATA "pidgin-ui"
-
-enum {
- RESPONSE_STOP = 0,
- RESPONSE_LIST,
- RESPONSE_ADD,
- RESPONSE_JOIN,
-};
-
-struct _PidginRoomlistDialog {
- GtkDialog parent;
-
- GtkWidget *account_widget;
- GtkWidget *progress;
- GtkWidget *view;
- GtkSingleSelection *selection;
- GtkFilterListModel *filter;
-
- GtkWidget *stop_button;
- GtkWidget *list_button;
- GtkWidget *add_button;
- GtkWidget *join_button;
- GtkWidget *close_button;
-
- PurpleAccount *account;
- PurpleRoomlist *roomlist;
-
- gboolean pg_needs_pulse;
- guint pg_update_to;
-};
-
-G_DEFINE_FINAL_TYPE(PidginRoomlistDialog, pidgin_roomlist_dialog,
- GTK_TYPE_DIALOG)
-
-typedef struct {
- PidginRoomlistDialog *dialog;
- GListStore *model;
-} PidginRoomlist;
-
-/******************************************************************************
- * Helpers
- *****************************************************************************/
-static void
-pidgin_roomlist_close(PidginRoomlistDialog *dialog)
-{
- if (dialog->roomlist && purple_roomlist_get_in_progress(dialog->roomlist))
- purple_roomlist_cancel_get_list(dialog->roomlist);
-
- if (dialog->roomlist) {
- PidginRoomlist *rl = NULL;
-
- rl = g_object_get_data(G_OBJECT(dialog->roomlist),
- PIDGIN_ROOMLIST_UI_DATA);
-
- if (dialog->pg_update_to > 0)
- /* yes, that's right, unref it twice. */
- g_object_unref(dialog->roomlist);
-
- if (rl)
- rl->dialog = NULL;
- g_object_unref(dialog->roomlist);
- }
-
- g_clear_handle_id(&dialog->pg_update_to, g_source_remove);
-
- dialog->progress = NULL;
-}
-
-static void
-pidgin_roomlist_start_listing(PidginRoomlistDialog *dialog)
-{
- PurpleConnection *gc;
- PidginRoomlist *rl;
-
- gc = purple_account_get_connection(dialog->account);
- if (!gc)
- return;
-
- if (dialog->roomlist != NULL) {
- rl = g_object_get_data(G_OBJECT(dialog->roomlist),
- PIDGIN_ROOMLIST_UI_DATA);
-
- g_clear_object(&rl->model);
- g_object_unref(dialog->roomlist);
- }
-
- dialog->roomlist = purple_roomlist_get_list(gc);
- if (!dialog->roomlist)
- return;
- g_object_ref(dialog->roomlist);
-
- rl = g_object_get_data(G_OBJECT(dialog->roomlist),
- PIDGIN_ROOMLIST_UI_DATA);
- rl->dialog = dialog;
-
- gtk_widget_set_sensitive(dialog->account_widget, FALSE);
-
- gtk_filter_list_model_set_model(dialog->filter, G_LIST_MODEL(rl->model));
-
- /* some protocols (not bundled with libpurple) finish getting their
- * room list immediately */
- if(purple_roomlist_get_in_progress(dialog->roomlist)) {
- gtk_widget_set_sensitive(dialog->stop_button, TRUE);
- gtk_widget_set_sensitive(dialog->list_button, FALSE);
- } else {
- gtk_widget_set_sensitive(dialog->stop_button, FALSE);
- gtk_widget_set_sensitive(dialog->list_button, TRUE);
- }
- gtk_widget_set_sensitive(dialog->add_button, FALSE);
- gtk_widget_set_sensitive(dialog->join_button, FALSE);
-}
-
-static void
-pidgin_roomlist_stop_listing(PidginRoomlistDialog *dialog)
-{
- purple_roomlist_cancel_get_list(dialog->roomlist);
-
- gtk_widget_set_sensitive(dialog->account_widget, TRUE);
-
- gtk_widget_set_sensitive(dialog->stop_button, FALSE);
- gtk_widget_set_sensitive(dialog->list_button, TRUE);
- gtk_widget_set_sensitive(dialog->add_button, FALSE);
- gtk_widget_set_sensitive(dialog->join_button, FALSE);
-}
-
-static void
-pidgin_roomlist_add_to_blist(PidginRoomlistDialog *dialog)
-{
- char *name = NULL;
- PurpleAccount *account = NULL;
- PurpleConnection *gc = NULL;
- PurpleProtocol *protocol = NULL;
- PurpleRoomlistRoom *room = NULL;
-
- account = purple_roomlist_get_account(dialog->roomlist);
- gc = purple_account_get_connection(account);
-
- room = gtk_single_selection_get_selected_item(dialog->selection);
- g_return_if_fail(PURPLE_IS_ROOMLIST_ROOM(room));
-
- if(gc != NULL) {
- protocol = purple_connection_get_protocol(gc);
- }
-
- if(protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, room_serialize)) {
- name = purple_protocol_roomlist_room_serialize(PURPLE_PROTOCOL_ROOMLIST(protocol),
- room);
- } else {
- name = g_strdup(purple_roomlist_room_get_name(room));
- }
-
- purple_blist_request_add_chat(account, NULL, NULL, name);
-
- g_free(name);
-}
-
-static void
-pidgin_roomlist_join(PidginRoomlistDialog *dialog)
-{
- PurpleRoomlistRoom *room = NULL;
-
- room = gtk_single_selection_get_selected_item(dialog->selection);
- if(PURPLE_IS_ROOMLIST_ROOM(room)) {
- purple_roomlist_join_room(dialog->roomlist, room);
- }
-}
-
-/******************************************************************************
- * Actions
- *****************************************************************************/
-static void
-pidgin_roomlist_add_to_blist_cb(G_GNUC_UNUSED GSimpleAction *action,
- G_GNUC_UNUSED GVariant *parameter,
- gpointer data)
-{
- pidgin_roomlist_add_to_blist(data);
-}
-
-
-static void
-pidgin_roomlist_join_cb(G_GNUC_UNUSED GSimpleAction *action,
- G_GNUC_UNUSED GVariant *parameter,
- gpointer data)
-{
- pidgin_roomlist_join(data);
-}
-
-static GActionEntry actions[] = {
- {
- .name = "add",
- .activate = pidgin_roomlist_add_to_blist_cb,
- }, {
- .name = "join",
- .activate = pidgin_roomlist_join_cb,
- },
-};
-
-/******************************************************************************
- * Callbacks
- *****************************************************************************/
-static void
-pidgin_roomlist_response_cb(GtkDialog *gtk_dialog, gint response_id,
- G_GNUC_UNUSED gpointer data)
-{
- PidginRoomlistDialog *dialog = PIDGIN_ROOMLIST_DIALOG(gtk_dialog);
-
- switch(response_id) {
- case RESPONSE_STOP:
- pidgin_roomlist_stop_listing(dialog);
- break;
- case RESPONSE_LIST:
- pidgin_roomlist_start_listing(dialog);
- break;
- case RESPONSE_ADD:
- pidgin_roomlist_add_to_blist(dialog);
- break;
- case RESPONSE_JOIN:
- pidgin_roomlist_join(dialog);
- break;
- case GTK_RESPONSE_CLOSE:
- case GTK_RESPONSE_DELETE_EVENT:
- gtk_window_destroy(GTK_WINDOW(gtk_dialog));
- break;
- }
-}
-
-static gboolean
-close_request_cb(GtkWidget *w, G_GNUC_UNUSED gpointer d)
-{
- pidgin_roomlist_close(PIDGIN_ROOMLIST_DIALOG(w));
-
- gtk_window_destroy(GTK_WINDOW(w));
-
- return TRUE;
-}
-
-static void
-dialog_select_account_cb(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec,
- gpointer data)
-{
- PidginRoomlistDialog *dialog = data;
- PidginAccountChooser *chooser = PIDGIN_ACCOUNT_CHOOSER(obj);
- PurpleAccount *account = pidgin_account_chooser_get_selected(chooser);
- gboolean change = (account != dialog->account);
- dialog->account = account;
-
- if (change && dialog->roomlist) {
- PidginRoomlist *rl = NULL;
-
- rl = g_object_get_data(G_OBJECT(dialog->roomlist),
- PIDGIN_ROOMLIST_UI_DATA);
-
- g_clear_object(&rl->model);
- g_clear_object(&dialog->roomlist);
- }
-}
-
-static void
-selection_changed_cb(GtkSelectionModel *self, G_GNUC_UNUSED guint position,
- G_GNUC_UNUSED guint n_items, gpointer data)
-{
- PidginRoomlistDialog *dialog = data;
- guint index = GTK_INVALID_LIST_POSITION;
- gboolean found = FALSE;
-
- /* The passed in position and n_items gives the *range* of selections that
- * have changed, so just re-query it exactly since GtkSingleSelection has
- * only one. */
- index = gtk_single_selection_get_selected(GTK_SINGLE_SELECTION(self));
- found = index != GTK_INVALID_LIST_POSITION;
-
- gtk_widget_set_sensitive(dialog->add_button, found);
- gtk_widget_set_sensitive(dialog->join_button, found);
-}
-
-static void
-row_activated_cb(GtkColumnView *self, guint position, gpointer data)
-{
- PidginRoomlistDialog *dialog = data;
- PurpleRoomlistRoom *room = NULL;
- GtkSelectionModel *model = NULL;
-
- model = gtk_column_view_get_model(self);
- room = g_list_model_get_item(G_LIST_MODEL(model), position);
-
- if(PURPLE_IS_ROOMLIST_ROOM(room)) {
- purple_roomlist_join_room(dialog->roomlist, room);
- }
-
- g_clear_object(&room);
-}
-
-static gboolean
-account_filter_func(gpointer item, G_GNUC_UNUSED gpointer data) {
- PurpleProtocol *protocol = NULL;
-
- if(PURPLE_IS_ACCOUNT(item)) {
- PurpleAccount *account = PURPLE_ACCOUNT(item);
- PurpleConnection *conn = purple_account_get_connection(account);
- if(conn && PURPLE_CONNECTION_IS_CONNECTED(conn)) {
- protocol = purple_connection_get_protocol(conn);
- }
- }
-
- return (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, get_list));
-}
-
-gboolean
-pidgin_roomlist_is_showable(void)
-{
- GList *c;
- PurpleConnection *gc;
-
- for (c = purple_connections_get_all(); c != NULL; c = c->next) {
- gc = c->data;
-
- if(account_filter_func(purple_connection_get_account(gc), NULL)) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static void
-pidgin_roomlist_dialog_class_init(PidginRoomlistDialogClass *klass)
-{
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
-
- gtk_widget_class_set_template_from_resource(
- widget_class, "/im/pidgin/Pidgin3/Roomlist/roomlist.ui");
-
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- account_widget);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- view);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- selection);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- filter);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- add_button);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- close_button);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- join_button);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- list_button);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- progress);
- gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
- stop_button);
-
- gtk_widget_class_bind_template_callback(widget_class, close_request_cb);
- gtk_widget_class_bind_template_callback(widget_class, row_activated_cb);
- gtk_widget_class_bind_template_callback(widget_class,
- dialog_select_account_cb);
- gtk_widget_class_bind_template_callback(widget_class,
- selection_changed_cb);
- gtk_widget_class_bind_template_callback(widget_class,
- pidgin_roomlist_response_cb);
-}
-
-static void
-pidgin_roomlist_dialog_init(PidginRoomlistDialog *self)
-{
- GSimpleActionGroup *group = NULL;
- GtkCustomFilter *filter = NULL;
-
- gtk_widget_init_template(GTK_WIDGET(self));
-
- filter = gtk_custom_filter_new(account_filter_func, NULL, NULL);
- pidgin_account_chooser_set_filter(
- PIDGIN_ACCOUNT_CHOOSER(self->account_widget),
- GTK_FILTER(filter));
- g_object_unref(filter);
-
- /* Now setup our actions. */
- group = g_simple_action_group_new();
- g_action_map_add_action_entries(G_ACTION_MAP(group), actions,
- G_N_ELEMENTS(actions), self);
- gtk_widget_insert_action_group(GTK_WIDGET(self), "roomlist",
- G_ACTION_GROUP(group));
-}
-
-static PidginRoomlistDialog *
-pidgin_roomlist_dialog_new_with_account(PurpleAccount *account)
-{
- PidginRoomlistDialog *dialog = NULL;
- PidginAccountChooser *chooser = NULL;
-
- dialog = g_object_new(PIDGIN_TYPE_ROOMLIST_DIALOG, NULL);
- dialog->account = account;
-
- chooser = PIDGIN_ACCOUNT_CHOOSER(dialog->account_widget);
-
- if (!account) {
- /* This is normally NULL, and we normally don't care what the
- * first selected item is */
- dialog->account = pidgin_account_chooser_get_selected(chooser);
- } else {
- pidgin_account_chooser_set_selected(chooser, account);
- }
-
- /* show the dialog window and return the dialog */
- gtk_widget_set_visible(GTK_WIDGET(dialog), TRUE);
-
- return dialog;
-}
-
-void pidgin_roomlist_dialog_show_with_account(PurpleAccount *account)
-{
- PidginRoomlistDialog *dialog = pidgin_roomlist_dialog_new_with_account(account);
-
- pidgin_roomlist_start_listing(dialog);
-}
-
-void pidgin_roomlist_dialog_show(void)
-{
- pidgin_roomlist_dialog_new_with_account(NULL);
-}
-
-static gboolean pidgin_progress_bar_pulse(gpointer data)
-{
- PurpleRoomlist *list = data;
- PidginRoomlist *rl = NULL;
-
- rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA);
- if (!rl || !rl->dialog || !rl->dialog->pg_needs_pulse) {
- if (rl && rl->dialog)
- rl->dialog->pg_update_to = 0;
- g_object_unref(list);
- return FALSE;
- }
-
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR(rl->dialog->progress));
- rl->dialog->pg_needs_pulse = FALSE;
- return TRUE;
-}
-
-static void
-pidgin_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *room) {
- PidginRoomlist *rl = NULL;
-
- rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA);
-
- if (rl->dialog) {
- if (rl->dialog->pg_update_to == 0) {
- g_object_ref(list);
- rl->dialog->pg_update_to = g_timeout_add(100, pidgin_progress_bar_pulse, list);
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR(rl->dialog->progress));
- } else
- rl->dialog->pg_needs_pulse = TRUE;
- }
-
- g_list_store_append(rl->model, room);
-}
-
-static void
-pidgin_roomlist_in_progress(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec,
- gpointer data)
-{
- PurpleRoomlist *list = PURPLE_ROOMLIST(obj);
- PidginRoomlist *rl = data;
-
- if (purple_roomlist_get_in_progress(list)) {
- if (rl->dialog->account_widget) {
- gtk_widget_set_sensitive(rl->dialog->account_widget, FALSE);
- }
- gtk_widget_set_sensitive(rl->dialog->stop_button, TRUE);
- gtk_widget_set_sensitive(rl->dialog->list_button, FALSE);
- } else {
- rl->dialog->pg_needs_pulse = FALSE;
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(rl->dialog->progress), 0.0);
- if (rl->dialog->account_widget) {
- gtk_widget_set_sensitive(rl->dialog->account_widget, TRUE);
- }
- gtk_widget_set_sensitive(rl->dialog->stop_button, FALSE);
- gtk_widget_set_sensitive(rl->dialog->list_button, TRUE);
- }
-}
-
-static void
-pidgin_roomlist_new(PurpleRoomlist *list)
-{
- PidginRoomlist *rl = g_new0(PidginRoomlist, 1);
-
- g_object_set_data_full(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA, rl,
- (GDestroyNotify)g_free);
-
- rl->model = g_list_store_new(PURPLE_TYPE_ROOMLIST_ROOM);
-
- g_signal_connect(list, "notify::in-progress",
- G_CALLBACK(pidgin_roomlist_in_progress), rl);
-}
-
-static PurpleRoomlistUiOps ops = {
- .show_with_account = pidgin_roomlist_dialog_show_with_account,
- .create = pidgin_roomlist_new,
- .add_room = pidgin_roomlist_add_room,
-};
-
-
-void pidgin_roomlist_init(void)
-{
- purple_roomlist_set_ui_ops(&ops);
-}
--- a/pidgin/gtkroomlist.h Sat Apr 13 21:59:37 2024 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
-# error "only <pidgin.h> may be included directly"
-#endif
-
-#ifndef _PIDGINROOMLIST_H_
-#define _PIDGINROOMLIST_H_
-
-#include <purple.h>
-
-#include "pidginversion.h"
-
-G_BEGIN_DECLS
-
-/**
- * pidgin_roomlist_init:
- *
- * Initializes the room list subsystem.
- *
- * Since: 2.0
- */
-PIDGIN_AVAILABLE_IN_ALL
-void pidgin_roomlist_init(void);
-
-/**
- * pidgin_roomlist_is_showable:
- *
- * Determines if showing the room list dialog is a valid action.
- *
- * Returns: TRUE if there are accounts online that support listing
- * chat rooms. Otherwise return FALSE.
- *
- * Since: 2.0
- */
-PIDGIN_AVAILABLE_IN_ALL
-gboolean pidgin_roomlist_is_showable(void);
-
-/**
- * pidgin_roomlist_dialog_show:
- *
- * Shows a new roomlist dialog.
- *
- * Since: 2.0
- */
-PIDGIN_AVAILABLE_IN_ALL
-void pidgin_roomlist_dialog_show(void);
-
-/**
- * pidgin_roomlist_dialog_show_with_account:
- * @account: The account to use.
- *
- * Shows a new room list dialog and fetches the list for the specified account.
- *
- * Since: 2.0
- */
-PIDGIN_AVAILABLE_IN_ALL
-void pidgin_roomlist_dialog_show_with_account(PurpleAccount *account);
-
-G_END_DECLS
-
-#endif /* _PIDGINROOMLIST_H_ */
--- a/pidgin/meson.build Sat Apr 13 21:59:37 2024 -0500
+++ b/pidgin/meson.build Sat Apr 13 22:24:47 2024 -0500
@@ -6,7 +6,6 @@
'gtkmedia.c',
'gtknotify.c',
'gtkrequest.c',
- 'gtkroomlist.c',
'gtkutils.c',
'gtkwhiteboard.c',
'libpidgin.c',
@@ -60,7 +59,6 @@
'gtkmedia.h',
'gtknotify.h',
'gtkrequest.h',
- 'gtkroomlist.h',
'gtkutils.h',
'gtkwhiteboard.h',
'pidginabout.h',
--- a/pidgin/pidginapplication.c Sat Apr 13 21:59:37 2024 -0500
+++ b/pidgin/pidginapplication.c Sat Apr 13 22:24:47 2024 -0500
@@ -33,7 +33,6 @@
#include "pidginapplication.h"
-#include "gtkroomlist.h"
#include "pidginabout.h"
#include "pidginaccounteditor.h"
#include "pidginaccountmanager.h"
@@ -221,16 +220,6 @@
"join-channel",
};
-/*< private >
- * pidgin_application_room_list_actions:
- *
- * This list keeps track of which actions should only be enabled if an online
- * account supports room lists.
- */
-static const gchar *pidgin_application_room_list_actions[] = {
- "room-list",
-};
-
/**
* pidgin_action_group_actions_set_enable: (skip)
* @group: The #PidginActionGroup instance.
@@ -494,14 +483,6 @@
purple_core_quit();
}
-static void
-pidgin_application_room_list(G_GNUC_UNUSED GSimpleAction *simple,
- G_GNUC_UNUSED GVariant *parameter,
- G_GNUC_UNUSED gpointer data)
-{
- pidgin_roomlist_dialog_show();
-}
-
static GActionEntry app_entries[] = {
{
.name = "about",
@@ -549,9 +530,6 @@
}, {
.name = "quit",
.activate = pidgin_application_quit,
- }, {
- .name = "room-list",
- .activate = pidgin_application_room_list,
}
};
@@ -597,7 +575,6 @@
PidginApplication *application = data;
PurpleProtocol *protocol = NULL;
gboolean should_enable_channel = FALSE;
- gboolean should_enable_room_list = FALSE;
guint n_actions = 0;
n_actions = G_N_ELEMENTS(pidgin_application_online_actions);
@@ -622,19 +599,6 @@
n_actions,
TRUE);
}
-
- /* likewise, for the room list, we only care about enabling in this
- * handler.
- */
- should_enable_room_list = PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST,
- get_list);
- if(should_enable_room_list) {
- n_actions = G_N_ELEMENTS(pidgin_application_room_list_actions);
- pidgin_application_actions_set_enabled(application,
- pidgin_application_room_list_actions,
- n_actions,
- TRUE);
- }
}
static void
@@ -646,7 +610,6 @@
GList *connected = NULL;
gboolean should_disable_actions = TRUE;
gboolean should_disable_channel = TRUE;
- gboolean should_disable_room_list = TRUE;
guint n_actions = 0;
connected = purple_account_manager_get_connected(manager);
@@ -667,13 +630,8 @@
should_disable_channel = FALSE;
}
- /* Check if the protocol implements the room list interface. */
- if(PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, get_list)) {
- should_disable_room_list = FALSE;
- }
-
/* If we can't disable anything we can exit the loop early. */
- if(!should_disable_channel && !should_disable_room_list) {
+ if(!should_disable_channel) {
g_clear_list(&connected, NULL);
break;
@@ -697,14 +655,6 @@
n_actions,
FALSE);
}
-
- if(should_disable_room_list) {
- n_actions = G_N_ELEMENTS(pidgin_application_room_list_actions);
- pidgin_application_actions_set_enabled(application,
- pidgin_application_room_list_actions,
- n_actions,
- FALSE);
- }
}
static void
@@ -949,12 +899,6 @@
pidgin_application_channel_actions,
n_actions,
online);
-
- n_actions = G_N_ELEMENTS(pidgin_application_room_list_actions);
- pidgin_application_actions_set_enabled(application,
- pidgin_application_room_list_actions,
- n_actions,
- online);
}
static void
--- a/pidgin/pidginui.c Sat Apr 13 21:59:37 2024 -0500
+++ b/pidgin/pidginui.c Sat Apr 13 22:24:47 2024 -0500
@@ -32,7 +32,6 @@
#include "gtkmedia.h"
#include "gtknotify.h"
-#include "gtkroomlist.h"
#include "gtkrequest.h"
#include "gtkwhiteboard.h"
#include "pidgincore.h"
@@ -131,7 +130,6 @@
pidgin_request_init();
pidgin_commands_init();
- pidgin_roomlist_init();
pidgin_medias_init();
pidgin_notify_init();
--- a/pidgin/resources/Roomlist/roomlist.ui Sat Apr 13 21:59:37 2024 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Pidgin - Internet Messenger
-Copyright (C) Pidgin Developers <devel@pidgin.im>
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this library; if not, see <https://www.gnu.org/licenses/>.
--->
-<interface>
- <requires lib="gtk" version="4.0"/>
- <requires lib="pidgin" version="3.0"/>
- <!-- interface-license-type gplv2 -->
- <!-- interface-name Pidgin -->
- <!-- interface-description Internet Messenger -->
- <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
- <template class="PidginRoomlistDialog" parent="GtkDialog">
- <property name="title" translatable="1">Room List</property>
- <signal name="close-request" handler="close_request_cb" swapped="no"/>
- <signal name="response" handler="pidgin_roomlist_response_cb" swapped="no"/>
- <child internal-child="content_area">
- <object class="GtkBox">
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkBox">
- <property name="spacing">5</property>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="halign">start</property>
- <property name="label" translatable="1">_Account:</property>
- <property name="use-underline">1</property>
- <property name="mnemonic-widget">account_widget</property>
- </object>
- </child>
- <child>
- <object class="PidginAccountChooser" id="account_widget">
- <property name="hexpand">1</property>
- <property name="can-focus">1</property>
- <signal name="notify::account" handler="dialog_select_account_cb" swapped="no"/>
- <accessibility>
- <relation name="labelled-by">label1</relation>
- </accessibility>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="sw">
- <property name="vexpand">1</property>
- <property name="focusable">1</property>
- <property name="min-content-height">250</property>
- <property name="child">
- <object class="GtkColumnView" id="view">
- <property name="focusable">1</property>
- <property name="model">
- <object class="GtkSingleSelection" id="selection">
- <property name="model">
- <object class="GtkFilterListModel" id="filter">
- <property name="filter">
- <object class="GtkStringFilter">
- <property name="expression">
- <lookup name="name" type="PurpleRoomlistRoom"></lookup>
- </property>
- <binding name="search">
- <lookup name="text">search-entry</lookup>
- </binding>
- </object>
- </property>
- </object>
- </property>
- <signal name="selection-changed" handler="selection_changed_cb" swapped="no"/>
- </object>
- </property>
- <signal name="activate" handler="row_activated_cb" swapped="no"/>
- <child>
- <object class="GtkColumnViewColumn">
- <property name="title" translatable="1">Name</property>
- <property name="factory">
- <object class="GtkBuilderListItemFactory">
- <property name="bytes">
-<![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="GtkListItem">
- <property name="child">
- <object class="GtkLabel">
- <property name="xalign">0</property>
- <binding name="label">
- <lookup name="name" type="PurpleRoomlistRoom">
- <lookup name="item">GtkListItem</lookup>
- </lookup>
- </binding>
- </object>
- </property>
- </template>
-</interface>
-]]>
- </property>
- </object>
- </property>
- </object>
- </child>
- <child>
- <object class="GtkColumnViewColumn">
- <property name="expand">1</property>
- <property name="title" translatable="1">Description</property>
- <property name="factory">
- <object class="GtkBuilderListItemFactory">
- <property name="bytes">
-<![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="GtkListItem">
- <property name="child">
- <object class="GtkLabel">
- <property name="xalign">0</property>
- <binding name="label">
- <lookup name="description" type="PurpleRoomlistRoom">
- <lookup name="item">GtkListItem</lookup>
- </lookup>
- </binding>
- </object>
- </property>
- </template>
-</interface>
-]]>
- </property>
- </object>
- </property>
- </object>
- </child>
- </object>
- </property>
- </object>
- </child>
- <child>
- <object class="GtkSearchBar">
- <property name="key-capture-widget">PidginRoomlistDialog</property>
- <property name="child">
- <object class="GtkSearchEntry" id="search-entry">
- </object>
- </property>
- </object>
- </child>
- <child>
- <object class="GtkProgressBar" id="progress">
- </object>
- </child>
- </object>
- </child>
- <child type="action">
- <object class="GtkButton" id="stop_button">
- <property name="label">_Stop</property>
- <property name="sensitive">0</property>
- <property name="focusable">1</property>
- <property name="receives-default">1</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- <child type="action">
- <object class="GtkButton" id="list_button">
- <property name="label" translatable="1">_Get List</property>
- <property name="focusable">1</property>
- <property name="receives-default">1</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- <child type="action">
- <object class="GtkButton" id="add_button">
- <property name="label" translatable="1">_Add Chat</property>
- <property name="sensitive">0</property>
- <property name="focusable">1</property>
- <property name="receives-default">1</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- <child type="action">
- <object class="GtkButton" id="join_button">
- <property name="label" translatable="1">_Join</property>
- <property name="sensitive">0</property>
- <property name="focusable">1</property>
- <property name="receives-default">1</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- <child type="action">
- <object class="GtkButton" id="close_button">
- <property name="label">_Close</property>
- <property name="focusable">1</property>
- <property name="receives-default">1</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">stop_button</action-widget>
- <action-widget response="1">list_button</action-widget>
- <action-widget response="2">add_button</action-widget>
- <action-widget response="3">join_button</action-widget>
- <action-widget response="close">close_button</action-widget>
- </action-widgets>
- </template>
-</interface>
--- a/pidgin/resources/gtk/menus.ui Sat Apr 13 21:59:37 2024 -0500
+++ b/pidgin/resources/gtk/menus.ui Sat Apr 13 22:24:47 2024 -0500
@@ -72,10 +72,6 @@
<attribute name="label" translatable="yes">_File Transfers</attribute>
<attribute name="action">app.file-transfers</attribute>
</item>
- <item>
- <attribute name="label" translatable="yes">R_oom List</attribute>
- <attribute name="action">app.room-list</attribute>
- </item>
</section>
<section>
--- a/pidgin/resources/pidgin.gresource.xml Sat Apr 13 21:59:37 2024 -0500
+++ b/pidgin/resources/pidgin.gresource.xml Sat Apr 13 22:24:47 2024 -0500
@@ -29,7 +29,6 @@
<file compressed="true" preprocess="xml-stripblanks">Prefs/vv.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Protocols/chooser.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Protocols/detailed-view.ui</file>
- <file compressed="true" preprocess="xml-stripblanks">Roomlist/roomlist.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Whiteboard/whiteboard.ui</file>
<file compressed="true" preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
<file compressed="true" preprocess="xml-stripblanks">gtk/menus.ui</file>
--- a/po/POTFILES.in Sat Apr 13 21:59:37 2024 -0500
+++ b/po/POTFILES.in Sat Apr 13 22:24:47 2024 -0500
@@ -118,7 +118,6 @@
pidgin/gtkmedia.c
pidgin/gtknotify.c
pidgin/gtkrequest.c
-pidgin/gtkroomlist.c
pidgin/gtkutils.c
pidgin/gtkwhiteboard.c
pidgin/libpidgin.c
@@ -185,7 +184,6 @@
pidgin/resources/Prefs/vv.ui
pidgin/resources/Protocols/chooser.ui
pidgin/resources/Protocols/detailed-view.ui
-pidgin/resources/Roomlist/roomlist.ui
pidgin/resources/Whiteboard/whiteboard.ui
pidgin/resources/gtk/menus.ui
pidgin/resources/account-row.ui