Adding an option to disable GV contacts
authorEd Page <eopage@byu.net>
Thu, 28 Jan 2010 02:52:16 +0000 (20:52 -0600)
committerEd Page <eopage@byu.net>
Thu, 28 Jan 2010 02:52:16 +0000 (20:52 -0600)
src/channel/contact_list.py
src/connection.py
src/tp/conn.py
support/theonering.manager

index 8e60ee2..8409991 100644 (file)
@@ -29,20 +29,23 @@ class AllContactsListChannel(
                self.__listHandle = listHandle
                self.__members = set()
 
-               self._callback = coroutines.func_sink(
-                       coroutines.expand_positional(
-                               self._on_contacts_refreshed
+               if self._conn.options.useGVContacts:
+                       self._callback = coroutines.func_sink(
+                               coroutines.expand_positional(
+                                       self._on_contacts_refreshed
+                               )
+                       )
+                       self.__session.addressbook.updateSignalHandler.register_sink(
+                               self._callback
                        )
-               )
-               self.__session.addressbook.updateSignalHandler.register_sink(
-                       self._callback
-               )
 
-               self.GroupFlagsChanged(0, 0)
+                       addressbook = connection.session.addressbook
+                       contacts = addressbook.get_numbers()
+                       self._process_refresh(addressbook, set(contacts), set(), set())
+               else:
+                       self._callback = None
 
-               addressbook = connection.session.addressbook
-               contacts = addressbook.get_numbers()
-               self._process_refresh(addressbook, set(contacts), set(), set())
+               self.GroupFlagsChanged(0, 0)
 
 
        @gtk_toolbox.log_exception(_moduleLogger)
@@ -51,10 +54,11 @@ class AllContactsListChannel(
 
        def close(self):
                _moduleLogger.debug("Closing contact list")
-               self.__session.addressbook.updateSignalHandler.unregister_sink(
-                       self._callback
-               )
-               self._callback = None
+               if self._callback is not None:
+                       self.__session.addressbook.updateSignalHandler.unregister_sink(
+                               self._callback
+                       )
+                       self._callback = None
 
                tp.ChannelTypeContactList.Close(self)
                self.remove_from_connection()
index c58aa28..426515b 100644 (file)
@@ -32,6 +32,16 @@ import channel_manager
 _moduleLogger = logging.getLogger("connection")
 
 
+class TheOneRingOptions(object):
+
+       useGVContacts = True
+
+       def __init__(self, parameters = None):
+               if parameters is None:
+                       return
+               self.useGVContacts = parameters["use-gv-contacts"]
+
+
 class TheOneRingConnection(
        tp.Connection,
        requests.RequestsMixin,
@@ -50,9 +60,11 @@ class TheOneRingConnection(
        # overiding base class variable
        _optional_parameters = {
                'forward' : 's',
+               'use-gv-contacts' : 'b',
        }
        _parameter_defaults = {
                'forward' : '',
+               'use-gv-contacts' : TheOneRingOptions.useGVContacts,
        }
        _secret_parameters = set((
                "password",
@@ -70,6 +82,7 @@ class TheOneRingConnection(
 
                # Connection init must come first
                self.__session = gvoice.session.Session(None)
+               self.__options = TheOneRingOptions(parameters)
                tp.Connection.__init__(
                        self,
                        constants._telepathy_protocol_name_,
@@ -116,6 +129,10 @@ class TheOneRingConnection(
                return self.__session
 
        @property
+       def options(self):
+               return self.__options
+
+       @property
        def username(self):
                return self.__credentials[0]
 
@@ -126,11 +143,11 @@ class TheOneRingConnection(
        def get_handle_by_name(self, handleType, handleName):
                requestedHandleName = handleName.encode('utf-8')
                if handleType == telepathy.HANDLE_TYPE_CONTACT:
-                       _moduleLogger.info("get_handle_by_name Contact: %s" % requestedHandleName)
+                       _moduleLogger.debug("get_handle_by_name Contact: %s" % requestedHandleName)
                        h = handle.create_handle(self, 'contact', requestedHandleName)
                elif handleType == telepathy.HANDLE_TYPE_LIST:
                        # Support only server side (immutable) lists
-                       _moduleLogger.info("get_handle_by_name List: %s" % requestedHandleName)
+                       _moduleLogger.debug("get_handle_by_name List: %s" % requestedHandleName)
                        h = handle.create_handle(self, 'list', requestedHandleName)
                else:
                        raise telepathy.errors.NotAvailable('Handle type unsupported %d' % handleType)
index 3820ee9..57ddbbd 100644 (file)
@@ -129,7 +129,7 @@ class Connection(_Connection, DBusProperties):
                 if not isinstance(value, (int, long)):
                     raise InvalidArgument('incorrect type to %s parameter, got %s, expected an int' % (parm, type(value)))
             elif sig == 'b':
-                if not isinstance(value, bool):
+                if not isinstance(value, (bool, dbus.types.Boolean)):
                     raise InvalidArgument('incorrect type to %s parameter, got %s, expected an boolean' % (parm, type(value)))
             else:
                 raise TypeError('unknown type signature %s in protocol parameters' % type)
index 33af764..39d1682 100644 (file)
@@ -7,4 +7,6 @@ ObjectPath = /org/freedesktop/Telepathy/ConnectionManager/theonering
 param-account = s required
 param-password = s required secret
 param-forward = s
+param-use-gv-contacts = b
 default-forward =
+default-use-gv-contacts = true