[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 834dfcad243a402ccb88d7c5147290158115d056
Author: Sebastian Krzyszkowiak <seba.dos1 at gmail.com>
Date:   Sun Jul 12 02:31:11 2009 +0200

    opimd: Calls: implement NewMissedCalls signal and make Update a bit faster

diff --git a/framework/subsystems/opimd/pimd_calls.py b/framework/subsystems/opimd/pimd_calls.py
index d6ce741..bada21f 100644
--- a/framework/subsystems/opimd/pimd_calls.py
+++ b/framework/subsystems/opimd/pimd_calls.py
@@ -698,6 +698,7 @@ class CallDomain(Domain):
 
     _backends = None
     _calls = None
+    _new_missed_calls = None
     query_manager = None
 
     def __init__(self):
@@ -705,6 +706,7 @@ class CallDomain(Domain):
 
         self._backends = {}
         self._calls = []
+        self._new_missed_calls = 0
         self.query_manager = QueryManager(self._calls)
 
         # Initialize the D-Bus-Interface
@@ -766,12 +768,19 @@ class CallDomain(Domain):
 
             self.NewCall(path)
 
+            if call_data.has_key('New') and call_data.has_key('Answered') and call_data.has_key('Direction'):
+                if call_data['New'] and not call_data['Answered'] and call_data['Direction'] == 'in':
+                    self._new_missed_calls += 1
+                    self.NewMissedCalls(self._new_missed_calls)
+
         return call_id
 
     def register_missed_call(self, backend, call_data, stored_on_input_backend = False):
         logger.debug("Registering missed call...")
         if stored_on_input_backend:
             message_id = self.register_call(backend, message_data)
+            self._new_missed_calls += 1
+            self.NewMissedCalls(self._new_missed_calls)
         else:
             # FIXME: now it's just copied from Add method.
             # Make some checking, fallbacking etc.
@@ -810,6 +819,9 @@ class CallDomain(Domain):
                 if call.incorporates_data_from(backend.name):
                     yield call.export_fields(backend.name)
 
+    @dbus_signal(_DIN_CALLS, "i")
+    def NewMissedCalls(self, amount):
+        pass
 
     @dbus_signal(_DIN_CALLS, "s")
     def NewCall(self, path):
@@ -939,6 +951,11 @@ class CallDomain(Domain):
 
         backends = self._calls[num_id]._used_backends
 
+        call = self._calls[num_id].get_fields(self._calls[num_id]._field_idx)
+        if call['New'] and not call['Answered'] and call['Direction'] == 'in':
+            self._new_missed_calls -= 1
+            self.NewMissedCalls(self._new_missed_calls)
+
         for backend_name in backends:
             backend = self._backends[backend_name]
             if not PIMB_CAN_DEL_ENTRY in backend.properties:
@@ -982,16 +999,17 @@ class CallDomain(Domain):
         if num_id >= len(self._calls) or self._calls[num_id]==None:
             raise InvalidCallID()
 
-        call = self._calls[num_id]
+        callif = self._calls[num_id]
+        call = callif.get_fields(callif._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 call._used_backends:
+        if default_backend.name in callif._used_backends:
             backend = default_backend.name
         else:
-            for backend_name in call._used_backends:
+            for backend_name in callif._used_backends:
                 if PIMB_CAN_UPD_ENTRY_WITH_NEW_FIELD in self._backends[backend_name].properties:
                     backend = self._backends[backend_name]
                     break
@@ -1000,23 +1018,32 @@ class CallDomain(Domain):
         # For instance: we have SIM call with Name and Phone. We want to add "Birthday" field.
         # opimd should then try to add "Birthday" field to default backend and then merge calls.
 
+        if call.has_key('New') and data.has_key('New') and call.has_key('Answered') and call.has_key('Direction'):
+            if not call['Answered'] and call['Direction'] == 'in':
+                if call['New'] and not data['New']:
+                    self._new_missed_calls -= 1
+                    self.NewMissedCalls(self._new_missed_calls)
+                elif not call['New'] and data['New']:
+                    self._new_missed_calls += 1
+                    self.NewMissedCalls(self._new_missed_calls)
+
         for field_name in data:
-            if not field_name in call._field_idx:
+            if not field_name in callif._field_idx:
                 if backend!='':
-                    call.import_fields({field_name:data[field_name]}, backend)
+                    callif.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 call._field_idx[field_name]:
+                for field_nr in callif._field_idx[field_name]:
                     if call[field_name]!=data[field_name]:
-                        call._fields[field_nr][1]=data[field_name]
+                        callif._fields[field_nr][1]=data[field_name]
 
-        for backend_name in call._used_backends:
+        for backend_name in callif._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_call(call.export_fields(backend_name))
+                backend.upd_call(callif.export_fields(backend_name))
             except AttributeError:
                 raise InvalidBackend( "Backend does not feature upd_call" )
 

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list