From 33f32712604a17421f29f8a7c20443b39c152103 Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Wed, 18 Mar 2015 18:27:02 -0400 Subject: [PATCH] api: getAccountTemplate api change getAccountTemplate get an account type as argument. So it returns now different valid template depending on the account type. Refs #68694 Change-Id: Ifbe785753cf5a7815df77a62ccbe189627f1d8aa --- .../dbus/configurationmanager-introspec.xml | 4 +++- daemon/bin/dbus/dbusconfigurationmanager.cpp | 4 ++-- daemon/bin/dbus/dbusconfigurationmanager.h | 2 +- daemon/src/client/configurationmanager.cpp | 24 ++++++++++++++----- .../dring/configurationmanager_interface.h | 2 +- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/daemon/bin/dbus/configurationmanager-introspec.xml b/daemon/bin/dbus/configurationmanager-introspec.xml index ca19ba2646..819ad3b22a 100644 --- a/daemon/bin/dbus/configurationmanager-introspec.xml +++ b/daemon/bin/dbus/configurationmanager-introspec.xml @@ -8,6 +8,8 @@ <method name="getAccountTemplate" tp:name-for-bindings="getAccountTemplate"> <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="MapStringString"/> + <arg type="s" name="accountType" direction="in" tp:type="String"> + </arg> <arg type="a{ss}" name="details" direction="out" tp:type="String_String_Map"> </arg> </method> @@ -386,7 +388,7 @@ <arg type="b" name="result" direction="out"></arg> <arg type="s" name="accountID" direction="in"></arg> <arg type="u" name="codecId" direction="in"></arg> - <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="MapStringString"/> + <annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="MapStringString"/> <arg type="a{ss}" name="details" direction="in" tp:type="String_String_Map"> </arg> </method> diff --git a/daemon/bin/dbus/dbusconfigurationmanager.cpp b/daemon/bin/dbus/dbusconfigurationmanager.cpp index 0587b7251e..7cb4a9ea62 100644 --- a/daemon/bin/dbus/dbusconfigurationmanager.cpp +++ b/daemon/bin/dbus/dbusconfigurationmanager.cpp @@ -56,9 +56,9 @@ DBusConfigurationManager::setAccountDetails(const std::string& accountID, const } auto -DBusConfigurationManager::getAccountTemplate() -> decltype(DRing::getAccountTemplate()) +DBusConfigurationManager::getAccountTemplate(const std::string& accountType) -> decltype(DRing::getAccountTemplate(accountType)) { - return DRing::getAccountTemplate(); + return DRing::getAccountTemplate(accountType); } auto diff --git a/daemon/bin/dbus/dbusconfigurationmanager.h b/daemon/bin/dbus/dbusconfigurationmanager.h index 7368abb518..a72c094cab 100644 --- a/daemon/bin/dbus/dbusconfigurationmanager.h +++ b/daemon/bin/dbus/dbusconfigurationmanager.h @@ -68,7 +68,7 @@ class DBusConfigurationManager : std::map<std::string, std::string> getAccountDetails(const std::string& accountID); std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID); void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details); - std::map<std::string, std::string> getAccountTemplate(); + std::map<std::string, std::string> getAccountTemplate(const std::string& accountType); std::string addAccount(const std::map<std::string, std::string>& details); void removeAccount(const std::string& accoundID); std::vector<std::string> getAccountList(); diff --git a/daemon/src/client/configurationmanager.cpp b/daemon/src/client/configurationmanager.cpp index 2fa897440d..9ffef7f813 100644 --- a/daemon/src/client/configurationmanager.cpp +++ b/daemon/src/client/configurationmanager.cpp @@ -45,10 +45,15 @@ #include "fileutils.h" #include "ip_utils.h" #include "sip/sipaccount.h" +#include "ringdht/ringaccount.h" +#if HAVE_IAX +#include "iax/iaxaccount.h" +#endif #include "security_const.h" #include "audio/audiolayer.h" #include "system_codec_container.h" #include "client/signal.h" +#include "account_const.h" #include <dirent.h> @@ -62,7 +67,6 @@ constexpr unsigned CODECS_NOT_LOADED = 0x1000; /** Codecs not found */ using ring::SIPAccount; using ring::TlsValidator; -using ring::Account; using ring::DeviceType; using ring::HookPreference; @@ -235,9 +239,17 @@ registerAllAccounts() ///This function is used as a base for new accounts for clients that support it std::map<std::string, std::string> -getAccountTemplate() -{ - return SIPAccount{"dummy", false}.getAccountDetails(); +getAccountTemplate(const std::string& accountType) +{ + if (accountType == Account::ProtocolNames::RING) + return ring::RingAccount("dummy", false).getAccountDetails(); + else if (accountType == Account::ProtocolNames::SIP) + return ring::SIPAccount("dummy", false).getAccountDetails(); +#if HAVE_IAX + else if (accountType == Account::ProtocolNames::IAX) + return ring::IAXAccount("dummy").getAccountDetails(); +#endif + return {{}}; } std::string @@ -331,7 +343,7 @@ getCodecDetails(const std::string& accountID, const unsigned& codecId) { RING_ERR("Could not find account %s return default codec details" , accountID.c_str()); - return Account::getDefaultCodecDetails(codecId); + return ring::Account::getDefaultCodecDetails(codecId); } auto codec = acc->searchCodecById(codecId, ring::MEDIA_ALL); @@ -359,7 +371,7 @@ getActiveCodecList(const std::string& accountID) if (auto acc = ring::Manager::instance().getAccount(accountID)) return acc->getActiveCodecs(); RING_ERR("Could not find account %s, returning default", accountID.c_str()); - return Account::getDefaultCodecsId(); + return ring::Account::getDefaultCodecsId(); } void diff --git a/daemon/src/dring/configurationmanager_interface.h b/daemon/src/dring/configurationmanager_interface.h index 9bdf42a2e4..71f10fd8f6 100644 --- a/daemon/src/dring/configurationmanager_interface.h +++ b/daemon/src/dring/configurationmanager_interface.h @@ -50,7 +50,7 @@ void registerConfHandlers(const std::map<std::string, std::shared_ptr<CallbackWr std::map<std::string, std::string> getAccountDetails(const std::string& accountID); std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID); void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details); -std::map<std::string, std::string> getAccountTemplate(); +std::map<std::string, std::string> getAccountTemplate(const std::string& accountType); std::string addAccount(const std::map<std::string, std::string>& details); void removeAccount(const std::string& accoundID); std::vector<std::string> getAccountList(); -- GitLab