[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, debian, updated. upstream/0.9.5.5-717-g0f98819

Sebastian Krzyszkowiak seba.dos1 at gmail.com
Sat Aug 6 08:17:24 UTC 2011


The following commit has been merged in the debian branch:
commit fbc6fb6273a4d3fdd1f862ced084ed06c2fdc5df
Author: Sebastian Krzyszkowiak <seba.dos1 at gmail.com>
Date:   Sun Jul 12 11:50:22 2009 +0200

    opimd: Messages: implement UnreadMessages signal

diff --git a/framework/subsystems/opimd/pimd_messages.py b/framework/subsystems/opimd/pimd_messages.py
index e5cee63..f4ce2c3 100644
--- a/framework/subsystems/opimd/pimd_messages.py
+++ b/framework/subsystems/opimd/pimd_messages.py
@@ -1,4 +1,5 @@
 #!/usr/bin/env python
+# -*- coding: utf-8 -*-
 """
 Open PIM Daemon
 
@@ -793,6 +794,7 @@ class MessageDomain(Domain):
     _backends = None
     _messages = None
     _folders = None
+    _unread_messages = None
     query_manager = None
 
     def __init__(self):
@@ -801,6 +803,7 @@ class MessageDomain(Domain):
         self._backends = {}
         self._messages = []
         self._folders = []
+        self._unread_messages = 0
         self.query_manager = QueryManager(self._messages)
 
         # Initialize the D-Bus-Interface
@@ -901,6 +904,11 @@ class MessageDomain(Domain):
             # Notify clients that a new message arrived
             self.NewMessage(uri)
 
+            if message_data.has_key('MessageRead') and message_data.has_key('Direction'):
+                if not message_data['MessageRead'] and message_data['Direction'] == 'in':
+                    self._unread_messages += 1
+                    self.UnreadMessages(self._unread_messages)
+
         return message_id
 
 
@@ -908,6 +916,8 @@ class MessageDomain(Domain):
         logger.debug("Registering incoming message...")
         if stored_on_input_backend:
             message_id = self.register_message(backend, message_data)
+            self._unread_messages += 1
+            self.UnreadMessages(self._unread_messages)
         else:
             # FIXME: now it's just copied from Add method.
             # Make some checking, fallbacking etc.
@@ -1034,6 +1044,9 @@ class MessageDomain(Domain):
         folder_id = self.get_folder_id_from_name(folder_name)
         return _DBUS_PATH_FOLDERS + '/' + str(folder_id)
 
+    @dbus_signal(_DIN_MESSAGES, "i")
+    def UnreadMessages(self, amount):
+        pass
 
     @dbus_signal(_DIN_MESSAGES, "s")
     def NewMessage(self, message_URI):
@@ -1110,16 +1123,17 @@ class MessageDomain(Domain):
         if num_id >= len(self._messages) or self._messages[num_id]==None:
             raise InvalidMessageID()
 
-        message = self._messages[num_id]
+        messageif = self._messages[num_id]
+        message = messageif.get_fields(messageif._field_idx)
 
         default_backend = BackendManager.get_default_backend(_DOMAIN_NAME)
 
         # Search for backend in which we can store new fields
         backend = ''
-        if default_backend.name in message._used_backends:
+        if default_backend.name in messageif._used_backends:
             backend = default_backend.name
         else:
-            for backend_name in message._used_backends:
+            for backend_name in messageif._used_backends:
                 if PIMB_CAN_UPD_ENTRY_WITH_NEW_FIELD in self._backends[backend_name].properties:
                     backend = self._backends[backend_name]
                     break
@@ -1128,23 +1142,32 @@ class MessageDomain(Domain):
         # For instance: we have SIM message. We want to add "Folder" field.
         # opimd should then try to add "Folder" field to default backend and then merge messages.
 
+        if message.has_key('MessageRead') and data.has_key('MessageRead') and message.has_key('Direction'):
+            if message['Direction'] == 'in':
+                if not message['MessageRead'] and data['MessageRead']:
+                    self._unread_messages -= 1
+                    self.UnreadMessages(self._unread_messages)
+                elif message['MessageRead'] and not data['MessageRead']:
+                    self._unread_messages += 1
+                    self.UnreadMessages(self._unread_messages)
+
         for field_name in data:
-            if not field_name in message._field_idx:
+            if not field_name in messageif._field_idx:
                 if backend!='':
-                    message.import_fields({field_name:data[field_name]}, backend)
+                    messageif.import_fields({field_name:data[field_name]}, backend)
                 else:
                     raise InvalidBackend( "There is no backend which can store new field" )
             elif not field_name.startswith('_'):
-                for field_nr in message._field_idx[field_name]:
+                for field_nr in messageif._field_idx[field_name]:
                     if message[field_name]!=data[field_name]:
-                        message._fields[field_nr][1]=data[field_name]
+                        messageif._fields[field_nr][1]=data[field_name]
 
-        for backend_name in message._used_backends:
+        for backend_name in messageif._used_backends:
             backend = self._backends[backend_name]
             if not PIMB_CAN_UPD_ENTRY in backend.properties:
                 raise InvalidBackend( "Backend properties not including PIMB_CAN_UPD_ENTRY" )
             try:
-                backend.upd_message(message.export_fields(backend_name))
+                backend.upd_message(messageif.export_fields(backend_name))
             except AttributeError:
                 raise InvalidBackend( "Backend does not feature upd_message" )
 
@@ -1167,6 +1190,11 @@ class MessageDomain(Domain):
 
         backends = self._messages[num_id]._used_backends
 
+        message = self._messages[num_id].get_fields(self._messages[num_id]._field_idx)
+        if not message['MessageRead'] and message['Direction'] == 'in':
+            self._unread_messages -= 1
+            self.UnreadMessages(self._unread_messages)
+
         for backend_name in backends:
             backend = self._backends[backend_name]
             if not PIMB_CAN_DEL_ENTRY in backend.properties:

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list