Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2017-02-25 17:23:37 +0300
committerGitHub <noreply@github.com>2017-02-25 17:23:37 +0300
commitbe6f10f7c56af3aa2fc7bd6c10f91deee0a43b64 (patch)
tree8b3caffcfe778e0864d721f73fa8210e690244c1
parent04026bb418c57b8bd9f7f8923024491525278f2b (diff)
parentded9491eb11fc742d6e89e3c052a4fd23c755f1c (diff)
Merge pull request #526 from Junker/master
add receive contacts (RichText/Contacts) function
-rw-r--r--skypeweb/skypeweb_contacts.c38
-rw-r--r--skypeweb/skypeweb_contacts.h2
-rw-r--r--skypeweb/skypeweb_messages.c18
3 files changed, 58 insertions, 0 deletions
diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c
index 05a11db..5200c6a 100644
--- a/skypeweb/skypeweb_contacts.c
+++ b/skypeweb/skypeweb_contacts.c
@@ -875,6 +875,44 @@ skypeweb_search_results_add_buddy(PurpleConnection *pc, GList *row, void *user_d
}
void
+skypeweb_received_contacts(SkypeWebAccount *sa, PurpleXmlNode *contacts)
+{
+ PurpleNotifySearchResults *results;
+ PurpleNotifySearchColumn *column;
+
+ PurpleXmlNode *contact;
+
+ results = purple_notify_searchresults_new();
+ if (results == NULL) {
+ return;
+ }
+
+ /* columns: Friend ID, Name, Network */
+ column = purple_notify_searchresults_column_new(_("Skype Name"));
+ purple_notify_searchresults_column_add(results, column);
+ column = purple_notify_searchresults_column_new(_("Display Name"));
+ purple_notify_searchresults_column_add(results, column);
+
+
+ purple_notify_searchresults_button_add(results,
+ PURPLE_NOTIFY_BUTTON_ADD,
+ skypeweb_search_results_add_buddy);
+
+ for(contact = purple_xmlnode_get_child(contacts, "c"); contact;
+ contact = purple_xmlnode_get_next_twin(contact))
+ {
+ GList *row = NULL;
+
+ row = g_list_prepend(row, g_strdup(purple_xmlnode_get_attrib(contact, "f")));
+ row = g_list_prepend(row, g_strdup(purple_xmlnode_get_attrib(contact, "s")));
+
+ purple_notify_searchresults_row_add(results, row);
+ }
+
+ purple_notify_searchresults(sa->pc, _("Recived contacts"), NULL, NULL, results, NULL, NULL);
+}
+
+void
skypeweb_search_users_text_cb(SkypeWebAccount *sa, JsonNode *node, gpointer user_data)
{
JsonObject *response = NULL;
diff --git a/skypeweb/skypeweb_contacts.h b/skypeweb/skypeweb_contacts.h
index bba3198..244cdea 100644
--- a/skypeweb/skypeweb_contacts.h
+++ b/skypeweb/skypeweb_contacts.h
@@ -32,6 +32,8 @@ gboolean skypeweb_can_receive_file(PurpleConnection *pc, const gchar *who);
void skypeweb_search_users(PurplePluginAction *action);
+void skypeweb_received_contacts(SkypeWebAccount *sa, PurpleXmlNode *contacts);
+
void skypeweb_get_friend_profiles(SkypeWebAccount *sa, GSList *contacts);
void skypeweb_get_friend_profile(SkypeWebAccount *sa, const gchar *who);
diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c
index 1cfc912..4242052 100644
--- a/skypeweb/skypeweb_messages.c
+++ b/skypeweb/skypeweb_messages.c
@@ -496,6 +496,24 @@ process_message_resource(SkypeWebAccount *sa, JsonObject *resource)
purple_serv_got_im(sa->pc, from, message, PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_SYSTEM, composetimestamp);
}
+ } else if (g_str_equal(messagetype, "RichText/Contacts")) {
+ PurpleXmlNode *contacts = purple_xmlnode_from_str(content, -1);
+ PurpleXmlNode *contact;
+
+ for(contact = purple_xmlnode_get_child(contacts, "c"); contact;
+ contact = purple_xmlnode_get_next_twin(contact))
+ {
+ const gchar *contact_id = purple_xmlnode_get_attrib(contact, "s");
+ const gchar *contact_name = purple_xmlnode_get_attrib(contact, "f");
+
+ gchar *message = g_strdup_printf(_("The user sent a contact: %s"), contact_id);
+
+ purple_serv_got_im(sa->pc, from, message, PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_SYSTEM, composetimestamp);
+
+ g_free(message);
+ }
+
+ skypeweb_received_contacts(sa, contacts);
} else if (g_str_equal(messagetype, "RichText/Files")) {
purple_serv_got_im(sa->pc, convbuddyname, _("The user sent files in an unsupported way"), PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_ERROR, composetimestamp);
} else {