[telepathy-butterfly/master] Added management of members for media channels (Accept/Reject...)

Louis-Francis Ratté-Boulianne louis-francis.ratte-boulianne at collabora.co.uk
Thu Sep 10 06:48:10 PDT 2009


---
 butterfly/channel/media.py |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/butterfly/channel/media.py b/butterfly/channel/media.py
index 72296d0..00df280 100644
--- a/butterfly/channel/media.py
+++ b/butterfly/channel/media.py
@@ -55,7 +55,9 @@ class ButterflyMediaChannel(
         self._session_handler = ButterflySessionHandler(self._conn, self, call)
         self.NewSessionHandler(self._session_handler, self._session_handler.type)
 
-        self.GroupFlagsChanged(telepathy.CHANNEL_GROUP_FLAG_CAN_ADD, 0)
+        self.GroupFlagsChanged(telepathy.CHANNEL_GROUP_FLAG_CAN_REMOVE, 0)
+        self.GroupFlagsChanged(telepathy.CHANNEL_GROUP_FLAG_MESSAGE_REMOVE, 0)
+        self.GroupFlagsChanged(telepathy.CHANNEL_GROUP_FLAG_MESSAGE_REJECT, 0)
         self.__add_initial_participants()
 
     def Close(self):
@@ -96,6 +98,33 @@ class ButterflyMediaChannel(
         if not self._session_handler.HasStreams():
             self.Close()
 
+    def GetSelfHandle(self):
+        return self._conn.GetSelfHandle()
+
+    def GetLocalPendingMembersWithInfo(self):
+        info = []
+        for member in self._local_pending:
+            info.append((member, self._handle, 0, ''))
+        return info
+
+    def AddMembers(self, handles, message):
+        print "Add members", handles, message
+        for handle in handles:
+            print handle, self.GetSelfHandle()
+            if handle == int(self.GetSelfHandle()):
+                print "That's me"
+                if self.GetSelfHandle() in self._local_pending:
+                    print "Is local pending"
+                    self._call.accept()
+            else:
+                print "Not me", self.GetSelfHandle()
+
+    def RemoveMembers(self, handles, message):
+        print "Remove members", handles, message
+
+    def RemoveMembersWithReason(self, handles, message, reason):
+        print "Remove members", handles, message, reason
+
     #papyon.event.call.CallEventInterface
     def on_call_incoming(self):
         self._call.accept()
@@ -142,5 +171,16 @@ class ButterflyMediaChannel(
 
     @async
     def __add_initial_participants(self):
-        self.MembersChanged('', [self._handle], [], [], [],
+        added = []
+        local_pending = []
+        remote_pending = []
+
+        if False:
+            remote_pending.append(self._handle)
+            added.append(self._conn.GetSelfHandle())
+        else:
+            local_pending.append(self._conn.GetSelfHandle())
+            added.append(self._handle)
+
+        self.MembersChanged('', added, [], local_pending, remote_pending,
                 0, telepathy.CHANNEL_GROUP_CHANGE_REASON_NONE)
-- 
1.5.6.5




More information about the telepathy-commits mailing list