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
+ }
+ }
+ }
+ }
+ }
}