Implemented status_changed callback.
[python-purple] / conversation_cbs.pxd
index 884211a..f3a6bd7 100644 (file)
@@ -85,15 +85,16 @@ cdef void write_im(conversation.PurpleConversation *conv, const_char *who, \
     else:
         username = None
 
-    if who:
-        sender = <char *> who
-        buddy = blist.purple_find_buddy(acc, <char *> who)
+    if who == NULL:
+        who = conversation.purple_conversation_get_name(conv)
+
+    sender = <char *> who
+    buddy = blist.purple_find_buddy(acc, <char *> who)
+    if buddy:
         c_sender_alias = <char *> blist.purple_buddy_get_alias_only(buddy)
-    else:
-        sender = None
 
     if c_sender_alias:
-        sender_alias = c_sender_alias
+        sender_alias = unicode(c_sender_alias, 'utf-8')
     else:
         sender_alias = None
 
@@ -102,9 +103,15 @@ cdef void write_im(conversation.PurpleConversation *conv, const_char *who, \
     else:
         message = None
 
+    # FIXME: Maybe we need add more purple flags in the future
+    if flags & conversation.PURPLE_MESSAGE_SEND:
+        flag = "SEND"
+    else:
+        flag = "RECV"
+
     if conversation_cbs.has_key("write-im"):
         (<object> conversation_cbs["write-im"])(username, sender, \
-                                                sender_alias, message)
+                               sender_alias, message, flag)
 
 cdef void write_conv(conversation.PurpleConversation *conv, const_char *name, \
         const_char *alias, const_char *message, \