pidgin/pidgin

4dc757d5f295
Parents 31e8c7c92e2f
Children a980db2607fd
Remove PidginAddBuddyDialog as it is no longer used

Testing Done:
Used Turtle Power!

Reviewed at https://reviews.imfreedom.org/r/2919/
--- a/pidgin/meson.build Sun Jan 14 20:08:13 2024 -0600
+++ b/pidgin/meson.build Tue Jan 23 00:02:11 2024 -0600
@@ -23,7 +23,6 @@
'pidginaccountrow.c',
'pidginaccountsdisabledmenu.c',
'pidginaccountsenabledmenu.c',
- 'pidginaddbuddydialog.c',
'pidginapplication.c',
'pidginautoadjustment.c',
'pidginavatar.c',
@@ -81,7 +80,6 @@
'pidginaccountrow.h',
'pidginaccountsdisabledmenu.h',
'pidginaccountsenabledmenu.h',
- 'pidginaddbuddydialog.h',
'pidginapplication.h',
'pidginautoadjustment.h',
'pidginavatar.h',
--- a/pidgin/pidginaddbuddydialog.c Sun Jan 14 20:08:13 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +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 <glib/gi18n.h>
-
-#include "pidginaddbuddydialog.h"
-
-#include "pidginaccountrow.h"
-#include "pidgincore.h"
-
-struct _PidginAddBuddyDialog {
- GtkDialog parent;
-
- GtkCustomFilter *filter;
-
- GtkWidget *account;
- GtkWidget *username;
- GtkWidget *alias;
- GtkWidget *message;
- GtkWidget *group;
-};
-
-G_DEFINE_TYPE(PidginAddBuddyDialog, pidgin_add_buddy_dialog, GTK_TYPE_DIALOG)
-
-/******************************************************************************
- * Helpers
- *****************************************************************************/
-static gboolean
-pidgin_add_buddy_dialog_filter_accounts(gpointer item,
- G_GNUC_UNUSED gpointer data)
-{
- gboolean ret = FALSE;
-
- if(PURPLE_IS_ACCOUNT(item)) {
- PurpleAccount *account = PURPLE_ACCOUNT(item);
- PurpleProtocol *protocol = purple_account_get_protocol(account);
-
- if(PURPLE_IS_PROTOCOL(protocol)) {
- ret = PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER, add_buddy);
- }
- }
-
- return ret;
-}
-
-static void
-pidgin_add_buddy_dialog_validate(PidginAddBuddyDialog *dialog) {
- PurpleAccount *account = NULL;
- gboolean valid = FALSE;
-
- account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(dialog->account));
- if(PURPLE_IS_ACCOUNT(account)) {
- PurpleProtocol *protocol = NULL;
-
- protocol = purple_account_get_protocol(account);
- if(PURPLE_IS_PROTOCOL(protocol)) {
- const gchar *username = gtk_editable_get_text(GTK_EDITABLE(dialog->username));
-
- valid = purple_validate(protocol, username);
- }
- }
-
- gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK,
- valid);
-}
-
-/******************************************************************************
- * Callbacks
- *****************************************************************************/
-static void
-pidgin_add_buddy_dialog_response_cb(GtkDialog *dialog, gint response_id,
- G_GNUC_UNUSED gpointer data)
-{
- PidginAddBuddyDialog *abdialog = PIDGIN_ADD_BUDDY_DIALOG(dialog);
-
- if(response_id == GTK_RESPONSE_OK) {
- PurpleAccount *account = NULL;
- PurpleBuddy *buddy = NULL;
- PurpleGroup *group = NULL;
- const gchar *username = NULL, *alias = NULL, *message = NULL;
- gchar *groupname = NULL;
-
- /* Grab all of the values that the user entered. */
- account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(abdialog->account));
- username = gtk_editable_get_text(GTK_EDITABLE(abdialog->username));
- alias = gtk_editable_get_text(GTK_EDITABLE(abdialog->alias));
- message = gtk_editable_get_text(GTK_EDITABLE(abdialog->message));
- groupname = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(abdialog->group));
-
- /* Make anything that is an empty string NULL. */
- if(alias != NULL && *alias == '\0') {
- alias = NULL;
- }
-
- if(message != NULL && *message == '\0') {
- message = NULL;
- }
-
- if(groupname != NULL && *groupname == '\0') {
- g_clear_pointer(&groupname, g_free);
- }
-
- /* Find the PurpleGroup that the user requested. */
- if(groupname != NULL) {
- group = purple_blist_find_group(groupname);
-
- if(group == NULL) {
- /* Create the group if it's new. */
- group = purple_group_new(groupname);
- purple_blist_add_group(group, NULL);
- } else {
- /* Otherwise see if we already have a buddy in the existing
- * group.
- */
- buddy = purple_blist_find_buddy_in_group(account, username,
- group);
- }
- } else {
- /* If a group name was not provided, look if the buddy exists, and
- * use its group.
- */
- buddy = purple_blist_find_buddy(account, username);
- if(PURPLE_IS_BUDDY(buddy)) {
- group = purple_buddy_get_group(buddy);
- }
- }
-
- /* If we don't a buddy yet, create it now. */
- if(!PURPLE_IS_BUDDY(buddy)) {
- buddy = purple_buddy_new(account, username, alias);
- purple_blist_add_buddy(buddy, NULL, group, NULL);
- }
-
- /* Add the buddy to the account. */
- purple_account_add_buddy(account, buddy, message);
-
-#if 0
- /* This is disabled for now because gtk_blist_auto_personize is static
- * and we're going to be changing the data structure of the contact list
- * in the near future, so this probably completely change.
- */
-
- /* Offer to merge people with the same alias. */
- if(alias != NULL && PURPLE_IS_GROUP(group)) {
- gtk_blist_auto_personize(PURPLE_BLIST_NODE(group), alias);
- }
-#endif
-
- g_free(groupname);
- }
-
- gtk_window_destroy(GTK_WINDOW(abdialog));
-}
-
-static void
-pidgin_add_buddy_dialog_account_changed_cb(GObject *obj,
- G_GNUC_UNUSED GParamSpec *pspec,
- gpointer data)
-{
- PidginAddBuddyDialog *dialog = data;
- PurpleAccount *account = NULL;
- gboolean message_sensitive = TRUE;
-
- account = pidgin_account_row_get_account(PIDGIN_ACCOUNT_ROW(obj));
-
- if(PURPLE_IS_ACCOUNT(account)) {
- PurpleProtocol *protocol = purple_account_get_protocol(account);
-
- if(PURPLE_IS_PROTOCOL(protocol)) {
- PurpleProtocolOptions opts = purple_protocol_get_options(protocol);
-
- message_sensitive = (opts & OPT_PROTO_INVITE_MESSAGE);
- }
- }
-
- gtk_widget_set_sensitive(dialog->message, message_sensitive);
-
- pidgin_add_buddy_dialog_validate(dialog);
-}
-
-static void
-pidgin_add_buddy_dialog_username_changed_cb(G_GNUC_UNUSED GtkEditable *editable,
- gpointer data)
-{
- pidgin_add_buddy_dialog_validate(data);
-}
-
-static void
-pidgin_add_buddy_dialog_group_cb(PurpleBlistNode *node, gpointer data) {
- PidginAddBuddyDialog *dialog = data;
- PurpleGroup *group = PURPLE_GROUP(node);
-
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(dialog->group),
- purple_group_get_name(group));
-}
-
-/******************************************************************************
- * GObject Implementation
- *****************************************************************************/
-static void
-pidgin_add_buddy_dialog_init(PidginAddBuddyDialog *dialog) {
- gtk_widget_init_template(GTK_WIDGET(dialog));
-
- gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
-
- gtk_custom_filter_set_filter_func(dialog->filter,
- pidgin_add_buddy_dialog_filter_accounts,
- NULL, NULL);
-
- purple_blist_walk(pidgin_add_buddy_dialog_group_cb, NULL, NULL, NULL,
- dialog);
-}
-
-static void
-pidgin_add_buddy_dialog_class_init(PidginAddBuddyDialogClass *klass) {
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
-
- gtk_widget_class_set_template_from_resource(
- widget_class,
- "/im/pidgin/Pidgin3/Dialogs/addbuddy.ui"
- );
-
- gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
- filter);
-
- gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
- account);
- gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
- username);
- gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
- alias);
- gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
- message);
- gtk_widget_class_bind_template_child(widget_class, PidginAddBuddyDialog,
- group);
-
- gtk_widget_class_bind_template_callback(widget_class,
- pidgin_add_buddy_dialog_response_cb);
- gtk_widget_class_bind_template_callback(widget_class,
- pidgin_add_buddy_dialog_account_changed_cb);
- gtk_widget_class_bind_template_callback(widget_class,
- pidgin_add_buddy_dialog_username_changed_cb);
-}
-
-/******************************************************************************
- * Public API
- *****************************************************************************/
-GtkWidget *
-pidgin_add_buddy_dialog_new(PurpleAccount *account, const gchar *username,
- const gchar *alias, const gchar *message,
- const gchar *group)
-{
- GtkWidget *dialog = g_object_new(PIDGIN_TYPE_ADD_BUDDY_DIALOG, NULL);
- PidginAddBuddyDialog *abdialog = PIDGIN_ADD_BUDDY_DIALOG(dialog);
-
- if(PURPLE_IS_ACCOUNT(account)) {
- pidgin_account_row_set_account(PIDGIN_ACCOUNT_ROW(abdialog->account),
- account);
- }
-
- if(username != NULL) {
- gtk_editable_set_text(GTK_EDITABLE(abdialog->username), username);
- }
-
- if(alias != NULL) {
- gtk_editable_set_text(GTK_EDITABLE(abdialog->alias), alias);
- }
-
- if(message != NULL) {
- gtk_editable_set_text(GTK_EDITABLE(abdialog->message), message);
- }
-
- if(group != NULL) {
- GtkWidget *entry = NULL;
-
- entry = gtk_combo_box_get_child(GTK_COMBO_BOX(abdialog->group));
- gtk_editable_set_text(GTK_EDITABLE(entry), group);
- }
-
- return dialog;
-}
--- a/pidgin/pidginaddbuddydialog.h Sun Jan 14 20:08:13 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +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_ADD_BUDDY_DIALOG_H
-#define PIDGIN_ADD_BUDDY_DIALOG_H
-
-#include <gtk/gtk.h>
-
-#include <purple.h>
-
-#include "pidginversion.h"
-
-G_BEGIN_DECLS
-
-/**
- * PidginAddBuddyDialog:
- *
- * A dialog for adding buddies to your contact list.
- *
- * Since: 3.0.0
- */
-
-#define PIDGIN_TYPE_ADD_BUDDY_DIALOG (pidgin_add_buddy_dialog_get_type())
-
-PIDGIN_AVAILABLE_IN_3_0
-G_DECLARE_FINAL_TYPE(PidginAddBuddyDialog, pidgin_add_buddy_dialog, PIDGIN,
- ADD_BUDDY_DIALOG, GtkDialog)
-
-/**
- * pidgin_add_buddy_dialog_new:
- * @account: (nullable): The [class@Purple.Account] to pre-select.
- * @username: (nullable): The username to pre-fill.
- * @alias: (nullable): The alias to pre-fill.
- * @message: (nullable): The invite message to pre-fill.
- * @group: (nullable): The group anem to pre-fill.
- *
- * Creates a add buddy dialog with the pre-filled optional values.
- *
- * Returns: (transfer full): The widget.
- *
- * Since: 3.0.0
- */
-PIDGIN_AVAILABLE_IN_3_0
-GtkWidget *pidgin_add_buddy_dialog_new(PurpleAccount *account, const gchar *username, const gchar *alias, const gchar *message, const gchar *group);
-
-G_END_DECLS
-
-#endif /* PIDGIN_ADD_BUDDY_DIALOG_H */
--- a/pidgin/resources/Dialogs/addbuddy.ui Sun Jan 14 20:08:13 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.38.2
-
-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 program; 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="PidginAddBuddyDialog" parent="GtkDialog">
- <property name="title" translatable="1">Add Buddy</property>
- <property name="resizable">0</property>
- <signal name="response" handler="pidgin_add_buddy_dialog_response_cb" swapped="no"/>
- <child internal-child="content_area">
- <object class="GtkBox">
- <property name="margin-bottom">24</property>
- <property name="margin-end">24</property>
- <property name="margin-start">24</property>
- <property name="margin-top">24</property>
- <property name="orientation">vertical</property>
- <property name="spacing">24</property>
- <child>
- <object class="GtkLabel">
- <property name="css-classes">title-1</property>
- <property name="label" translatable="1">Add a buddy</property>
- </object>
- </child>
- <child>
- <object class="AdwPreferencesGroup">
- <property name="title" translatable="1">Buddy information</property>
- <child>
- <object class="PidginAccountRow" id="account">
- <property name="hexpand">1</property>
- <property name="filter">
- <object class="GtkEveryFilter">
- <child>
- <object class="GtkCustomFilter" id="filter"/>
- </child>
- <child>
- <object class="PidginAccountFilterConnected"/>
- </child>
- </object>
- </property>
- <signal name="notify::account" handler="pidgin_add_buddy_dialog_account_changed_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="AdwEntryRow" id="username">
- <property name="title" translatable="1">Buddy&apos;s _username</property>
- <property name="use-underline">1</property>
- <property name="activates-default">1</property>
- <signal name="changed" handler="pidgin_add_buddy_dialog_username_changed_cb" object="PidginAddBuddyDialog" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="AdwEntryRow" id="alias">
- <property name="title" translatable="1">(Optional) A_lias</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- <child>
- <object class="AdwEntryRow" id="message">
- <property name="title" translatable="1">(Optional) _Invite message</property>
- <property name="use-underline">1</property>
- <property name="sensitive">0</property>
- </object>
- </child>
- <child>
- <object class="AdwActionRow">
- <property name="activatable-widget">group</property>
- <property name="focusable">0</property>
- <property name="title" translatable="1">Add buddy to _group</property>
- <property name="use-underline">1</property>
- <child>
- <object class="GtkComboBoxText" id="group">
- <property name="hexpand">1</property>
- <property name="has-entry">1</property>
- <property name="valign">center</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="cancel">button1</action-widget>
- <action-widget response="ok">button2</action-widget>
- </action-widgets>
- <child type="action">
- <object class="GtkButton" id="button1">
- <property name="label" translatable="1">_Cancel</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="button2">
- <property name="css-classes">suggested-action</property>
- <property name="focusable">1</property>
- <property name="label" translatable="1">_Add</property>
- <property name="receives-default">1</property>
- <property name="sensitive">0</property>
- <property name="use-underline">1</property>
- </object>
- </child>
- </template>
-</interface>
--- a/pidgin/resources/pidgin.gresource.xml Sun Jan 14 20:08:13 2024 -0600
+++ b/pidgin/resources/pidgin.gresource.xml Tue Jan 23 00:02:11 2024 -0600
@@ -14,7 +14,6 @@
<file compressed="true" preprocess="xml-stripblanks">Conversations/message.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ContactList/widget.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Debug/debug.ui</file>
- <file compressed="true" preprocess="xml-stripblanks">Dialogs/addbuddy.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Display/window.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Keypad/keypad.ui</file>
<file compressed="true" preprocess="xml-stripblanks">Media/window.ui</file>
--- a/po/POTFILES.in Sun Jan 14 20:08:13 2024 -0600
+++ b/po/POTFILES.in Tue Jan 23 00:02:11 2024 -0600
@@ -251,7 +251,6 @@
pidgin/pidginaccountrow.c
pidgin/pidginaccountsdisabledmenu.c
pidgin/pidginaccountsenabledmenu.c
-pidgin/pidginaddbuddydialog.c
pidgin/pidginapplication.c
pidgin/pidginavatar.c
pidgin/pidgin.c
@@ -294,7 +293,6 @@
pidgin/resources/avatar.ui
pidgin/resources/Conversations/invite_dialog.ui
pidgin/resources/Debug/debug.ui
-pidgin/resources/Dialogs/addbuddy.ui
pidgin/resources/Display/window.ui
pidgin/resources/Keypad/keypad.ui
pidgin/resources/Media/window.ui