/pidgin/main: 12ce09a23094: Move PurpleChat to it's own file
Gary Kramlich <[email protected]> Thu, 25 Aug 2016 23:54:12 -0400
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 12ce09a23094726089f6be144972cee15f979bcd Author: Gary Kramlich <[email protected]> Date: 2016-08-12 18:53 -0500 Branch: default URL: https://hg.pidgin.im/pidgin/main/rev/12ce09a23094 Description: Move PurpleChat to it's own file diffstat: libpurple/Makefile.am | 2 + libpurple/blistnodetypes.c | 297 --------------------------------------- libpurple/blistnodetypes.h | 119 +--------------- libpurple/buddylist.h | 2 + libpurple/chat.c | 337 +++++++++++++++++++++++++++++++++++++++++++++ libpurple/chat.h | 153 ++++++++++++++++++++ 6 files changed, 495 insertions(+), 415 deletions(-) diffs (truncated from 991 to 300 lines): diff --git a/libpurple/Makefile.am b/libpurple/Makefile.am --- a/libpurple/Makefile.am +++ b/libpurple/Makefile.am @@ -43,6 +43,7 @@ purple_coresources = \ blistnodetypes.c \ buddylist.c \ buddyicon.c \ + chat.c \ ciphers/aescipher.c \ ciphers/descipher.c \ ciphers/des3cipher.c \ @@ -140,6 +141,7 @@ purple_coreheaders = \ blistnodetypes.h \ buddylist.h \ buddyicon.h \ + chat.h \ cipher.h \ circularbuffer.h \ cmds.h \ diff --git a/libpurple/blistnodetypes.c b/libpurple/blistnodetypes.c --- a/libpurple/blistnodetypes.c +++ b/libpurple/blistnodetypes.c @@ -69,31 +69,9 @@ enum BUDDY_PROP_LAST }; -/* Private data for a chat node */ -struct _PurpleChatPrivate { - char *alias; /* The display name of this chat. */ - PurpleAccount *account; /* The account this chat is attached to */ - GHashTable *components; /* the stuff the protocol needs to know to - join the chat */ - - gboolean is_constructed; /* Indicates if the chat has finished being - constructed. */ -}; - -/* Chat property enums */ -enum -{ - CHAT_PROP_0, - CHAT_PROP_ALIAS, - CHAT_PROP_ACCOUNT, - CHAT_PROP_COMPONENTS, - CHAT_PROP_LAST -}; - static PurpleBlistNode *blistnode_parent_class; static GParamSpec *bd_properties[BUDDY_PROP_LAST]; -static GParamSpec *ch_properties[CHAT_PROP_LAST]; static gboolean purple_strings_are_different(const char *one, const char *two) @@ -737,278 +715,3 @@ purple_buddy_new(PurpleAccount *account, "local-alias", alias, NULL); } - -/**************************************************************************/ -/* Chat API */ -/**************************************************************************/ - -const char *purple_chat_get_name(PurpleChat *chat) -{ - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - g_return_val_if_fail(priv != NULL, NULL); - - if ((priv->alias != NULL) && (*priv->alias != '\0')) - return priv->alias; - - return purple_chat_get_name_only(chat); -} - -const char *purple_chat_get_name_only(PurpleChat *chat) -{ - char *ret = NULL; - PurpleProtocol *protocol = NULL; - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - g_return_val_if_fail(priv != NULL, NULL); - - protocol = purple_protocols_find(purple_account_get_protocol_id(priv->account)); - - if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, info)) { - PurpleProtocolChatEntry *pce; - GList *parts = purple_protocol_chat_iface_info(protocol, purple_account_get_connection(priv->account)); - pce = parts->data; - ret = g_hash_table_lookup(priv->components, pce->identifier); - g_list_foreach(parts, (GFunc)g_free, NULL); - g_list_free(parts); - } - - return ret; -} - -void -purple_chat_set_alias(PurpleChat *chat, const char *alias) -{ - PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); - char *old_alias; - char *new_alias = NULL; - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - g_return_if_fail(priv != NULL); - - if ((alias != NULL) && (*alias != '\0')) - new_alias = purple_utf8_strip_unprintables(alias); - - if (!purple_strings_are_different(priv->alias, new_alias)) { - g_free(new_alias); - return; - } - - old_alias = priv->alias; - - if ((new_alias != NULL) && (*new_alias != '\0')) - priv->alias = new_alias; - else { - priv->alias = NULL; - g_free(new_alias); /* could be "\0" */ - } - - g_object_notify_by_pspec(G_OBJECT(chat), ch_properties[CHAT_PROP_ALIAS]); - - if (ops) { - if (ops->save_node) - ops->save_node(PURPLE_BLIST_NODE(chat)); - if (ops->update) - ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(chat)); - } - - purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased", - chat, old_alias); - g_free(old_alias); -} - -PurpleGroup * -purple_chat_get_group(PurpleChat *chat) -{ - g_return_val_if_fail(PURPLE_IS_CHAT(chat), NULL); - - return PURPLE_GROUP(PURPLE_BLIST_NODE(chat)->parent); -} - -PurpleAccount * -purple_chat_get_account(PurpleChat *chat) -{ - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - g_return_val_if_fail(priv != NULL, NULL); - - return priv->account; -} - -GHashTable * -purple_chat_get_components(PurpleChat *chat) -{ - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - g_return_val_if_fail(priv != NULL, NULL); - - return priv->components; -} - -/************************************************************************** - * GObject code for PurpleChat - **************************************************************************/ - -/* Set method for GObject properties */ -static void -purple_chat_set_property(GObject *obj, guint param_id, const GValue *value, - GParamSpec *pspec) -{ - PurpleChat *chat = PURPLE_CHAT(obj); - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - switch (param_id) { - case CHAT_PROP_ALIAS: - if (priv->is_constructed) - purple_chat_set_alias(chat, g_value_get_string(value)); - else - priv->alias = - purple_utf8_strip_unprintables(g_value_get_string(value)); - break; - case CHAT_PROP_ACCOUNT: - priv->account = g_value_get_object(value); - break; - case CHAT_PROP_COMPONENTS: - priv->components = g_value_get_pointer(value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); - break; - } -} - -/* Get method for GObject properties */ -static void -purple_chat_get_property(GObject *obj, guint param_id, GValue *value, - GParamSpec *pspec) -{ - PurpleChat *chat = PURPLE_CHAT(obj); - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - - switch (param_id) { - case CHAT_PROP_ALIAS: - g_value_set_string(value, priv->alias); - break; - case CHAT_PROP_ACCOUNT: - g_value_set_object(value, purple_chat_get_account(chat)); - break; - case CHAT_PROP_COMPONENTS: - g_value_set_pointer(value, purple_chat_get_components(chat)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); - break; - } -} - -/* GObject initialization function */ -static void -purple_chat_init(GTypeInstance *instance, gpointer klass) -{ - PURPLE_DBUS_REGISTER_POINTER(PURPLE_CHAT(instance), PurpleChat); -} - -/* Called when done constructing */ -static void -purple_chat_constructed(GObject *object) -{ - PurpleChat *chat = PURPLE_CHAT(object); - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); - PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); - - G_OBJECT_CLASS(blistnode_parent_class)->constructed(object); - - if (ops != NULL && ops->new_node != NULL) - ops->new_node(PURPLE_BLIST_NODE(chat)); - - priv->is_constructed = TRUE; -} - -/* GObject finalize function */ -static void -purple_chat_finalize(GObject *object) -{ - PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(object); - - g_free(priv->alias); - g_hash_table_destroy(priv->components); - - PURPLE_DBUS_UNREGISTER_POINTER(object); - - G_OBJECT_CLASS(blistnode_parent_class)->finalize(object); -} - -/* Class initializer function */ -static void purple_chat_class_init(PurpleChatClass *klass) -{ - GObjectClass *obj_class = G_OBJECT_CLASS(klass); - - blistnode_parent_class = g_type_class_peek_parent(klass); - - obj_class->finalize = purple_chat_finalize; - - /* Setup properties */ - obj_class->get_property = purple_chat_get_property; - obj_class->set_property = purple_chat_set_property; - obj_class->constructed = purple_chat_constructed; - - g_type_class_add_private(klass, sizeof(PurpleChatPrivate)); - - ch_properties[CHAT_PROP_ALIAS] = g_param_spec_string("alias", "Alias", - "The alias for the chat.", NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); - - ch_properties[CHAT_PROP_ACCOUNT] = g_param_spec_object("account", "Account", - "The account that the chat belongs to.", PURPLE_TYPE_ACCOUNT, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS); - - ch_properties[CHAT_PROP_COMPONENTS] = g_param_spec_pointer("components", - "Components", - "The protocol components of the chat.", - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS); - - g_object_class_install_properties(obj_class, CHAT_PROP_LAST, ch_properties); -} - -GType -purple_chat_get_type(void) -{ - static GType type = 0; - - if(type == 0) { - static const GTypeInfo info = { _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits