diff --git a/frontends/src/bridge/DBus.py b/frontends/src/bridge/DBus.py index 8fca657f..c3d9d546 100644 --- a/frontends/src/bridge/DBus.py +++ b/frontends/src/bridge/DBus.py @@ -557,6 +557,20 @@ class DBusBridgeFrontend(BridgeFrontend): kwargs['error_handler'] = error_handler return self.db_core_iface.profileIsSessionStarted(profile_key, **kwargs) + def profileSetDefault(self, arg_0, callback=None, errback=None): + if callback is None: + error_handler = None + else: + if errback is None: + errback = log.error + error_handler = lambda err:errback(dbus_to_bridge_exception(err)) + kwargs={} + if callback is not None: + kwargs['timeout'] = const_TIMEOUT + kwargs['reply_handler'] = callback + kwargs['error_handler'] = error_handler + return self.db_core_iface.profileSetDefault(arg_0, **kwargs) + def profileStartSession(self, password='', profile_key="@DEFAULT@", callback=None, errback=None): if callback is None: error_handler = None diff --git a/src/bridge/DBus.py b/src/bridge/DBus.py index c5b8097c..4c34ff6a 100755 --- a/src/bridge/DBus.py +++ b/src/bridge/DBus.py @@ -428,6 +428,12 @@ class DbusObject(dbus.service.Object): def profileIsSessionStarted(self, profile_key="@DEFAULT@"): return self._callback("profileIsSessionStarted", unicode(profile_key)) + @dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX, + in_signature='s', out_signature='', + async_callbacks=None) + def profileSetDefault(self, arg_0): + return self._callback("profileSetDefault", unicode(arg_0)) + @dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX, in_signature='ss', out_signature='b', async_callbacks=('callback', 'errback')) diff --git a/src/bridge/bridge_constructor/bridge_template.ini b/src/bridge/bridge_constructor/bridge_template.ini index 4d816b3e..9fd24969 100644 --- a/src/bridge/bridge_constructor/bridge_template.ini +++ b/src/bridge/bridge_constructor/bridge_template.ini @@ -220,7 +220,7 @@ sig_out=s param_0_default="@DEFAULT@" doc=Get real profile name from profile key doc_param_0=%(doc_profile_key)s -doc_return=Real profile name, or empty string if the profile doesn't exist +doc_return=Real profile name [getProfilesList] type=method @@ -229,6 +229,13 @@ sig_in= sig_out=as doc=Get all profiles +[profileSetDefault] +type=method +category=core +sig_in=s +sig_out= +doc=Set default profile + [getEntityData] type=method category=core diff --git a/src/core/sat_main.py b/src/core/sat_main.py index 8c769b50..2ec50479 100644 --- a/src/core/sat_main.py +++ b/src/core/sat_main.py @@ -76,6 +76,7 @@ class SAT(service.Service): self.bridge.register("asyncDeleteProfile", self.memory.asyncDeleteProfile) self.bridge.register("profileStartSession", self.memory._startSession) self.bridge.register("profileIsSessionStarted", self.memory._isSessionStarted) + self.bridge.register("profileSetDefault", self.memory.profileSetDefault) self.bridge.register("asyncConnect", self._asyncConnect) self.bridge.register("disconnect", self.disconnect) self.bridge.register("getContacts", self.getContacts) diff --git a/src/memory/memory.py b/src/memory/memory.py index 442c2f74..560d24c9 100644 --- a/src/memory/memory.py +++ b/src/memory/memory.py @@ -433,6 +433,16 @@ class Memory(object): """ return self.params.getProfileName(profile_key, return_profile_keys) + def profileSetDefault(self, profile): + """Set default profile + + @param profile: %(doc_profile)s + """ + # we want to be sure that the profile exists + profile = self.getProfileName(profile) + + self.memory_data['Profile_default'] = profile + def asyncCreateProfile(self, name, password=''): """Create a new profile @param name: profile name diff --git a/src/memory/params.py b/src/memory/params.py index 52995a95..9d84cedc 100644 --- a/src/memory/params.py +++ b/src/memory/params.py @@ -200,7 +200,7 @@ class Params(object): if profile_key == '@DEFAULT@': default = self.host.memory.memory_data.get('Profile_default') if not default: - log.info(_('No default profile, returning first one')) # TODO: manage real default profile + log.info(_('No default profile, returning first one')) try: default = self.host.memory.memory_data['Profile_default'] = self.storage.getProfilesList()[0] except IndexError: