diff --git a/Linphone/core/login/LoginPage.cpp b/Linphone/core/login/LoginPage.cpp index 74f8bec38..3c3860414 100644 --- a/Linphone/core/login/LoginPage.cpp +++ b/Linphone/core/login/LoginPage.cpp @@ -64,22 +64,26 @@ void LoginPage::login(const QString &username, const QString &password, QString displayName, QString domain, - LinphoneEnums::TransportType transportType) { + LinphoneEnums::TransportType transportType, + QString serverAddress, + QString connectionId) { setErrorMessage(""); App::postModelAsync([=]() { // Create on Model thread. AccountManager *accountManager = new AccountManager(); connect(accountManager, &AccountManager::registrationStateChanged, this, - [accountManager, this](linphone::RegistrationState state, QString message) mutable { + [accountManager, this](linphone::RegistrationState state, linphone::Reason reason, + QString message) mutable { // View thread setRegistrationState(state); + mBadIds = reason == linphone::Reason::Forbidden; + emit reasonChanged(); switch (state) { case linphone::RegistrationState::Failed: { - if (message.isEmpty()) - //: Erreur durant la connexion - setErrorMessage(tr("default_account_connection_state_error_toast")); - else - setErrorMessage(message); + if (message.isEmpty()) + //: Erreur durant la connexion, veuillez vérifier vos paramètres + setErrorMessage(tr("default_account_connection_state_error_toast")); + else setErrorMessage(message); if (accountManager) { accountManager->deleteLater(); accountManager = nullptr; @@ -110,9 +114,9 @@ void LoginPage::login(const QString &username, QString error; if (!accountManager->login(username, password, displayName, domain, LinphoneEnums::toLinphone(transportType), - &error)) { + &error, serverAddress, connectionId)) { setErrorMessage(error); - emit accountManager->registrationStateChanged(linphone::RegistrationState::None); + emit accountManager->registrationStateChanged(linphone::RegistrationState::None, linphone::Reason::None); } }); } diff --git a/Linphone/core/login/LoginPage.hpp b/Linphone/core/login/LoginPage.hpp index 7a3bf356a..4dc9f9468 100644 --- a/Linphone/core/login/LoginPage.hpp +++ b/Linphone/core/login/LoginPage.hpp @@ -35,12 +35,15 @@ public: Q_PROPERTY(linphone::RegistrationState registrationState READ getRegistrationState NOTIFY registrationStateChanged) Q_PROPERTY(QString errorMessage READ getErrorMessage NOTIFY errorMessageChanged) + Q_PROPERTY(bool badIds MEMBER mBadIds NOTIFY reasonChanged) Q_INVOKABLE void login(const QString &username, const QString &password, QString displayName = QString(), QString domain = QString(), - LinphoneEnums::TransportType transportType = LinphoneEnums::TransportType::Tls); + LinphoneEnums::TransportType transportType = LinphoneEnums::TransportType::Tls, + QString serverAddress = QString(), + QString connectionId = QString()); linphone::RegistrationState getRegistrationState() const; void setRegistrationState(linphone::RegistrationState status); @@ -51,10 +54,12 @@ public: signals: void registrationStateChanged(); void errorMessageChanged(QString error); + void reasonChanged(); private: linphone::RegistrationState mRegistrationState = linphone::RegistrationState::None; QString mErrorMessage; + bool mBadIds = false; DECLARE_ABSTRACT_OBJECT }; diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index f0373749a..9f954a7bd 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -83,45 +83,45 @@ AccountManager - + assistant_account_login_already_connected_error - "Le compte est déjà connecté" + "The account is already connected" Das Konto ist bereits verbunden - + assistant_account_login_proxy_address_error - "Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine." + "Unable to create proxy address. Please check the domain name." Proxy-Adresse konnte nicht erstellt werden. Bitte überprüfen Sie den Domänenname. - + assistant_account_login_address_configuration_error - "Impossible de configurer l'adresse : `%1`." + "Unable to configure address: `%1`." Folgende Adresse konnte nicht konfiguriert werden: `%1`. - + assistant_account_login_params_configuration_error - "Impossible de configurer les paramètres du compte." + "Unable to configure account settings." Kontoeinstellungen konnten nicht konfiguriert werden. - + assistant_account_login_forbidden_error - "Le couple identifiant mot de passe ne correspond pas" + "Username and password do not match" Benutzername und Passwort stimmen nicht überein - + assistant_account_login_error - "Erreur durant la connexion" + "Error during connection, please verify your parameters" Fehler bei der Verbindung - + assistant_account_add_error - "Impossible d'ajouter le compte." + "Unable to add account." Konto konnte nicht hinzugefügt werden. @@ -3783,7 +3783,7 @@ Error Link zur Remote-Konfiguration - + default_account_connection_state_error_toast Fehler bei der Verbindung @@ -4907,74 +4907,83 @@ Pour les activer dans un projet commercial, merci de nous contacter. Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte. - + assistant_third_party_sip_account_create_linphone_account "Créer un compte linphone" Linphone-Konto erstellen - + assistant_third_party_sip_account_warning_ok "Je comprends" Verstanden - + username "Nom d'utilisateur" Benutzername - + password Passwort - + sip_address_domain "Domaine" Domäne - + sip_address_display_name Nom d'affichage Anzeigename - + transport "Transport" Transport - + assistant_account_login Anmelden - + assistant_account_login_missing_username Bitte Benutzernamen eingeben - + assistant_account_login_missing_password Bitte Passwort eingeben - + assistant_account_login_missing_domain "Veuillez saisir un nom de domaine Bitte Domäne eingeben - - - login_server_address - "URL du serveur mandataire" ----------- -"Identifiant de connexion (si différent)" + + login_advanced_parameters_label + Advanced parameters + + + + + login_proxy_server_url + "Proxy server URL" + + + + + login_id + "Connexion ID (if different)" diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 7c9550fac..62a999369 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -83,45 +83,45 @@ AccountManager - + assistant_account_login_already_connected_error - "Le compte est déjà connecté" + "The account is already connected" The account is already connected - + assistant_account_login_proxy_address_error - "Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine." + "Unable to create proxy address. Please check the domain name." Unable to create proxy address. Please check the domain name. - + assistant_account_login_address_configuration_error - "Impossible de configurer l'adresse : `%1`." + "Unable to configure address: `%1`." Unable to configure address: `%1`. - + assistant_account_login_params_configuration_error - "Impossible de configurer les paramètres du compte." + "Unable to configure account settings." Unable to configure account settings. - + assistant_account_login_forbidden_error - "Le couple identifiant mot de passe ne correspond pas" + "Username and password do not match" Username and password do not match - + assistant_account_login_error - "Erreur durant la connexion" + "Error during connection, please verify your parameters" Error during connection - + assistant_account_add_error - "Impossible d'ajouter le compte." + "Unable to add account." Unable to add account. @@ -3693,7 +3693,7 @@ Expiration : %1 Remote provisioning link - + default_account_connection_state_error_toast Error during connection @@ -4796,75 +4796,84 @@ These features will be hidden if you use a third-party SIP account. To enable them in a commercial project, please contact us. - + assistant_third_party_sip_account_create_linphone_account "Créer un compte linphone" Create a linphone account - + assistant_third_party_sip_account_warning_ok "Je comprends" I understand - + username "Nom d'utilisateur" Username - + password Password - + sip_address_domain "Domaine" Domain - + sip_address_display_name Nom d'affichage Display name - + transport "Transport" Transport - + assistant_account_login Connection - + assistant_account_login_missing_username Please enter a username - + assistant_account_login_missing_password Please enter a password - + assistant_account_login_missing_domain "Veuillez saisir un nom de domaine Please enter a domain - - - login_server_address - "URL du serveur mandataire" ----------- -"Identifiant de connexion (si différent)" - + + login_advanced_parameters_label + Advanced parameters + Advanced parameters + + + + login_proxy_server_url + "Proxy server URL" + Proxy server URL + + + + login_id + "Connexion ID (if different)" + Connexion ID (if different) diff --git a/Linphone/data/languages/fr_FR.ts b/Linphone/data/languages/fr_FR.ts index 153127e1d..852716a96 100644 --- a/Linphone/data/languages/fr_FR.ts +++ b/Linphone/data/languages/fr_FR.ts @@ -83,45 +83,45 @@ AccountManager - + assistant_account_login_already_connected_error - "Le compte est déjà connecté" + "The account is already connected" Le compte est déjà connecté - + assistant_account_login_proxy_address_error - "Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine." + "Unable to create proxy address. Please check the domain name." Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine. - + assistant_account_login_address_configuration_error - "Impossible de configurer l'adresse : `%1`." + "Unable to configure address: `%1`." Impossible de configurer l'adresse : `%1`. - + assistant_account_login_params_configuration_error - "Impossible de configurer les paramètres du compte." + "Unable to configure account settings." Impossible de configurer les paramètres du compte. - + assistant_account_login_forbidden_error - "Le couple identifiant mot de passe ne correspond pas" + "Username and password do not match" Le couple identifiant mot de passe ne correspond pas - + assistant_account_login_error - "Erreur durant la connexion" - Erreur durant la connexion + "Error during connection, please verify your parameters" + Erreur durant la connexion, veuillez vérifier vos paramètres - + assistant_account_add_error - "Impossible d'ajouter le compte." + "Unable to add account." Impossible d'ajouter le compte. @@ -3693,7 +3693,7 @@ Expiration : %1 Lien de configuration distante - + default_account_connection_state_error_toast Erreur durant la connexion @@ -4796,75 +4796,84 @@ Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. Pour les activer dans un projet commercial, merci de nous contacter. - + assistant_third_party_sip_account_create_linphone_account "Créer un compte linphone" Créer un compte linphone - + assistant_third_party_sip_account_warning_ok "Je comprends" Je comprends - + username "Nom d'utilisateur" Nom d'utilisateur - + password Mot de passe - + sip_address_domain "Domaine" Domaine - + sip_address_display_name Nom d'affichage Nom d'affichage - + transport "Transport" Transport - + assistant_account_login Connexion - + assistant_account_login_missing_username Veuillez saisir un nom d'utilisateur - + assistant_account_login_missing_password Veuillez saisir un mot de passe - + assistant_account_login_missing_domain "Veuillez saisir un nom de domaine Veuillez saisir un nom de domaine - - - login_server_address - "URL du serveur mandataire" ----------- -"Identifiant de connexion (si différent)" - + + login_advanced_parameters_label + Advanced parameters + Paramètres avancés + + + + login_proxy_server_url + "Proxy server URL" + URI du proxy SIP sortant + + + + login_id + "Connexion ID (if different)" + Identifiant de connexion (si différent) diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index c8bd70400..6e5e761d4 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -59,7 +59,9 @@ bool AccountManager::login(QString username, QString displayName, QString domain, linphone::TransportType transportType, - QString *errorMessage) { + QString *errorMessage, + QString serverAddress, + QString connectionId) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); auto core = CoreModel::getInstance()->getCore(); auto factory = linphone::Factory::get(); @@ -80,26 +82,30 @@ bool AccountManager::login(QString username, auto otherParams = otherAccount->getParams(); if (otherParams->getIdentityAddress()->getUsername() == Utils::appStringToCoreString(username) && otherParams->getDomain() == Utils::appStringToCoreString(domain)) { - //: "Le compte est déjà connecté" + //: "The account is already connected" *errorMessage = tr("assistant_account_login_already_connected_error"); return false; } } if (!displayName.isEmpty()) identity->setDisplayName(Utils::appStringToCoreString(displayName)); + if (!serverAddress.isEmpty()) { + auto linServerAddress = ToolModel::interpretUrl(serverAddress); + params->setServerAddress(linServerAddress); + } if (!domain.isEmpty()) { identity->setDomain(Utils::appStringToCoreString(domain)); if (QString::compare(domain, "sip.linphone.org")) { params->setLimeServerUrl(""); - auto serverAddress = + auto computedServerAddress = factory->createAddress(Utils::appStringToCoreString(QStringLiteral("sip:%1").arg(domain))); - if (!serverAddress) { - //: "Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine." + if (!computedServerAddress) { + //: "Unable to create proxy address. Please check the domain name." *errorMessage = tr("assistant_account_login_proxy_address_error"); return false; } - serverAddress->setTransport(transportType); - params->setServerAddress(serverAddress); + computedServerAddress->setTransport(transportType); + params->setServerAddress(computedServerAddress); } } if (params->setIdentityAddress(identity)) { @@ -107,23 +113,23 @@ bool AccountManager::login(QString username, .arg(QStringLiteral("Unable to set identity address: `%1`.")) .arg(Utils::coreStringToAppString(identity->asStringUriOnly())); - //: "Impossible de configurer l'adresse : `%1`." + //: "Unable to configure address: `%1`." *errorMessage = tr("assistant_account_login_address_configuration_error") .arg(Utils::coreStringToAppString(identity->asStringUriOnly())); return false; } if (account->setParams(params)) { - //: "Impossible de configurer les paramètres du compte." + //: "Unable to configure account settings." *errorMessage = tr("assistant_account_login_params_configuration_error"); return false; } - auto authInfo = factory->createAuthInfo(Utils::appStringToCoreString(username), // Username. - "", // User ID. - Utils::appStringToCoreString(password), // Password. - "", // HA1. - "", // Realm. - identity->getDomain() // Domain. + auto authInfo = factory->createAuthInfo(Utils::appStringToCoreString(username), // Username. + Utils::appStringToCoreString(connectionId), // User ID. + Utils::appStringToCoreString(password), // Password. + "", // HA1. + "", // Realm. + identity->getDomain() // Domain. ); core->addAuthInfo(authInfo); mAccountModel = Utils::makeQObject_ptr(account); @@ -137,10 +143,10 @@ bool AccountManager::login(QString username, connect( mAccountModel.get(), &AccountModel::removed, this, [this]() { mAccountModel = nullptr; }, Qt::SingleShotConnection); - //: "Le couple identifiant mot de passe ne correspond pas" + //: "Username and password do not match" if (account->getError() == linphone::Reason::Forbidden) errorMessage = tr("assistant_account_login_forbidden_error"); - //: "Erreur durant la connexion" + //: "Error during connection, please verify your parameters" else errorMessage = tr("assistant_account_login_error"); mAccountModel->removeAccount(); } else if (state == linphone::RegistrationState::Ok) { @@ -149,11 +155,11 @@ bool AccountManager::login(QString username, mAccountModel = nullptr; } } - emit registrationStateChanged(state, errorMessage); + emit registrationStateChanged(state, account->getError(), errorMessage); }); auto status = core->addAccount(account); if (status == -1) { - //: "Impossible d'ajouter le compte." + //: "Unable to add account." *errorMessage = tr("assistant_account_add_error"); core->removeAuthInfo(authInfo); return false; diff --git a/Linphone/model/account/AccountManager.hpp b/Linphone/model/account/AccountManager.hpp index 1fdaa13fd..090ee68dc 100644 --- a/Linphone/model/account/AccountManager.hpp +++ b/Linphone/model/account/AccountManager.hpp @@ -41,7 +41,9 @@ public: QString displayName = QString(), QString domain = QString(), linphone::TransportType transportType = linphone::TransportType::Tls, - QString *errorMessage = nullptr); + QString *errorMessage = nullptr, + QString serverAddress = QString(), + QString connectionId = QString()); std::shared_ptr createAccount(const QString &assistantFile); @@ -55,7 +57,8 @@ public: void linkNewAccountUsingCode(const QString &code, RegisterType registerType, const QString &sipAddress); signals: - void registrationStateChanged(linphone::RegistrationState state, QString message = QString()); + void + registrationStateChanged(linphone::RegistrationState state, linphone::Reason reason, QString message = QString()); void newAccountCreationSucceed(QString sipAddress, RegisterType registerType, const QString ®isterAddress); void registerNewAccountFailed(const QString &error); void tokenConversionSucceed(QString convertedToken); diff --git a/Linphone/view/Page/Form/Login/SIPLoginPage.qml b/Linphone/view/Page/Form/Login/SIPLoginPage.qml index 69b27339a..6533b9b94 100644 --- a/Linphone/view/Page/Form/Login/SIPLoginPage.qml +++ b/Linphone/view/Page/Form/Login/SIPLoginPage.qml @@ -107,7 +107,6 @@ LoginLayout { } text: qsTr("Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1.\n\nCes fonctionnalités seront masquées si vous utilisez un compte SIP tiers.\n\nPour les activer dans un projet commercial, merci de nous contacter.").arg(applicationName) } - } SmallButton { id: openLinkButton @@ -170,93 +169,101 @@ LoginLayout { RowLayout { id: content width: formFlickable.width - scrollbar.width*2 + spacing: Math.round(50 * DefaultStyle.dp) ColumnLayout { spacing: Math.round(2 * DefaultStyle.dp) - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) Layout.fillHeight: true ColumnLayout { - spacing: Math.round(8 * DefaultStyle.dp) - FormItemLayout { - id: username - //: "Nom d'utilisateur" - label: qsTr("username") - mandatory: true - enableErrorText: true - Layout.fillWidth: true - contentItem: TextField { - id: usernameEdit - isError: username.errorTextVisible || errorText.isVisible - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) - KeyNavigation.down: passwordEdit - } + spacing: Math.round(22 * DefaultStyle.dp) + // alignment item + Item { + Layout.preferredHeight: advancedParametersTitle.implicitHeight } - FormItemLayout { - id: password - label: qsTr("password") - mandatory: true - enableErrorText: true - Layout.fillWidth: true - contentItem: TextField { - id: passwordEdit - isError: password.errorTextVisible || errorText.isVisible - hidden: true - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) - KeyNavigation.up: usernameEdit - KeyNavigation.down: domainEdit - } - } - FormItemLayout { - id: domain - //: "Domaine" - label: qsTr("sip_address_domain") - mandatory: true - enableErrorText: true - Layout.fillWidth: true - contentItem: TextField { - id: domainEdit - isError: domain.errorTextVisible - initialText: SettingsCpp.assistantThirdPartySipAccountDomain - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) - KeyNavigation.up: passwordEdit - KeyNavigation.down: displayName - } - Connections { - target: SettingsCpp - function onAssistantThirdPartySipAccountDomainChanged() { - domainEdit.resetText() + ColumnLayout { + spacing: Math.round(10 * DefaultStyle.dp) + FormItemLayout { + id: username + //: "Nom d'utilisateur" + label: qsTr("username") + mandatory: true + enableErrorText: true + Layout.fillWidth: true + contentItem: TextField { + id: usernameEdit + isError: username.errorTextVisible || (LoginPageCpp.badIds && errorText.isVisible) + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + KeyNavigation.down: passwordEdit } } - } - FormItemLayout { - //: Nom d'affichage - label: qsTr("sip_address_display_name") - Layout.fillWidth: true - contentItem: TextField { - id: displayName - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) - KeyNavigation.up: domainEdit - KeyNavigation.down: transportCbox + FormItemLayout { + id: password + label: qsTr("password") + mandatory: true + enableErrorText: true + Layout.fillWidth: true + contentItem: TextField { + id: passwordEdit + isError: password.errorTextVisible || (LoginPageCpp.badIds && errorText.isVisible) + hidden: true + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + KeyNavigation.up: usernameEdit + KeyNavigation.down: domainEdit + } } - } - FormItemLayout { - //: "Transport" - label: qsTr("transport") - Layout.fillWidth: true - contentItem: ComboBox { - id: transportCbox - height: Math.round(49 * DefaultStyle.dp) - width: Math.round(360 * DefaultStyle.dp) - textRole: "text" - valueRole: "value" - model: [ - {text: "TCP", value: LinphoneEnums.TransportType.Tcp}, - {text: "UDP", value: LinphoneEnums.TransportType.Udp}, - {text: "TLS", value: LinphoneEnums.TransportType.Tls}, - {text: "DTLS", value: LinphoneEnums.TransportType.Dtls} - ] - currentIndex: Utils.findIndex(model, function (entry) { - return entry.text === SettingsCpp.assistantThirdPartySipAccountTransport.toUpperCase() - }) + FormItemLayout { + id: domain + //: "Domaine" + label: qsTr("sip_address_domain") + mandatory: true + enableErrorText: true + Layout.fillWidth: true + contentItem: TextField { + id: domainEdit + isError: domain.errorTextVisible + initialText: SettingsCpp.assistantThirdPartySipAccountDomain + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + KeyNavigation.up: passwordEdit + KeyNavigation.down: displayName + } + Connections { + target: SettingsCpp + function onAssistantThirdPartySipAccountDomainChanged() { + domainEdit.resetText() + } + } + } + FormItemLayout { + //: Nom d'affichage + label: qsTr("sip_address_display_name") + Layout.fillWidth: true + contentItem: TextField { + id: displayName + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + KeyNavigation.up: domainEdit + KeyNavigation.down: transportCbox + } + } + FormItemLayout { + //: "Transport" + label: qsTr("transport") + Layout.fillWidth: true + contentItem: ComboBox { + id: transportCbox + height: Math.round(49 * DefaultStyle.dp) + width: Math.round(360 * DefaultStyle.dp) + textRole: "text" + valueRole: "value" + model: [ + {text: "TCP", value: LinphoneEnums.TransportType.Tcp}, + {text: "UDP", value: LinphoneEnums.TransportType.Udp}, + {text: "TLS", value: LinphoneEnums.TransportType.Tls}, + {text: "DTLS", value: LinphoneEnums.TransportType.Dtls} + ] + currentIndex: Utils.findIndex(model, function (entry) { + return entry.text === SettingsCpp.assistantThirdPartySipAccountTransport.toUpperCase() + }) + } } } } @@ -338,7 +345,8 @@ LoginLayout { return } console.debug("[SIPLoginPage] User: Log in") - LoginPageCpp.login(usernameEdit.text, passwordEdit.text, displayName.text, domainEdit.text, transportCbox.currentValue); + LoginPageCpp.login(usernameEdit.text, passwordEdit.text, displayName.text, domainEdit.text, + transportCbox.currentValue, serverAddressEdit.text, connectionIdEdit.text); connectionButton.enabled = false connectionButtonContent.currentIndex = 1 } @@ -349,33 +357,43 @@ LoginLayout { } } ColumnLayout { - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) Layout.fillHeight: true - spacing: Math.round(8 * DefaultStyle.dp) - FormItemLayout { - id: serverAddress - //: "URL du serveur mandataire" - label: qsTr("login_server_address") - Layout.fillWidth: true - contentItem: TextField { - id: serverAddressEdit - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) - KeyNavigation.down: connectionIdEdit - } + spacing: Math.round(22 * DefaultStyle.dp) + Text { + id: advancedParametersTitle + //: Advanced parameters + text: qsTr("login_advanced_parameters_label") + font: Typography.h3m } - FormItemLayout { - id: connectionId - //: "Identifiant de connexion (si différent)" - label: qsTr("login_server_address") - Layout.fillWidth: true - contentItem: TextField { - id: connectionIdEdit - Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) - KeyNavigation.up: serverAddressEdit + ColumnLayout { + spacing: Math.round(10 * DefaultStyle.dp) + FormItemLayout { + id: serverAddress + //: "Proxy server URL" + label: qsTr("login_proxy_server_url") + Layout.fillWidth: true + contentItem: TextField { + id: serverAddressEdit + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + KeyNavigation.down: connectionIdEdit + } + } + FormItemLayout { + id: connectionId + //: "Connexion ID (if different)" + label: qsTr("login_id") + Layout.fillWidth: true + contentItem: TextField { + id: connectionIdEdit + Layout.preferredWidth: Math.round(360 * DefaultStyle.dp) + KeyNavigation.up: serverAddressEdit + } } } Item{Layout.fillHeight: true} } + Item{Layout.fillHeight: true} } } } @@ -387,11 +405,11 @@ LoginLayout { active: true interactive: true parent: rootStackView.currentItem - // visible: parent.contentHeight > parent.height + visible: parent.contentHeight > parent.height policy: Control.ScrollBar.AsNeeded anchors.top: parent.top anchors.bottom: parent.bottom - anchors.left: parent.left + anchors.right: parent.right // Layout.leftMargin: Math.round(119 * DefaultStyle.dp) // anchors.leftMargin: Math.round(119 * DefaultStyle.dp) // anchors.rightMargin: -8 * DefaultStyle.dp diff --git a/Linphone/view/Style/Typography.qml b/Linphone/view/Style/Typography.qml index 9651a8d85..f46efe65b 100644 --- a/Linphone/view/Style/Typography.qml +++ b/Linphone/view/Style/Typography.qml @@ -14,7 +14,7 @@ QtObject { property font h3m: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Math.round(16 * DefaultStyle.dp), - weight: Math.min(Math.round(800 * DefaultStyle.dp), 1000) + weight: Math.min(Math.round(700 * DefaultStyle.dp), 1000) }) // Title/H3 - Bloc title