diff options
author | Eion Robb <eion@robbmob.com> | 2017-02-25 17:23:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-25 17:23:37 +0300 |
commit | be6f10f7c56af3aa2fc7bd6c10f91deee0a43b64 (patch) | |
tree | 8b3caffcfe778e0864d721f73fa8210e690244c1 | |
parent | 04026bb418c57b8bd9f7f8923024491525278f2b (diff) | |
parent | ded9491eb11fc742d6e89e3c052a4fd23c755f1c (diff) |
Merge pull request #526 from Junker/master
add receive contacts (RichText/Contacts) function
-rw-r--r-- | skypeweb/skypeweb_contacts.c | 38 | ||||
-rw-r--r-- | skypeweb/skypeweb_contacts.h | 2 | ||||
-rw-r--r-- | skypeweb/skypeweb_messages.c | 18 |
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 {
|