Remove PidginIMWindow

Sat, 13 Apr 2024 20:53:22 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 13 Apr 2024 20:53:22 -0500
changeset 42712
85222db14907
parent 42711
ab244bae3b82
child 42713
a89c5a6dc80b

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>

mercurial