diff --git a/Linphone/core/chat/message/EventLogProxy.cpp b/Linphone/core/chat/message/EventLogProxy.cpp
index 3a766bc62..ca2df33f0 100644
--- a/Linphone/core/chat/message/EventLogProxy.cpp
+++ b/Linphone/core/chat/message/EventLogProxy.cpp
@@ -62,9 +62,9 @@ void EventLogProxy::setSourceModel(QAbstractItemModel *model) {
lInfo() << "Found index by id, request highlight at index" << proxyIndex;
emit foundMessagById(proxyIndex);
} else {
- Utils::showInformationPopup("info_popup_error_title",
+ Utils::showInformationPopup(tr("info_popup_error_title"),
//: Original message not found. It may have been deleted
- "info_popup_reply_message_not_found_error");
+ tr("info_popup_reply_message_not_found_error"));
}
});
connect(newEventLogList, &EventLogList::eventInsertedByUser, this, [this, newEventLogList](int i) {
diff --git a/Linphone/core/register/RegisterPage.cpp b/Linphone/core/register/RegisterPage.cpp
index 06a1474be..faa8a506f 100644
--- a/Linphone/core/register/RegisterPage.cpp
+++ b/Linphone/core/register/RegisterPage.cpp
@@ -86,6 +86,14 @@ void RegisterPage::registerNewAccount(const QString &username,
accountManager = nullptr;
}
});
+ connect(accountManager, &AccountManager::phoneNumberValidationNotAvailable, this,
+ [this, accountManager]() mutable {
+ App::postCoreAsync([this]() { emit phoneNumberValidationNotAvailable(); });
+ if (accountManager) {
+ accountManager->deleteLater();
+ accountManager = nullptr;
+ }
+ });
connect(accountManager, &AccountManager::tokenConversionSucceed, this,
[this, accountManager, address](QString convertedToken) {
App::postCoreAsync([this, convertedToken, address]() {
diff --git a/Linphone/core/register/RegisterPage.hpp b/Linphone/core/register/RegisterPage.hpp
index ad96bf6db..054f6851c 100644
--- a/Linphone/core/register/RegisterPage.hpp
+++ b/Linphone/core/register/RegisterPage.hpp
@@ -53,6 +53,7 @@ signals:
const QString &sipIdentityAddress);
void registerNewAccountFailed(const QString &error);
void errorInField(const QString &field, const QString &error);
+ void phoneNumberValidationNotAvailable();
void tokenConversionSucceed();
void linkingNewAccountWithCodeSucceed();
void linkingNewAccountWithCodeFailed(const QString &error);
diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts
index 0626f0264..3d7aa674c 100644
--- a/Linphone/data/languages/de.ts
+++ b/Linphone/data/languages/de.ts
@@ -2511,6 +2511,7 @@ Error
+ from %1 to %2 (UTC%3)
von %1 zu %2 (UTC%3)
@@ -4095,6 +4096,20 @@ Ablauf: %1
%1 ist nun ein Administrator
+
+ EventLogProxy
+
+
+ info_popup_error_title
+ Fehler
+
+
+
+ info_popup_reply_message_not_found_error
+ Original message not found. It may have been deleted
+
+
+
FriendCore
@@ -6021,135 +6036,153 @@ Ablauf: %1
RegisterPage
-
+
+ phone_number_validation_not_available_title
+ Phone number validation not available
+
+
+
+
+ phone_number_validation_not_available_text
+ Phone number validation is not available, please use email account creation process
+
+
+
+
+ register_with_email_button
+ Register with an email
+
+
+
+
return_accessible_name
Return
Zurückkehren
-
+
assistant_account_register
"Inscription
Registrieren
-
+
assistant_already_have_an_account
Haben Sie bereits ein Konto?
-
+
assistant_account_login
Anmelden
-
+
assistant_account_register_with_phone_number
Mit Telefonnummer registrieren
-
+
assistant_account_register_with_email
Mit E-Mail registrieren
-
-
+
+
username
Benutzername
-
-
-
-
-
+
+
+
+
+
mandatory_field_accessible_name
"%1 mandatory"
%1 ist verpflichtend
-
+
domain
Domäne
-
-
-
+
+
+
phone_number
"Numéro de téléphone"
Telefonnummer
-
-
+
+
email
Email
-
-
+
+
password
Passwort
-
-
+
+
assistant_account_register_password_confirmation
"Confirmation mot de passe"
Passwort bestätigen
-
+
assistant_dialog_cgu_and_privacy_policy_message
"J'accepte les %1 et la %2"
Ich akzeptiere %1 und %2
-
+
assistant_dialog_general_terms_label
"conditions d'utilisation"
Allgemeine Geschäftsbedingungen
-
+
assistant_dialog_privacy_policy_label
"politique de confidentialité"
Datenschutzrichtlinie
-
+
assistant_account_create
"Créer"
Erstellen
-
+
assistant_account_create_missing_username_error
"Veuillez entrer un nom d'utilisateur"
Bitte Benutzernamen eingeben
-
+
assistant_account_create_missing_password_error
"Veuillez entrer un mot de passe"
Bitte Passwort eingeben
-
+
assistant_account_create_confirm_password_error
"Les mots de passe sont différents"
Die Passwörter stimmen nicht überein
-
+
assistant_account_create_missing_number_error
"Veuillez entrer un numéro de téléphone"
Bitte Telefonnummer eingeben
-
+
assistant_account_create_missing_email_error
"Veuillez entrer un email"
Bitte E-Mail eingeben
@@ -6562,6 +6595,28 @@ Pour les activer dans un projet commercial, merci de nous contacter.
Speichern
+
+ SoundPlayerModel
+
+
+ sound_player_pause_error
+ Unable to pause
+
+
+
+
+
+ sound_player_open_error
+ Unable to open: `%1`
+
+
+
+
+ sound_player_play_error
+ Unable to play %1
+
+
+
Sticker
@@ -6663,6 +6718,12 @@ Pour les activer dans un projet commercial, merci de nous contacter.
"Unknown device"
Unbekannter Gerätename
+
+
+ Dummy subject
+ Dummy subject
+
+
Utils
diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts
index 0a1ef8cef..b009c3825 100644
--- a/Linphone/data/languages/en.ts
+++ b/Linphone/data/languages/en.ts
@@ -2470,6 +2470,7 @@ Error
+ from %1 to %2 (UTC%3)
from %1 to %2 (UTC%3)
@@ -4004,6 +4005,20 @@ Expiration : %1
Expiration : %1
+
+ EventLogProxy
+
+
+ info_popup_error_title
+ Error
+
+
+
+ info_popup_reply_message_not_found_error
+ Original message not found. It may have been deleted
+ Original message not found. It may have been deleted
+
+
FriendCore
@@ -5904,135 +5919,153 @@ Expiration : %1
RegisterPage
-
+
+ phone_number_validation_not_available_title
+ Phone number validation not available
+ Phone number validation not available
+
+
+
+ phone_number_validation_not_available_text
+ Phone number validation is not available, please use email account creation process
+ Phone number validation is not available, please use email account creation process
+
+
+
+ register_with_email_button
+ Register with an email
+ Register with an email
+
+
+
return_accessible_name
Return
Return
-
+
assistant_account_register
"Inscription
Register
-
+
assistant_already_have_an_account
Already have an account ?
-
+
assistant_account_login
Connection
-
+
assistant_account_register_with_phone_number
Register with a phone number
-
+
assistant_account_register_with_email
Register with email
-
-
+
+
username
Username
-
-
-
-
-
+
+
+
+
+
mandatory_field_accessible_name
"%1 mandatory"
%1 mandatory
-
+
domain
Domain
-
-
-
+
+
+
phone_number
"Numéro de téléphone"
Phone number
-
-
+
+
email
Email
-
-
+
+
password
Password
-
-
+
+
assistant_account_register_password_confirmation
"Confirmation mot de passe"
Password confirmation
-
+
assistant_dialog_cgu_and_privacy_policy_message
"J'accepte les %1 et la %2"
I accept the %1 and the %2
-
+
assistant_dialog_general_terms_label
"conditions d'utilisation"
terms of use
-
+
assistant_dialog_privacy_policy_label
"politique de confidentialité"
privacy policy
-
+
assistant_account_create
"Créer"
Create
-
+
assistant_account_create_missing_username_error
"Veuillez entrer un nom d'utilisateur"
Please enter a username
-
+
assistant_account_create_missing_password_error
"Veuillez entrer un mot de passe"
Please enter a password
-
+
assistant_account_create_confirm_password_error
"Les mots de passe sont différents"
Passwords do not match
-
+
assistant_account_create_missing_number_error
"Veuillez entrer un numéro de téléphone"
Please enter a phone number
-
+
assistant_account_create_missing_email_error
"Veuillez entrer un email"
Please enter an email
@@ -6433,6 +6466,28 @@ To enable them in a commercial project, please contact us.
Save
+
+ SoundPlayerModel
+
+
+ sound_player_pause_error
+ Unable to pause
+ Unable to pause
+
+
+
+
+ sound_player_open_error
+ Unable to open: `%1`
+ Unable to open: `%1`
+
+
+
+ sound_player_play_error
+ Unable to play %1
+ Unable to play %1
+
+
Sticker
@@ -6504,6 +6559,12 @@ To enable them in a commercial project, please contact us.
"Unknown device"
Unknown device name
+
+
+ Dummy subject
+ Dummy subject
+ Dummy subject
+
conference_invitation
diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts
index b7983650c..45656a4a8 100644
--- a/Linphone/data/languages/fr.ts
+++ b/Linphone/data/languages/fr.ts
@@ -2470,6 +2470,7 @@ Error
+ from %1 to %2 (UTC%3)
de %1 à %2 (UTC%3)
@@ -4004,6 +4005,20 @@ Expiration : %1
%1 est maintenant admin
+
+ EventLogProxy
+
+
+ info_popup_error_title
+ Erreur
+
+
+
+ info_popup_reply_message_not_found_error
+ Original message not found. It may have been deleted
+ Le message original n'a pas été trouvé. Il a pu être supprimé
+
+
FriendCore
@@ -5904,135 +5919,153 @@ Expiration : %1
RegisterPage
-
+
+ phone_number_validation_not_available_title
+ Phone number validation not available
+ Validation par téléphone indisponible
+
+
+
+ phone_number_validation_not_available_text
+ Phone number validation is not available, please use email account creation process
+ La validation par téléphone est indisponible, veuillez utiliser le processus de création de compte avec email
+
+
+
+ register_with_email_button
+ Register with an email
+ S'enregistrer avec un email
+
+
+
return_accessible_name
Return
Retour
-
+
assistant_account_register
"Inscription
Inscription
-
+
assistant_already_have_an_account
Déjà un compte ?
-
+
assistant_account_login
Connexion
-
+
assistant_account_register_with_phone_number
S'inscrire avec un numéro de téléphone
-
+
assistant_account_register_with_email
S'inscrire avec un email
-
-
+
+
username
Nom d'utilisateur
-
-
-
-
-
+
+
+
+
+
mandatory_field_accessible_name
"%1 mandatory"
%1 requit
-
+
domain
Domaine
-
-
-
+
+
+
phone_number
"Numéro de téléphone"
Numéro de téléphone
-
-
+
+
email
Email
-
-
+
+
password
Mot de passe
-
-
+
+
assistant_account_register_password_confirmation
"Confirmation mot de passe"
Confirmation mot de passe
-
+
assistant_dialog_cgu_and_privacy_policy_message
"J'accepte les %1 et la %2"
J'accepte les %1 et la %2
-
+
assistant_dialog_general_terms_label
"conditions d'utilisation"
conditions d'utilisation
-
+
assistant_dialog_privacy_policy_label
"politique de confidentialité"
politique de confidentialité
-
+
assistant_account_create
"Créer"
Créer
-
+
assistant_account_create_missing_username_error
"Veuillez entrer un nom d'utilisateur"
Veuillez entrer un nom d'utilisateur
-
+
assistant_account_create_missing_password_error
"Veuillez entrer un mot de passe"
Veuillez entrer un mot de passe
-
+
assistant_account_create_confirm_password_error
"Les mots de passe sont différents"
Les mots de passe sont différents
-
+
assistant_account_create_missing_number_error
"Veuillez entrer un numéro de téléphone"
Veuillez entrer un numéro de téléphone
-
+
assistant_account_create_missing_email_error
"Veuillez entrer un email"
Veuillez entrer un email
@@ -6433,6 +6466,28 @@ Pour les activer dans un projet commercial, merci de nous contacter.Enregistrer
+
+ SoundPlayerModel
+
+
+ sound_player_pause_error
+ Unable to pause
+ Impossible de mettre en pause
+
+
+
+
+ sound_player_open_error
+ Unable to open: `%1`
+ Impossible d'ouvrir : "%1"
+
+
+
+ sound_player_play_error
+ Unable to play %1
+ Impossible de jouer %1
+
+
Sticker
@@ -6504,6 +6559,12 @@ Pour les activer dans un projet commercial, merci de nous contacter."Unknown device"
Appareil inconnu
+
+
+ Dummy subject
+ Dummy subject
+ Sujet par défaut
+
conference_invitation
diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp
index f745a04c8..fdc9940a8 100644
--- a/Linphone/model/account/AccountManager.cpp
+++ b/Linphone/model/account/AccountManager.cpp
@@ -311,7 +311,9 @@ void AccountManager::registerNewAccount(const QString &username,
} else if (request->getType() ==
linphone::AccountManagerServicesRequest::Type::SendPhoneNumberLinkingCodeBySms) {
lInfo() << "[AccountManager] error sending code to phone number" << errorMessage;
- if (parameterErrors) {
+ if (statusCode == 422) {
+ emit phoneNumberValidationNotAvailable();
+ } else if (parameterErrors) {
for (const std::string &key : parameterErrors->getKeys()) {
emit errorInField(Utils::coreStringToAppString(key),
Utils::coreStringToAppString(errorMessage));
diff --git a/Linphone/model/account/AccountManager.hpp b/Linphone/model/account/AccountManager.hpp
index f3f5f3c95..a6e72a782 100644
--- a/Linphone/model/account/AccountManager.hpp
+++ b/Linphone/model/account/AccountManager.hpp
@@ -66,6 +66,7 @@ signals:
void errorInField(const QString &field, const QString &error);
void linkingNewAccountWithCodeSucceed();
void linkingNewAccountWithCodeFailed(const QString &error);
+ void phoneNumberValidationNotAvailable();
private:
std::shared_ptr mAccountModel;
diff --git a/Linphone/model/chat/message/ChatMessageModel.cpp b/Linphone/model/chat/message/ChatMessageModel.cpp
index aa23e008c..402a7a8cf 100644
--- a/Linphone/model/chat/message/ChatMessageModel.cpp
+++ b/Linphone/model/chat/message/ChatMessageModel.cpp
@@ -34,7 +34,7 @@ ChatMessageModel::ChatMessageModel(const std::shared_ptr
: ::Listener(chatMessage, parent) {
// lDebug() << "[ChatMessageModel] new" << this << " / SDKModel=" << chatMessage.get();
mustBeInLinphoneThread(getClassName());
- mEphemeralTimer.setInterval(60);
+ mEphemeralTimer.setInterval(1000);
mEphemeralTimer.setSingleShot(false);
if (mMonitor->getEphemeralExpireTime() != 0) mEphemeralTimer.start();
mChatRoom = mMonitor->getChatRoom();
diff --git a/Linphone/model/sound-player/SoundPlayerModel.cpp b/Linphone/model/sound-player/SoundPlayerModel.cpp
index 5e09d9649..1b500cbcb 100644
--- a/Linphone/model/sound-player/SoundPlayerModel.cpp
+++ b/Linphone/model/sound-player/SoundPlayerModel.cpp
@@ -62,7 +62,7 @@ SoundPlayerModel::~SoundPlayerModel() {
void SoundPlayerModel::pause() {
if (mMonitor->pause()) {
//: Unable to pause
- emit errorChanged("sound_player_pause_error");
+ emit errorChanged(tr("sound_player_pause_error"));
emit playbackStateChanged(LinphoneEnums::PlaybackState::ErrorState);
return;
}
@@ -84,12 +84,12 @@ bool SoundPlayerModel::play(QString source, bool fromStart) {
if (!open(source)) {
lWarning() << QStringLiteral("[SoundPlayerModel] %1 Unable to open: `%2`").arg(Q_FUNC_INFO).arg(source);
//: Unable to open: `%1`
- emit errorChanged(QString("sound_player_open_error").arg(source));
+ emit errorChanged(tr("sound_player_open_error").arg(source));
return false;
}
if (mMonitor->start()) {
//: Unable to play %1
- emit errorChanged(QString("sound_player_play_error").arg(source));
+ emit errorChanged(tr("sound_player_play_error").arg(source));
emit playbackStateChanged(LinphoneEnums::PlaybackState::ErrorState);
return false;
}
@@ -104,7 +104,7 @@ void SoundPlayerModel::seek(QString source, int offset) {
if (!open(source)) {
lWarning() << QStringLiteral("[SoundPlayerModel] %1 Unable to open: `%2`").arg(Q_FUNC_INFO).arg(source);
//: Unable to open: `%1`
- emit errorChanged(QString("sound_player_open_error").arg(source));
+ emit errorChanged(tr("sound_player_open_error").arg(source));
return;
}
mMonitor->seek(offset);
diff --git a/Linphone/model/tool/ToolModel.cpp b/Linphone/model/tool/ToolModel.cpp
index 12f3400c2..473903ef7 100644
--- a/Linphone/model/tool/ToolModel.cpp
+++ b/Linphone/model/tool/ToolModel.cpp
@@ -657,7 +657,7 @@ ToolModel::getChatRoomParams(std::shared_ptr call, std::shared_p
params->enableChat(true);
params->enableGroup(false);
//: Dummy subject
- params->setSubject("Dummy subject");
+ params->setSubject(Utils::appStringToCoreString(tr("Dummy subject")));
params->setAccount(account);
params->enableAudio(false);
params->enableVideo(false);
diff --git a/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml b/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml
index bcddae565..9e9ddb94a 100644
--- a/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml
+++ b/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml
@@ -175,10 +175,10 @@ ColumnLayout {
}
}
Text {
- //: from %1 to %2 (UTC%3)
property string offsetFromUtc: conferenceInfo.timeZoneModel.offsetFromUtc > 0
? "+" + conferenceInfo.timeZoneModel.offsetFromUtc/3600
: conferenceInfo.timeZoneModel.offsetFromUtc/3600
+ //: from %1 to %2 (UTC%3)
text: qsTr("").arg(
conferenceInfo.dateTime.toLocaleString(Qt.locale(), "hh:mm")).arg(
conferenceInfo.endDateTime.toLocaleString(Qt.locale(), "hh:mm")).arg(offsetFromUtc)
diff --git a/Linphone/view/Page/Form/Register/RegisterPage.qml b/Linphone/view/Page/Form/Register/RegisterPage.qml
index c79ece1fc..10fc31ddc 100644
--- a/Linphone/view/Page/Form/Register/RegisterPage.qml
+++ b/Linphone/view/Page/Form/Register/RegisterPage.qml
@@ -15,6 +15,21 @@ LoginLayout {
readonly property string phoneNumber: phoneNumberInput.phoneNumber
readonly property string email: emailInput.text
+ Dialog {
+ id: phoneNumberNotAvailableDialog
+ //: Phone number validation not available
+ title: qsTr("phone_number_validation_not_available_title")
+ //: Phone number validation is not available, please use email account creation process
+ text: qsTr("phone_number_validation_not_available_text")
+ //: Register with an email
+ firstButtonText: qsTr("register_with_email_button")
+ onAccepted: {
+ bar.setCurrentIndex(1)
+ close()
+ }
+ onRejected: close()
+ }
+
Connections {
target: RegisterPageCpp
function onErrorInField(field, errorMessage) {
@@ -29,6 +44,9 @@ LoginLayout {
console.log("register failed", errorMessage)
otherErrorText.setText(errorMessage)
}
+ function onPhoneNumberValidationNotAvailable() {
+ phoneNumberNotAvailableDialog.open()
+ }
}
titleContent: [
@@ -99,8 +117,8 @@ LoginLayout {
spacing: Utils.getSizeWithScreenRatio(50)
TabBar {
- Layout.fillWidth: true
id: bar
+ Layout.fillWidth: true
spacing: Utils.getSizeWithScreenRatio(40)
Layout.rightMargin: Math.max(Utils.getSizeWithScreenRatio(5), Utils.getSizeWithScreenRatio(127 - ((127/(DefaultStyle.defaultWidth - mainWindow.minimumWidth))*(DefaultStyle.defaultWidth-mainWindow.width))))
// "S'inscrire avec un numéro de téléphone"