diff options
-rw-r--r-- | skypeweb/libskypeweb.c | 19 | ||||
-rw-r--r-- | skypeweb/purplecompat.h | 17 | ||||
-rw-r--r-- | skypeweb/skypeweb_contacts.c | 41 | ||||
-rw-r--r-- | skypeweb/skypeweb_contacts.h | 20 | ||||
-rw-r--r-- | skypeweb/skypeweb_messages.c | 6 |
5 files changed, 79 insertions, 24 deletions
diff --git a/skypeweb/libskypeweb.c b/skypeweb/libskypeweb.c index bb43b96..43a3cbc 100644 --- a/skypeweb/libskypeweb.c +++ b/skypeweb/libskypeweb.c @@ -35,9 +35,9 @@ skypeweb_do_all_the_things(SkypeWebAccount *sa) skypeweb_get_self_details(sa);
if (sa->authcheck_timeout)
- purple_timeout_remove(sa->authcheck_timeout);
+ g_source_remove(sa->authcheck_timeout);
skypeweb_check_authrequests(sa);
- sa->authcheck_timeout = purple_timeout_add_seconds(120, (GSourceFunc)skypeweb_check_authrequests, sa);
+ sa->authcheck_timeout = g_timeout_add_seconds(120, (GSourceFunc)skypeweb_check_authrequests, sa);
purple_connection_set_state(sa->pc, PURPLE_CONNECTION_CONNECTED);
skypeweb_get_friend_list(sa);
@@ -382,9 +382,9 @@ skypeweb_close(PurpleConnection *pc) sa = purple_connection_get_protocol_data(pc);
g_return_if_fail(sa != NULL);
- purple_timeout_remove(sa->authcheck_timeout);
- purple_timeout_remove(sa->poll_timeout);
- purple_timeout_remove(sa->watchdog_timeout);
+ g_source_remove(sa->authcheck_timeout);
+ g_source_remove(sa->poll_timeout);
+ g_source_remove(sa->watchdog_timeout);
skypeweb_logout(sa);
@@ -891,17 +891,16 @@ skypeweb_protocol_privacy_iface_init(PurpleProtocolPrivacyIface *prpl_info) }
static void
-skypeweb_protocol_xfer_iface_init(PurpleProtocolXferIface *prpl_info)
+skypeweb_protocol_xfer_iface_init(PurpleProtocolXferInterface *prpl_info)
{
#endif
- //PurpleProtocolXferIface
+ //PurpleProtocolXferInterface
prpl_info->new_xfer = skypeweb_new_xfer;
-#if !PURPLE_VERSION_CHECK(3, 0, 0)
prpl_info->send_file = skypeweb_send_file;
+#if !PURPLE_VERSION_CHECK(3, 0, 0)
prpl_info->can_receive_file = skypeweb_can_receive_file;
#else
- prpl_info->send = skypeweb_send_file;
prpl_info->can_receive = skypeweb_can_receive_file;
#endif
@@ -973,7 +972,7 @@ PURPLE_DEFINE_TYPE_EXTENDED( PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ROOMLIST_IFACE,
skypeweb_protocol_roomlist_iface_init)
- PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER_IFACE,
+ PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER,
skypeweb_protocol_xfer_iface_init)
);
diff --git a/skypeweb/purplecompat.h b/skypeweb/purplecompat.h index d545685..c6afb9b 100644 --- a/skypeweb/purplecompat.h +++ b/skypeweb/purplecompat.h @@ -122,6 +122,18 @@ purple_message_new_outgoing(const gchar *who, const gchar *contents, PurpleMessa return message; } static inline PurpleMessage * +purple_message_new_incoming(const gchar *who, const gchar *contents, PurpleMessageFlags flags, guint64 timestamp) +{ + PurpleMessage *message = g_new0(PurpleMessage, 1); + + message->who = g_strdup(who); + message->what = g_strdup(contents); + message->flags = flags | PURPLE_MESSAGE_RECV; + message->when = timestamp; + + return message; +} +static inline PurpleMessage * purple_message_new_system(const gchar *contents, PurpleMessageFlags flags) { PurpleMessage *message = g_new0(PurpleMessage, 1); @@ -255,6 +267,11 @@ purple_xfer_read_file(PurpleXfer *xfer, guchar *buffer, gsize size) { #define PURPLE_XFER_TYPE_RECEIVE PURPLE_XFER_RECEIVE #define PURPLE_XFER_TYPE_SEND PURPLE_XFER_SEND +// Kinda gross, since we can technically use the glib mainloop from purple2 +#define g_timeout_add_seconds purple_timeout_add_seconds +#define g_timeout_add purple_timeout_add +#define g_source_remove purple_timeout_remove + #endif #endif /*_PURPLECOMPAT_H_*/ diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c index e6623e8..14cfdcb 100644 --- a/skypeweb/skypeweb_contacts.c +++ b/skypeweb/skypeweb_contacts.c @@ -36,7 +36,16 @@ static void purple_conversation_write_system_message_ts( static void purple_conversation_write_img_message(
PurpleConversation *conv, const char* who, const gchar *msg,
PurpleMessageFlags flags, time_t ts) {
- purple_conversation_write(conv, who, msg, flags, ts);
+ PurpleMessage *pmsg;
+
+ if (flags & PURPLE_MESSAGE_SEND) {
+ pmsg = purple_message_new_outgoing(who, msg, flags);
+ purple_message_set_time(pmsg, ts);
+ } else {
+ pmsg = purple_message_new_incoming(who, msg, flags, ts);
+ }
+
+ purple_conversation_write_message(conv, pmsg);
}
// Check that the conversation hasn't been closed
@@ -126,7 +135,7 @@ skypeweb_get_icon(PurpleBuddy *buddy) {
if (!buddy) return;
- purple_timeout_add(100, skypeweb_get_icon_queuepop, (gpointer)buddy);
+ g_timeout_add(100, skypeweb_get_icon_queuepop, (gpointer)buddy);
}
typedef struct SkypeImgMsgContext_ {
@@ -640,7 +649,7 @@ skypeweb_xfer_send_contents_reader(PurpleHttpConnection *con, gchar *buf, size_t PurpleXfer *xfer = swft->xfer; gsize read;
- purple_debug_info("skypeweb", "Asked %" PRI_SIZET " bytes from offset %" PRI_SIZET "\n", len, offset); + purple_debug_info("skypeweb", "Asked %" G_GSIZE_FORMAT " bytes from offset %" G_GSIZE_FORMAT "\n", len, offset);
purple_xfer_set_bytes_sent(xfer, offset); read = purple_xfer_read_file(xfer, (guchar *)buf, len); purple_debug_info("skypeweb", "Read %" G_GSIZE_FORMAT " bytes\n", read);
@@ -657,7 +666,7 @@ skypeweb_xfer_send_done(PurpleHttpConnection *conn, PurpleHttpResponse *resp, gp int code = purple_http_response_get_code(resp); purple_debug_info("skypeweb", "Finished [%d]: %s\n", code, error); purple_debug_info("skypeweb", "Server message: %s\n", data); - purple_timeout_add_seconds(1, poll_file_send_progress, user_data);
+ g_timeout_add_seconds(1, poll_file_send_progress, user_data);
} static void @@ -788,7 +797,11 @@ skypeweb_xfer_send_init(PurpleXfer *xfer) }
PurpleXfer *
-skypeweb_new_xfer(PurpleConnection *pc, const char *who)
+skypeweb_new_xfer(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const char *who)
{
SkypeWebAccount *sa = purple_connection_get_protocol_data(pc);
PurpleXfer *xfer;
@@ -812,9 +825,17 @@ skypeweb_new_xfer(PurpleConnection *pc, const char *who) }
void
-skypeweb_send_file(PurpleConnection *pc, const gchar *who, const gchar *filename)
+skypeweb_send_file(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const gchar *who, const gchar *filename)
{
- PurpleXfer *xfer = skypeweb_new_xfer(pc, who);
+ PurpleXfer *xfer = skypeweb_new_xfer(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+ prplxfer,
+#endif
+ pc, who);
if (filename && *filename)
purple_xfer_request_accepted(xfer, filename);
@@ -823,7 +844,11 @@ skypeweb_send_file(PurpleConnection *pc, const gchar *who, const gchar *filename }
gboolean
-skypeweb_can_receive_file(PurpleConnection *pc, const gchar *who)
+skypeweb_can_receive_file(
+#if PURPLE_VERSION_CHECK(3, 0, 0)
+PurpleProtocolXfer *prplxfer,
+#endif
+PurpleConnection *pc, const gchar *who)
{
if (!who || g_str_equal(who, purple_account_get_username(purple_connection_get_account(pc))))
return FALSE;
diff --git a/skypeweb/skypeweb_contacts.h b/skypeweb/skypeweb_contacts.h index 6d837a1..885f865 100644 --- a/skypeweb/skypeweb_contacts.h +++ b/skypeweb/skypeweb_contacts.h @@ -27,9 +27,23 @@ void skypeweb_download_video_message(SkypeWebAccount *sa, const gchar *sid, Purp void skypeweb_download_moji_to_conv(SkypeWebAccount *sa, const gchar *text, const gchar *url_thumbnail, PurpleConversation *conv, time_t ts, const gchar* from); void skypeweb_present_uri_as_filetransfer(SkypeWebAccount *sa, const gchar *uri, const gchar *from); -PurpleXfer *skypeweb_new_xfer(PurpleConnection *pc, const char *who); -void skypeweb_send_file(PurpleConnection *pc, const gchar *who, const gchar *filename); -gboolean skypeweb_can_receive_file(PurpleConnection *pc, const gchar *who); +PurpleXfer *skypeweb_new_xfer( +#if PURPLE_VERSION_CHECK(3, 0, 0) +PurpleProtocolXfer *prplxfer, +#endif +PurpleConnection *pc, const char *who); + +void skypeweb_send_file( +#if PURPLE_VERSION_CHECK(3, 0, 0) +PurpleProtocolXfer *prplxfer, +#endif +PurpleConnection *pc, const gchar *who, const gchar *filename); + +gboolean skypeweb_can_receive_file( +#if PURPLE_VERSION_CHECK(3, 0, 0) +PurpleProtocolXfer *prplxfer, +#endif +PurpleConnection *pc, const gchar *who); void skypeweb_search_users(PurpleProtocolAction *action); diff --git a/skypeweb/skypeweb_messages.c b/skypeweb/skypeweb_messages.c index aa29c58..233a998 100644 --- a/skypeweb/skypeweb_messages.c +++ b/skypeweb/skypeweb_messages.c @@ -684,8 +684,8 @@ skypeweb_timeout(gpointer userdata) skypeweb_poll(sa);
// If no response within 3 minutes, assume connection lost and try again
- purple_timeout_remove(sa->watchdog_timeout);
- sa->watchdog_timeout = purple_timeout_add_seconds(3 * 60, skypeweb_timeout, sa);
+ g_source_remove(sa->watchdog_timeout);
+ sa->watchdog_timeout = g_timeout_add_seconds(3 * 60, skypeweb_timeout, sa);
return FALSE;
}
@@ -758,7 +758,7 @@ skypeweb_poll_cb(SkypeWebAccount *sa, JsonNode *node, gpointer user_data) }
if (!purple_connection_is_disconnecting(sa->pc)) {
- sa->poll_timeout = purple_timeout_add_seconds(1, skypeweb_timeout, sa);
+ sa->poll_timeout = g_timeout_add_seconds(1, skypeweb_timeout, sa);
}
}
|