diff --git a/linphone-desktop/assets/languages/en.ts b/linphone-desktop/assets/languages/en.ts index cdcf229ac..affb6addf 100644 --- a/linphone-desktop/assets/languages/en.ts +++ b/linphone-desktop/assets/languages/en.ts @@ -791,6 +791,25 @@ Server url not configured. Enable adaptive rate control + + SettingsSipAccounts + + defaultIdentityTitle + Default identity + + + defaultDisplaynameLabel + Display name + + + defaultUsernameLabel + Username + + + defaultSipAddressLabel + SIP address + + SettingsUi diff --git a/linphone-desktop/assets/languages/fr.ts b/linphone-desktop/assets/languages/fr.ts index ee13ee994..37450faa8 100644 --- a/linphone-desktop/assets/languages/fr.ts +++ b/linphone-desktop/assets/languages/fr.ts @@ -791,6 +791,25 @@ Url du serveur non configurée. Activer le contrôle de débit adaptif + + SettingsSipAccounts + + defaultIdentityTitle + Identité par défaut + + + defaultDisplaynameLabel + Nom d'affichage + + + defaultUsernameLabel + Nom d'utilisateur + + + defaultSipAddressLabel + Adresse SIP + + SettingsUi diff --git a/linphone-desktop/src/components/settings/AccountSettingsModel.cpp b/linphone-desktop/src/components/settings/AccountSettingsModel.cpp index 84ab3375a..dff1a6630 100644 --- a/linphone-desktop/src/components/settings/AccountSettingsModel.cpp +++ b/linphone-desktop/src/components/settings/AccountSettingsModel.cpp @@ -31,13 +31,13 @@ void AccountSettingsModel::setDefaultProxyConfig (const shared_ptr &proxy_config) { CoreManager::getInstance()->getCore()->setDefaultProxyConfig(proxy_config); - emit accountUpdated(); + emit accountSettingsUpdated(); } // ----------------------------------------------------------------------------- QString AccountSettingsModel::getUsername () const { - shared_ptr address = getDefaultSipAddress(); + shared_ptr address = getUsedSipAddress(); const string &display_name = address->getDisplayName(); return ::Utils::linphoneStringToQString( @@ -46,21 +46,63 @@ QString AccountSettingsModel::getUsername () const { } void AccountSettingsModel::setUsername (const QString &username) { - shared_ptr address = getDefaultSipAddress(); + shared_ptr address = getUsedSipAddress(); if (address->setDisplayName(::Utils::qStringToLinphoneString(username))) qWarning() << QStringLiteral("Unable to set displayName on sip address: `%1`.") .arg(::Utils::linphoneStringToQString(address->asStringUriOnly())); - emit accountUpdated(); + emit accountSettingsUpdated(); +} + +QString AccountSettingsModel::getSipAddress () const { + return ::Utils::linphoneStringToQString(getUsedSipAddress()->asStringUriOnly()); } // ----------------------------------------------------------------------------- -QString AccountSettingsModel::getSipAddress () const { - return ::Utils::linphoneStringToQString(getDefaultSipAddress()->asStringUriOnly()); +QString AccountSettingsModel::getPrimaryUsername () const { + return ::Utils::linphoneStringToQString( + CoreManager::getInstance()->getCore()->getPrimaryContactParsed()->getUsername() + ); } +void AccountSettingsModel::setPrimaryUsername (const QString &username) { + shared_ptr core = CoreManager::getInstance()->getCore(); + shared_ptr primary = core->getPrimaryContactParsed(); + + primary->setUsername( + username.isEmpty() ? "linphone" : ::Utils::qStringToLinphoneString(username) + ); + core->setPrimaryContact(primary->asString()); + + emit accountSettingsUpdated(); +} + +QString AccountSettingsModel::getPrimaryDisplayname () const { + return ::Utils::linphoneStringToQString( + CoreManager::getInstance()->getCore()->getPrimaryContactParsed()->getDisplayName() + ); +} + +void AccountSettingsModel::setPrimaryDisplayname (const QString &displayname) { + shared_ptr core = CoreManager::getInstance()->getCore(); + shared_ptr primary = core->getPrimaryContactParsed(); + + primary->setDisplayName(::Utils::qStringToLinphoneString(displayname)); + core->setPrimaryContact(primary->asString()); + + emit accountSettingsUpdated(); +} + +QString AccountSettingsModel::getPrimarySipAddress () const { + return ::Utils::linphoneStringToQString( + CoreManager::getInstance()->getCore()->getPrimaryContactParsed()->asString() + ); +} + +// ----------------------------------------------------------------------------- + QVariantList AccountSettingsModel::getAccounts () const { shared_ptr core = CoreManager::getInstance()->getCore(); QVariantList accounts; @@ -84,7 +126,7 @@ QVariantList AccountSettingsModel::getAccounts () const { // ----------------------------------------------------------------------------- -shared_ptr AccountSettingsModel::getDefaultSipAddress () const { +shared_ptr AccountSettingsModel::getUsedSipAddress () const { shared_ptr core = CoreManager::getInstance()->getCore(); shared_ptr proxy_config = core->getDefaultProxyConfig(); diff --git a/linphone-desktop/src/components/settings/AccountSettingsModel.hpp b/linphone-desktop/src/components/settings/AccountSettingsModel.hpp index 35141a114..d41130a9c 100644 --- a/linphone-desktop/src/components/settings/AccountSettingsModel.hpp +++ b/linphone-desktop/src/components/settings/AccountSettingsModel.hpp @@ -31,9 +31,14 @@ class AccountSettingsModel : public QObject { Q_OBJECT; - Q_PROPERTY(QString username READ getUsername WRITE setUsername NOTIFY accountUpdated); - Q_PROPERTY(QString sipAddress READ getSipAddress NOTIFY accountUpdated); - Q_PROPERTY(QVariantList accounts READ getAccounts NOTIFY accountUpdated); + Q_PROPERTY(QString username READ getUsername WRITE setUsername NOTIFY accountSettingsUpdated); + Q_PROPERTY(QString sipAddress READ getSipAddress NOTIFY accountSettingsUpdated); + + Q_PROPERTY(QString primaryDisplayname READ getPrimaryDisplayname WRITE setPrimaryDisplayname NOTIFY accountSettingsUpdated); + Q_PROPERTY(QString primaryUsername READ getPrimaryUsername WRITE setPrimaryUsername NOTIFY accountSettingsUpdated); + Q_PROPERTY(QString primarySipAddress READ getPrimarySipAddress NOTIFY accountSettingsUpdated); + + Q_PROPERTY(QVariantList accounts READ getAccounts NOTIFY accountSettingsUpdated); public: AccountSettingsModel (QObject *parent = Q_NULLPTR) : QObject(parent) {} @@ -41,16 +46,25 @@ public: Q_INVOKABLE void setDefaultProxyConfig (const std::shared_ptr &proxy_config); signals: - void accountUpdated (); + void accountSettingsUpdated (); private: QString getUsername () const; void setUsername (const QString &username); QString getSipAddress () const; + + QString getPrimaryUsername () const; + void setPrimaryUsername (const QString &username); + + QString getPrimaryDisplayname () const; + void setPrimaryDisplayname (const QString &displayname); + + QString getPrimarySipAddress () const; + QVariantList getAccounts () const; - std::shared_ptr getDefaultSipAddress () const; + std::shared_ptr getUsedSipAddress () const; }; Q_DECLARE_METATYPE(std::shared_ptr ); diff --git a/linphone-desktop/ui/views/App/Settings/SettingsSipAccounts.qml b/linphone-desktop/ui/views/App/Settings/SettingsSipAccounts.qml index f5c0de773..bf9669591 100644 --- a/linphone-desktop/ui/views/App/Settings/SettingsSipAccounts.qml +++ b/linphone-desktop/ui/views/App/Settings/SettingsSipAccounts.qml @@ -1,9 +1,59 @@ import QtQuick 2.7 import Common 1.0 +import Linphone 1.0 + +import App.Styles 1.0 // ============================================================================= TabContainer { + Column { + spacing: SettingsWindowStyle.forms.spacing + width: parent.width + // ------------------------------------------------------------------------- + // Default identity. + // ------------------------------------------------------------------------- + + Form { + title: qsTr('defaultIdentityTitle') + width: parent.width + + FormLine { + FormGroup { + label: qsTr('defaultDisplaynameLabel') + + TextField { + text: AccountSettingsModel.primaryDisplayname + + onEditingFinished: AccountSettingsModel.primaryDisplayname = text + } + } + } + + FormLine { + FormGroup { + label: qsTr('defaultUsernameLabel') + + TextField { + text: AccountSettingsModel.primaryUsername + + onEditingFinished: AccountSettingsModel.primaryUsername = text + } + } + } + + FormLine { + FormGroup { + label: qsTr('defaultSipAddressLabel') + + TextField { + readOnly: true + text: AccountSettingsModel.primarySipAddress + } + } + } + } + } }