Sat, 13 Apr 2024 20:53:22 -0500
Remove PidginIMWindow
This was a rebuild of the old "New Instant Message" window and unfortunately
that doesn't really work with where we are going with a "New Conversation"
window.
Testing Done:
Ran with the turtles and mucked around in the user interface a bit.
Reviewed at https://reviews.imfreedom.org/r/3110/
| pidgin/meson.build | file | annotate | diff | comparison | revisions | |
| pidgin/pidginapplication.c | file | annotate | diff | comparison | revisions | |
| pidgin/pidginimwindow.c | file | annotate | diff | comparison | revisions | |
| pidgin/pidginimwindow.h | file | annotate | diff | comparison | revisions | |
| pidgin/resources/gtk/menus.ui | file | annotate | diff | comparison | revisions | |
| pidgin/resources/imwindow.ui | file | annotate | diff | comparison | revisions | |
| pidgin/resources/pidgin.gresource.xml | file | annotate | diff | comparison | revisions |
--- a/pidgin/meson.build Sat Apr 13 20:37:17 2024 -0500 +++ b/pidgin/meson.build Sat Apr 13 20:53:22 2024 -0500 @@ -34,7 +34,6 @@ 'pidgindisplayitem.c', 'pidgindisplaywindow.c', 'pidginiconname.c', - 'pidginimwindow.c', 'pidgininfopane.c', 'pidginkeypad.c', 'pidginnotificationaddcontact.c', @@ -88,7 +87,6 @@ 'pidgindisplaywindow.h', 'pidgindebug.h', 'pidginiconname.h', - 'pidginimwindow.h', 'pidgininfopane.h', 'pidginkeypad.h', 'pidginnotificationaddcontact.h',
--- a/pidgin/pidginapplication.c Sat Apr 13 20:37:17 2024 -0500 +++ b/pidgin/pidginapplication.c Sat Apr 13 20:53:22 2024 -0500 @@ -43,7 +43,6 @@ #include "pidgincore.h" #include "pidgindebug.h" #include "pidgindisplaywindow.h" -#include "pidginimwindow.h" #include "pidginpluginsdialog.h" #include "pidginpluginsmenu.h" #include "pidginprefs.h" @@ -210,7 +209,6 @@ * This list keeps track of which actions should only be enabled while online. */ static const gchar *pidgin_application_online_actions[] = { - "new-message", }; /** @@ -437,23 +435,6 @@ } static void -pidgin_application_new_message(G_GNUC_UNUSED GSimpleAction *simple, - G_GNUC_UNUSED GVariant *parameter, - gpointer data) -{ - PidginApplication *application = data; - static GtkWidget *dialog = NULL; - - if(!PIDGIN_IS_IM_WINDOW(dialog)) { - dialog = pidgin_im_window_new(); - g_object_add_weak_pointer(G_OBJECT(dialog), (gpointer)&dialog); - } - - pidgin_application_present_transient_window(application, - GTK_WINDOW(dialog)); -} - -static void pidgin_application_online_help(G_GNUC_UNUSED GSimpleAction *simple, G_GNUC_UNUSED GVariant *parameter, G_GNUC_UNUSED gpointer data) @@ -560,9 +541,6 @@ .name = "manage-plugins", .activate = pidgin_application_plugins, }, { - .name = "new-message", - .activate = pidgin_application_new_message, - }, { .name = "online-help", .activate = pidgin_application_online_help, }, {
--- a/pidgin/pidginimwindow.c Sat Apr 13 20:37:17 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -/* - * Pidgin - Internet Messenger - * Copyright (C) Pidgin Developers <devel@pidgin.im> - * - * 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, see <https://www.gnu.org/licenses/>. - */ - -#include <purple.h> - -#include "pidginimwindow.h" - -#include "pidginaccountrow.h" - -struct _PidginIMWindow { - AdwMessageDialog parent; - - GtkCustomFilter *filter; - - GtkWidget *account; - GtkWidget *username; -}; - -/****************************************************************************** - * Helpers - *****************************************************************************/ -static gboolean -pidgin_im_window_filter_accounts(gpointer item, G_GNUC_UNUSED gpointer data) { - if(PURPLE_IS_ACCOUNT(item)) { - PurpleAccount *account = PURPLE_ACCOUNT(item); - PurpleProtocol *protocol = purple_account_get_protocol(account); - - if(PURPLE_IS_PROTOCOL(protocol)) { - return PURPLE_PROTOCOL_IMPLEMENTS(protocol, CONVERSATION, - send_message_async); - } - } - - return FALSE; - -} - -/****************************************************************************** - * Callbacks - *****************************************************************************/ -static void -pidgin_im_window_username_changed_cb(GtkEditable *self, gpointer data) { - const char *text = NULL; - gboolean enabled = FALSE; - - text = gtk_editable_get_text(self); - enabled = !purple_strempty(text); - - adw_message_dialog_set_response_enabled(data, "okay", enabled); -} - -static void -pidgin_im_window_response_cb(AdwMessageDialog *self, - const char *response, - G_GNUC_UNUSED gpointer data) -{ - PidginIMWindow *window = PIDGIN_IM_WINDOW(self); - PurpleAccount *account = NULL; - PurpleConversation *im = NULL; - PurpleConversationManager *manager = NULL; - const char *username = NULL; - - if(!purple_strequal(response, "okay")) { - return; - } - - account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(window->account)) ; - username = gtk_editable_get_text(GTK_EDITABLE(window->username)); - - manager = purple_conversation_manager_get_default(); - im = purple_conversation_manager_find_im(manager, account, username); - - if(!PURPLE_IS_IM_CONVERSATION(im)) { - /* This constructor automagically registers the conversation with the - * manager. - */ - purple_im_conversation_new(account, username); - } -} - -/****************************************************************************** - * GObject Implementation - *****************************************************************************/ -G_DEFINE_FINAL_TYPE(PidginIMWindow, pidgin_im_window, ADW_TYPE_MESSAGE_DIALOG) - -static void -pidgin_im_window_init(PidginIMWindow *window) { - gtk_widget_init_template(GTK_WIDGET(window)); - - gtk_custom_filter_set_filter_func(window->filter, - pidgin_im_window_filter_accounts, - NULL, NULL); -} - -static void -pidgin_im_window_class_init(PidginIMWindowClass *klass) { - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); - - gtk_widget_class_set_template_from_resource( - widget_class, - "/im/pidgin/Pidgin3/imwindow.ui" - ); - - gtk_widget_class_bind_template_child(widget_class, PidginIMWindow, - filter); - - gtk_widget_class_bind_template_child(widget_class, PidginIMWindow, - account); - gtk_widget_class_bind_template_child(widget_class, PidginIMWindow, - username); - - gtk_widget_class_bind_template_callback(widget_class, - pidgin_im_window_username_changed_cb); - gtk_widget_class_bind_template_callback(widget_class, - pidgin_im_window_response_cb); -} - -/****************************************************************************** - * Public API - *****************************************************************************/ -GtkWidget * -pidgin_im_window_new(void) { - return g_object_new(PIDGIN_TYPE_IM_WINDOW, NULL); -}
--- a/pidgin/pidginimwindow.h Sat Apr 13 20:37:17 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* - * Pidgin - Internet Messenger - * Copyright (C) Pidgin Developers <devel@pidgin.im> - * - * 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, see <https://www.gnu.org/licenses/>. - */ - -#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION) -# error "only <pidgin.h> may be included directly" -#endif - -#ifndef PIDGIN_IM_WINDOW_H -#define PIDGIN_IM_WINDOW_H - -#include <glib.h> - -#include <gtk/gtk.h> - -#include <adwaita.h> - -#include "pidginversion.h" - -G_BEGIN_DECLS - -/** - * PidginIMWindow: - * - * A window used to start a new direct message. - * - * Since: 3.0 - */ - -#define PIDGIN_TYPE_IM_WINDOW (pidgin_im_window_get_type()) - -PIDGIN_AVAILABLE_IN_3_0 -G_DECLARE_FINAL_TYPE(PidginIMWindow, pidgin_im_window, - PIDGIN, IM_WINDOW, AdwMessageDialog) - -/** - * pidgin_im_window_new: - * - * Creates a new #PidginIMWindow instance. - * - * Returns: (transfer full): The new #PidginIMWindow instance. - */ -GtkWidget *pidgin_im_window_new(void); - -G_END_DECLS - -#endif /* PIDGIN_IM_WINDOW_H */
--- a/pidgin/resources/gtk/menus.ui Sat Apr 13 20:37:17 2024 -0500 +++ b/pidgin/resources/gtk/menus.ui Sat Apr 13 20:53:22 2024 -0500 @@ -29,10 +29,6 @@ <section> <item> - <attribute name="label" translatable="yes">New Instant _Message</attribute> - <attribute name="action">app.new-message</attribute> - </item> - <item> <attribute name="label" translatable="yes">Join Channel</attribute> <attribute name="action">app.join-channel</attribute> </item>
--- a/pidgin/resources/imwindow.ui Sat Apr 13 20:37:17 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +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"/> - <!-- interface-license-type gplv2 --> - <!-- interface-name Pidgin --> - <!-- interface-description Internet Messenger --> - <!-- interface-copyright Pidgin Developers <devel@pidgin.im> --> - <template class="PidginIMWindow" parent="AdwMessageDialog"> - <property name="heading" translatable="yes">New Instant Message</property> - <property name="body" translatable="yes">Please enter the username or alias of the person you would like to IM.</property> - <property name="extra-child"> - <object class="AdwPreferencesGroup"> - <property name="vexpand">true</property> - <property name="hexpand">true</property> - <child> - <object class="PidginAccountRow" id="account"> - <property name="filter"> - <object class="GtkEveryFilter"> - <child> - <object class="GtkCustomFilter" id="filter"/> - </child> - <child> - <object class="PidginAccountFilterConnected"/> - </child> - </object> - </property> - </object> - </child> - <child> - <object class="AdwEntryRow" id="username"> - <property name="focusable">no</property> - <property name="title" translatable="yes">_Username</property> - <property name="use-underline">yes</property> - <property name="activates-default">yes</property> - <signal name="changed" handler="pidgin_im_window_username_changed_cb"/> - </object> - </child> - </object> - </property> - <property name="default-response">okay</property> - <property name="close-response">cancel</property> - <responses> - <response id="cancel" translatable="yes">_Cancel</response> - <response id="okay" translatable="yes" appearance="suggested" enabled="false">_Okay</response> - </responses> - <signal name="response" handler="pidgin_im_window_response_cb"/> - </template> -</interface>
--- a/pidgin/resources/pidgin.gresource.xml Sat Apr 13 20:37:17 2024 -0500 +++ b/pidgin/resources/pidgin.gresource.xml Sat Apr 13 20:53:22 2024 -0500 @@ -38,7 +38,6 @@ <file compressed="true" preprocess="xml-stripblanks">contactlist.ui</file> <file compressed="true" preprocess="xml-stripblanks">contactlistitem.ui</file> <file compressed="true" preprocess="xml-stripblanks">conversationmemberlistitem.ui</file> - <file compressed="true" preprocess="xml-stripblanks">imwindow.ui</file> <file compressed="true" preprocess="xml-stripblanks">infopane.ui</file> <file compressed="true" preprocess="xml-stripblanks">notificationlist.ui</file> <file compressed="true" preprocess="xml-stripblanks">presenceicon.ui</file>