--- a/hangouts.proto Sat Apr 16 10:44:04 2016 +1200
+++ b/hangouts.proto Sat Apr 16 18:20:26 2016 +1200
@@ -319,13 +319,19 @@
HANGOUT_EVENT_TYPE_ONGOING = 6;
+enum HangoutEventMediaType { + HANGOUT_EVENT_MEDIA_TYPE_UNKNOWN = 0; + HANGOUT_EVENT_MEDIA_TYPE_VIDEO = 1; + HANGOUT_EVENT_MEDIA_TYPE_AUDIO = 2; optional HangoutEventType event_type = 1;
repeated ParticipantId participant_id = 2;
+ optional uint64 duration = 3; + optional HangoutEventMediaType media_type = 7;
--- a/hangouts_events.c Sat Apr 16 10:44:04 2016 +1200
+++ b/hangouts_events.c Sat Apr 16 18:20:26 2016 +1200
@@ -23,6 +23,7 @@
+#include "mediamanager.h" #include "hangouts_conversation.h"
#include "hangouts.pb-c.h"
@@ -617,6 +618,47 @@
+ if (event->hangout_event != NULL) { + //event->event_type == EVENT_TYPE__EVENT_TYPE_HANGOUT || EVENT_TYPE__EVENT_TYPE_PHONE_CALL + //Something to do with calling + HangoutEvent *hangout_event = event->hangout_event; + time_t message_timestamp = time(NULL) - ((current_server_time - timestamp) / 1000000); + switch (hangout_event->event_type) { + case HANGOUT_EVENT_TYPE__HANGOUT_EVENT_TYPE_START: + msg = _("Call started"); + case HANGOUT_EVENT_TYPE__HANGOUT_EVENT_TYPE_ONGOING: + msg = _("Call ongoing"); + case HANGOUT_EVENT_TYPE__HANGOUT_EVENT_TYPE_END: + if (g_hash_table_contains(ha->group_chats, conv_id)) { + purple_serv_got_chat_in(ha->pc, g_str_hash(conv_id), gaia_id, PURPLE_MESSAGE_SYSTEM, msg, message_timestamp); + gaia_id = g_hash_table_lookup(ha->one_to_ones, conv_id); + purple_serv_got_im(ha->pc, gaia_id, msg, PURPLE_MESSAGE_SYSTEM, message_timestamp); + if (hangout_event->event_type == HANGOUT_EVENT_TYPE__HANGOUT_EVENT_TYPE_START) { + if (!purple_media_manager_get()) { + //No voice/video support, display URL + gchar *join_message = g_strdup_printf("%s https://plus.google.com/hangouts/_/CONVERSATION/%s", _("To join the call, open "), conv_id); + if (g_hash_table_contains(ha->group_chats, conv_id)) { + purple_serv_got_chat_in(ha->pc, g_str_hash(conv_id), gaia_id, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, join_message, message_timestamp); + purple_serv_got_im(ha->pc, gaia_id, join_message, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, message_timestamp); if (timestamp && conv_id) {
PurpleConversation *conv = NULL;
if (g_hash_table_contains(ha->one_to_ones, conv_id)) {