fix #LINQT-2130 enable video in conference for the participant to be able to see shared screen without activating camera

do not display notification if message already read

display notif when copying account sip address #LINQT-2126

prevent adding our own address in participants (fix #LINQT-2164)
This commit is contained in:
Gaelle Braud 2025-11-13 14:21:30 +01:00
parent bc5022c8f5
commit a0850b9967
14 changed files with 275 additions and 144 deletions

View file

@ -107,7 +107,8 @@ CallCore::CallCore(const std::shared_ptr<linphone::Call> &call) : QObject(nullpt
mCallModel->setSelf(mCallModel);
mDuration = call->getDuration();
mIsStarted = mDuration > 0;
auto videoDirection = call->getParams()->getVideoDirection();
auto callParams = call->getParams();
auto videoDirection = callParams->getVideoDirection();
mLocalVideoEnabled =
videoDirection == linphone::MediaDirection::SendOnly || videoDirection == linphone::MediaDirection::SendRecv;
auto remoteParams = call->getRemoteParams();
@ -133,7 +134,7 @@ CallCore::CallCore(const std::shared_ptr<linphone::Call> &call) : QObject(nullpt
mTransferState = LinphoneEnums::fromLinphone(call->getTransferState());
mLocalToken = Utils::coreStringToAppString(mCallModel->getLocalAtuhenticationToken());
mRemoteTokens = mCallModel->getRemoteAtuhenticationTokens();
mEncryption = LinphoneEnums::fromLinphone(call->getParams()->getMediaEncryption());
mEncryption = LinphoneEnums::fromLinphone(callParams->getMediaEncryption());
auto tokenVerified = call->getAuthenticationTokenVerified();
mIsMismatch = call->getZrtpCacheMismatchFlag();
mIsSecured = (mEncryption == LinphoneEnums::MediaEncryption::Zrtp && tokenVerified) ||
@ -160,7 +161,7 @@ CallCore::CallCore(const std::shared_ptr<linphone::Call> &call) : QObject(nullpt
mPaused = mState == LinphoneEnums::CallState::Pausing || mState == LinphoneEnums::CallState::Paused ||
mState == LinphoneEnums::CallState::PausedByRemote;
mRecording = call->getParams() && call->getParams()->isRecording();
mRecording = callParams && callParams->isRecording();
mRemoteRecording = call->getRemoteParams() && call->getRemoteParams()->isRecording();
auto settingsModel = SettingsModel::getInstance();
mMicrophoneVolume = call->getRecordVolume();
@ -344,6 +345,8 @@ void CallCore::setSelf(QSharedPointer<CallCore> me) {
});
mCallModelConnection->makeConnectToModel(&CallModel::conferenceChanged, [this]() {
auto conference = mCallModel->getMonitor()->getConference();
// Force enable video if in conference to handle screen sharing
if (conference && !mCallModel->videoEnabled()) mCallModel->enableVideo(true);
QSharedPointer<ConferenceCore> core = conference ? ConferenceCore::create(conference) : nullptr;
mCallModelConnection->invokeToCore([this, core]() { setConference(core); });
});

View file

@ -369,6 +369,7 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr<linphone::ChatRoom>
};
if (messages.size() == 1) { // Display only sender on mono message.
if (message->isRead()) return;
getMessage(message);
if (txt.isEmpty()) { // Do not notify message without content
qDebug() << "empty notif, return";

View file

@ -94,18 +94,29 @@ void MagicSearchList::setSelf(QSharedPointer<MagicSearchList> me) {
[this](const std::list<std::shared_ptr<linphone::SearchResult>> &results) {
auto *contacts = new QList<QSharedPointer<FriendCore>>();
auto ldapContacts = ToolModel::getLdapFriendList();
auto core = CoreModel::getInstance()->getCore();
auto userAddress = core->getDefaultAccount() && core->getDefaultAccount()->getParams()
? core->getDefaultAccount()->getParams()->getIdentityAddress()
: nullptr;
for (auto it : results) {
QSharedPointer<FriendCore> contact;
auto linphoneFriend = it->getFriend();
bool isStored = false;
if (linphoneFriend) {
if (!mShowMe && userAddress && userAddress->weakEqual(linphoneFriend->getAddress())) {
lWarning() << log().arg("do not show my own address in this contact list");
continue;
}
isStored =
(ldapContacts->findFriendByAddress(linphoneFriend->getAddress()) != linphoneFriend);
contact = FriendCore::create(linphoneFriend, isStored, it->getSourceFlags());
contacts->append(contact);
} else if (auto address = it->getAddress()) {
auto linphoneFriend = CoreModel::getInstance()->getCore()->createFriend();
if (!mShowMe && userAddress && userAddress->weakEqual(address)) {
lWarning() << log().arg("do not show my own address in this contact list");
continue;
}
auto linphoneFriend = core->createFriend();
linphoneFriend->setAddress(address);
contact = FriendCore::create(linphoneFriend, isStored, it->getSourceFlags());
auto displayName = Utils::coreStringToAppString(address->getDisplayName());
@ -125,7 +136,7 @@ void MagicSearchList::setSelf(QSharedPointer<MagicSearchList> me) {
contacts->append(contact);
} else if (!it->getPhoneNumber().empty()) {
auto phoneNumber = it->getPhoneNumber();
linphoneFriend = CoreModel::getInstance()->getCore()->createFriend();
linphoneFriend = core->createFriend();
linphoneFriend->addPhoneNumber(phoneNumber);
contact = FriendCore::create(linphoneFriend, isStored, it->getSourceFlags());
contact->setGivenName(Utils::coreStringToAppString(it->getPhoneNumber()));
@ -202,6 +213,17 @@ void MagicSearchList::setMaxResults(int maxResults) {
}
}
bool MagicSearchList::getShowMe() const {
return mShowMe;
}
void MagicSearchList::setShowMe(bool showMe) {
if (mShowMe != showMe) {
mShowMe = showMe;
emit showMeChanged(mShowMe);
}
}
LinphoneEnums::MagicSearchAggregation MagicSearchList::getAggregationFlag() const {
return mAggregationFlag;
}

View file

@ -41,7 +41,7 @@ public:
~MagicSearchList();
void setSelf(QSharedPointer<MagicSearchList> me);
void connectContact(FriendCore* data);
void connectContact(FriendCore *data);
void setSearch(const QString &search);
void setResults(const QList<QSharedPointer<FriendCore>> &contacts);
void add(QSharedPointer<FriendCore> contact);
@ -55,6 +55,9 @@ public:
int getMaxResults() const;
void setMaxResults(int maxResults);
bool getShowMe() const;
void setShowMe(bool showMe);
virtual QHash<int, QByteArray> roleNames() const override;
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
@ -68,6 +71,7 @@ signals:
void sourceFlagsChanged(int sourceFlags);
void aggregationFlagChanged(LinphoneEnums::MagicSearchAggregation flag);
void maxResultsChanged(int maxResults);
void showMeChanged(bool showMe);
void friendCreated(int index, FriendGui *data);
void friendStarredChanged();
@ -81,6 +85,7 @@ private:
LinphoneEnums::MagicSearchAggregation mAggregationFlag;
QString mSearchFilter;
int mMaxResults = -1;
bool mShowMe = false;
std::shared_ptr<MagicSearchModel> mMagicSearch;
QSharedPointer<SafeConnection<MagicSearchList, MagicSearchModel>> mModelConnection;

View file

@ -148,6 +148,14 @@ void MagicSearchProxy::setMaxResults(int flags) {
mList->setMaxResults(flags);
}
bool MagicSearchProxy::getShowMe() const {
return mList->getShowMe();
}
void MagicSearchProxy::setShowMe(bool showMe) {
mList->setShowMe(showMe);
}
MagicSearchProxy *MagicSearchProxy::getParentProxy() const {
return mParentProxy;
}

View file

@ -34,6 +34,7 @@ class MagicSearchProxy : public LimitProxy {
Q_PROPERTY(int sourceFlags READ getSourceFlags WRITE setSourceFlags NOTIFY sourceFlagsChanged)
Q_PROPERTY(int maxResults READ getMaxResults WRITE setMaxResults NOTIFY maxResultsChanged)
Q_PROPERTY(bool showMe READ getShowMe WRITE setShowMe NOTIFY showMeChanged)
Q_PROPERTY(LinphoneEnums::MagicSearchAggregation aggregationFlag READ getAggregationFlag WRITE setAggregationFlag
NOTIFY aggregationFlagChanged)
@ -60,6 +61,9 @@ public:
int getMaxResults() const;
void setMaxResults(int maxResults);
bool getShowMe() const;
void setShowMe(bool showMe);
MagicSearchProxy *getParentProxy() const;
void setList(QSharedPointer<MagicSearchList> list);
Q_INVOKABLE void setParentProxy(MagicSearchProxy *proxy);
@ -77,6 +81,7 @@ signals:
void sourceFlagsChanged(int sourceFlags);
void aggregationFlagChanged(LinphoneEnums::MagicSearchAggregation aggregationFlag);
void maxResultsChanged(int maxResults);
void showMeChanged(bool showMe);
void forceUpdate();
void localFriendCreated(int index);
void parentProxyChanged();

View file

@ -230,76 +230,96 @@
<translation>Bild löschen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="106"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="107"/>
<source>sip_address</source>
<extracomment>SIP address</extracomment>
<translation>SIP-Adresse</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="131"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="127"/>
<source>copied</source>
<extracomment>Copied</extracomment>
<translation type="unfinished">Kopiert</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="129"/>
<source>account_settings_sip_address_copied_message</source>
<extracomment>Your SIP address has been copied in the clipboard</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="133"/>
<source>account_settings_sip_address_copied_error_message</source>
<extracomment>Error copying your SIP address</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="143"/>
<source>sip_address_display_name</source>
<extracomment>&quot;Nom d&apos;affichage</extracomment>
<translation>Anzeigename</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="137"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="149"/>
<source>sip_address_display_name_explaination</source>
<extracomment>&quot;Le nom qui sera affiché à vos correspondants lors de vos échanges.&quot;</extracomment>
<translation>Der Name, der Ihren Kontakten während der Kommunikation angezeigt wird.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="155"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="167"/>
<source>manage_account_international_prefix</source>
<extracomment>Indicatif international*</extracomment>
<translation>Internationale Vorwahl*</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="181"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="193"/>
<source>manage_account_delete</source>
<extracomment>&quot;Déconnecter mon compte&quot;</extracomment>
<translation>Konto trennen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="189"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="201"/>
<source>manage_account_delete_message</source>
<translation>Ihr Konto wird aus diesem Linphone-Client entfernt, bleibt jedoch auf Ihren anderen Geräten verbunden</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="208"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="220"/>
<source>manage_account_dialog_remove_account_title</source>
<extracomment>&quot;Se déconnecter du compte ?&quot;</extracomment>
<translation>Vom Konto abmelden?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="210"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="222"/>
<source>manage_account_dialog_remove_account_message</source>
<extracomment>Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org</extracomment>
<translation>Wenn Sie Ihr Konto dauerhaft löschen möchten, besuchen Sie: https://sip.linphone.org</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="267"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="131"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="279"/>
<source>error</source>
<extracomment>Erreur</extracomment>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="305"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="317"/>
<source>manage_account_device_remove</source>
<extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Löschen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="314"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="326"/>
<source>manage_account_device_remove_confirm_dialog</source>
<translation>%1 löschen?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="328"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="340"/>
<source>manage_account_device_last_connection</source>
<extracomment>&quot;Dernière connexion:&quot;</extracomment>
<translation>Letzte Anmeldung:</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="346"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="358"/>
<source>device_last_updated_time_no_info</source>
<extracomment>&quot;No information&quot;</extracomment>
<translation type="unfinished"></translation>
@ -613,19 +633,19 @@
<context>
<name>AllContactListView</name>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="275"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="276"/>
<source>car_favorites_contacts_title</source>
<extracomment>&quot;Favoris&quot;</extracomment>
<translation>Favoriten</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="322"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="324"/>
<source>generic_address_picker_contacts_list_title</source>
<extracomment>&apos;Contacts&apos;</extracomment>
<translation>Kontakte</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="372"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="374"/>
<source>generic_address_picker_suggestions_list_title</source>
<extracomment>&quot;Suggestions&quot;</extracomment>
<translation>Vorschläge</translation>
@ -814,76 +834,76 @@
<context>
<name>CallCore</name>
<message>
<location filename="../../core/call/CallCore.cpp" line="212"/>
<location filename="../../core/call/CallCore.cpp" line="213"/>
<source>call_record_end_message</source>
<extracomment>&quot;Enregistrement terminé&quot;</extracomment>
<translation>Aufnahme beendet</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="214"/>
<location filename="../../core/call/CallCore.cpp" line="215"/>
<source>call_record_saved_in_file_message</source>
<extracomment>&quot;L&apos;appel a é enregistré dans le fichier : %1&quot;</extracomment>
<translation>Die Aufnahme wurde in der folgenden Datei gespeichert: %1</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="393"/>
<location filename="../../core/call/CallCore.cpp" line="418"/>
<location filename="../../core/call/CallCore.cpp" line="396"/>
<location filename="../../core/call/CallCore.cpp" line="421"/>
<source>call_stats_codec_label</source>
<extracomment>&quot;Codec: %1 / %2 kHz&quot;</extracomment>
<translation>Codec: %1 / %2 kHz</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="397"/>
<location filename="../../core/call/CallCore.cpp" line="421"/>
<location filename="../../core/call/CallCore.cpp" line="400"/>
<location filename="../../core/call/CallCore.cpp" line="424"/>
<source>call_stats_bandwidth_label</source>
<extracomment>&quot;Bande passante : %1 %2 kbits/s %3 %4 kbits/s&quot;</extracomment>
<translation>Bandbreite: %1 %2 kbits/s %3 %4 kbits/s</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="403"/>
<location filename="../../core/call/CallCore.cpp" line="426"/>
<location filename="../../core/call/CallCore.cpp" line="406"/>
<location filename="../../core/call/CallCore.cpp" line="429"/>
<source>call_stats_loss_rate_label</source>
<extracomment>&quot;Taux de perte: %1% %2%&quot;</extracomment>
<translation>Verlustquote: %1% %2%</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="408"/>
<location filename="../../core/call/CallCore.cpp" line="411"/>
<source>call_stats_jitter_buffer_label</source>
<extracomment>&quot;Tampon de gigue: %1 ms&quot;</extracomment>
<translation>Jitter-Puffer: %1 ms</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="435"/>
<location filename="../../core/call/CallCore.cpp" line="438"/>
<source>call_stats_resolution_label</source>
<extracomment>&quot;Définition vidéo : %1 %2 %3 %4&quot;</extracomment>
<translation>Videoauflösung: %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="441"/>
<location filename="../../core/call/CallCore.cpp" line="444"/>
<source>call_stats_fps_label</source>
<extracomment>&quot;FPS : %1 %2 %3 %4&quot;</extracomment>
<translation>FPS : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="654"/>
<location filename="../../core/call/CallCore.cpp" line="657"/>
<source>media_encryption_dtls</source>
<extracomment>DTLS</extracomment>
<translation>DTLS</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="657"/>
<location filename="../../core/call/CallCore.cpp" line="660"/>
<source>media_encryption_none</source>
<extracomment>None</extracomment>
<translation>Nichts</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="660"/>
<location filename="../../core/call/CallCore.cpp" line="663"/>
<source>media_encryption_srtp</source>
<extracomment>SRTP</extracomment>
<translation>SRTP</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="663"/>
<location filename="../../core/call/CallCore.cpp" line="666"/>
<source>media_encryption_post_quantum</source>
<extracomment>&quot;ZRTP - Post quantique&quot;</extracomment>
<translation>Post-quantum ZRTP</translation>
@ -1122,67 +1142,67 @@
<context>
<name>CallModel</name>
<message>
<location filename="../../model/call/CallModel.cpp" line="348"/>
<location filename="../../model/call/CallModel.cpp" line="359"/>
<source>call_error_no_response_toast</source>
<extracomment>&quot;No response&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="352"/>
<location filename="../../model/call/CallModel.cpp" line="363"/>
<source>call_error_forbidden_resource_toast</source>
<extracomment>&quot;403 : Forbidden resource&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="356"/>
<location filename="../../model/call/CallModel.cpp" line="367"/>
<source>call_error_not_answered_toast</source>
<extracomment>&quot;Request timeout&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="360"/>
<location filename="../../model/call/CallModel.cpp" line="371"/>
<source>call_error_user_declined_toast</source>
<extracomment>&quot;User declined the call&quot;</extracomment>
<translation>Der Benutzer hat den Anruf abgelehnt</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="364"/>
<location filename="../../model/call/CallModel.cpp" line="375"/>
<source>call_error_user_not_found_toast</source>
<extracomment>&quot;User was not found&quot;</extracomment>
<translation>Benutzer nicht gefunden</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="368"/>
<location filename="../../model/call/CallModel.cpp" line="379"/>
<source>call_error_user_busy_toast</source>
<extracomment>&quot;User is busy&quot;</extracomment>
<translation>Der Benutzer ist beschäftigt</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="372"/>
<location filename="../../model/call/CallModel.cpp" line="383"/>
<source>call_error_incompatible_media_params_toast</source>
<extracomment>&quot;User can&amp;apos;t accept your call&quot;</extracomment>
<translation>Der Benutzer kann Ihren Anruf nicht annehmen</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="376"/>
<location filename="../../model/call/CallModel.cpp" line="387"/>
<source>call_error_io_error_toast</source>
<extracomment>&quot;Unavailable service or network error&quot;</extracomment>
<translation>Dienst nicht verfügbar oder Netzwerkfehler</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="380"/>
<location filename="../../model/call/CallModel.cpp" line="391"/>
<source>call_error_do_not_disturb_toast</source>
<extracomment>&quot;Le correspondant ne peut être dérangé&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="384"/>
<location filename="../../model/call/CallModel.cpp" line="395"/>
<source>call_error_temporarily_unavailable_toast</source>
<extracomment>&quot;Temporarily unavailable&quot;</extracomment>
<translation>Vorübergehend nicht verfügbar</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="388"/>
<location filename="../../model/call/CallModel.cpp" line="399"/>
<source>call_error_server_timeout_toast</source>
<extracomment>&quot;Server tiemout&quot;</extracomment>
<translation>Server-Zeitüberschreitung</translation>
@ -4296,7 +4316,7 @@ Error</extracomment>
<context>
<name>MagicSearchList</name>
<message>
<location filename="../../core/search/MagicSearchList.cpp" line="132"/>
<location filename="../../core/search/MagicSearchList.cpp" line="143"/>
<source>device_id</source>
<translation>Telefon</translation>
</message>
@ -5008,13 +5028,13 @@ Error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<location filename="../../core/notifier/Notifier.cpp" line="389"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="416"/>
<location filename="../../core/notifier/Notifier.cpp" line="417"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation type="unfinished"></translation>

View file

@ -230,76 +230,96 @@
<translation>Delete image</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="106"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="107"/>
<source>sip_address</source>
<extracomment>SIP address</extracomment>
<translation>SIP address</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="131"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="127"/>
<source>copied</source>
<extracomment>Copied</extracomment>
<translation>Copied</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="129"/>
<source>account_settings_sip_address_copied_message</source>
<extracomment>Your SIP address has been copied in the clipboard</extracomment>
<translation>Your SIP address has been copied in the clipboard</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="133"/>
<source>account_settings_sip_address_copied_error_message</source>
<extracomment>Error copying your SIP address</extracomment>
<translation>Error copying your SIP address</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="143"/>
<source>sip_address_display_name</source>
<extracomment>&quot;Nom d&apos;affichage</extracomment>
<translation>Display name</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="137"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="149"/>
<source>sip_address_display_name_explaination</source>
<extracomment>&quot;Le nom qui sera affiché à vos correspondants lors de vos échanges.&quot;</extracomment>
<translation>The name displayed to your contacts during exchanges.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="155"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="167"/>
<source>manage_account_international_prefix</source>
<extracomment>Indicatif international*</extracomment>
<translation>International code*</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="181"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="193"/>
<source>manage_account_delete</source>
<extracomment>&quot;Déconnecter mon compte&quot;</extracomment>
<translation>Disconnect my account</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="189"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="201"/>
<source>manage_account_delete_message</source>
<translation>Your account will be removed from this Linphone client, but you will remain connected on your other clients</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="208"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="220"/>
<source>manage_account_dialog_remove_account_title</source>
<extracomment>&quot;Se déconnecter du compte ?&quot;</extracomment>
<translation>Log out of the account?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="210"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="222"/>
<source>manage_account_dialog_remove_account_message</source>
<extracomment>Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org</extracomment>
<translation>If you wish to permanently delete your account, go to: https://sip.linphone.org</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="267"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="131"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="279"/>
<source>error</source>
<extracomment>Erreur</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="305"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="317"/>
<source>manage_account_device_remove</source>
<extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Delete</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="314"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="326"/>
<source>manage_account_device_remove_confirm_dialog</source>
<translation>Delete %1?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="328"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="340"/>
<source>manage_account_device_last_connection</source>
<extracomment>&quot;Dernière connexion:&quot;</extracomment>
<translation>Last login:</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="346"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="358"/>
<source>device_last_updated_time_no_info</source>
<extracomment>&quot;No information&quot;</extracomment>
<translation>No information</translation>
@ -608,19 +628,19 @@
<context>
<name>AllContactListView</name>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="275"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="276"/>
<source>car_favorites_contacts_title</source>
<extracomment>&quot;Favoris&quot;</extracomment>
<translation>Favorites</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="322"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="324"/>
<source>generic_address_picker_contacts_list_title</source>
<extracomment>&apos;Contacts&apos;</extracomment>
<translation>Contacts</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="372"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="374"/>
<source>generic_address_picker_suggestions_list_title</source>
<extracomment>&quot;Suggestions&quot;</extracomment>
<translation>Suggestions</translation>
@ -809,76 +829,76 @@
<context>
<name>CallCore</name>
<message>
<location filename="../../core/call/CallCore.cpp" line="212"/>
<location filename="../../core/call/CallCore.cpp" line="213"/>
<source>call_record_end_message</source>
<extracomment>&quot;Enregistrement terminé&quot;</extracomment>
<translation>Recording ended</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="214"/>
<location filename="../../core/call/CallCore.cpp" line="215"/>
<source>call_record_saved_in_file_message</source>
<extracomment>&quot;L&apos;appel a é enregistré dans le fichier : %1&quot;</extracomment>
<translation>Recording has been saved in file : %1</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="393"/>
<location filename="../../core/call/CallCore.cpp" line="418"/>
<location filename="../../core/call/CallCore.cpp" line="396"/>
<location filename="../../core/call/CallCore.cpp" line="421"/>
<source>call_stats_codec_label</source>
<extracomment>&quot;Codec: %1 / %2 kHz&quot;</extracomment>
<translation>Codec: %1 / %2 kHz</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="397"/>
<location filename="../../core/call/CallCore.cpp" line="421"/>
<location filename="../../core/call/CallCore.cpp" line="400"/>
<location filename="../../core/call/CallCore.cpp" line="424"/>
<source>call_stats_bandwidth_label</source>
<extracomment>&quot;Bande passante : %1 %2 kbits/s %3 %4 kbits/s&quot;</extracomment>
<translation>Bandwidth : %1 %2 kbits/s %3 %4 kbits/s</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="403"/>
<location filename="../../core/call/CallCore.cpp" line="426"/>
<location filename="../../core/call/CallCore.cpp" line="406"/>
<location filename="../../core/call/CallCore.cpp" line="429"/>
<source>call_stats_loss_rate_label</source>
<extracomment>&quot;Taux de perte: %1% %2%&quot;</extracomment>
<translation>Loss rate: %1% %2%</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="408"/>
<location filename="../../core/call/CallCore.cpp" line="411"/>
<source>call_stats_jitter_buffer_label</source>
<extracomment>&quot;Tampon de gigue: %1 ms&quot;</extracomment>
<translation>Jitter buffer : %1 ms</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="435"/>
<location filename="../../core/call/CallCore.cpp" line="438"/>
<source>call_stats_resolution_label</source>
<extracomment>&quot;Définition vidéo : %1 %2 %3 %4&quot;</extracomment>
<translation>Video resolution: %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="441"/>
<location filename="../../core/call/CallCore.cpp" line="444"/>
<source>call_stats_fps_label</source>
<extracomment>&quot;FPS : %1 %2 %3 %4&quot;</extracomment>
<translation>FPS : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="654"/>
<location filename="../../core/call/CallCore.cpp" line="657"/>
<source>media_encryption_dtls</source>
<extracomment>DTLS</extracomment>
<translation>DTLS</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="657"/>
<location filename="../../core/call/CallCore.cpp" line="660"/>
<source>media_encryption_none</source>
<extracomment>None</extracomment>
<translation>None</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="660"/>
<location filename="../../core/call/CallCore.cpp" line="663"/>
<source>media_encryption_srtp</source>
<extracomment>SRTP</extracomment>
<translation>SRTP</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="663"/>
<location filename="../../core/call/CallCore.cpp" line="666"/>
<source>media_encryption_post_quantum</source>
<extracomment>&quot;ZRTP - Post quantique&quot;</extracomment>
<translation>Post quantum ZRTP</translation>
@ -1117,67 +1137,67 @@
<context>
<name>CallModel</name>
<message>
<location filename="../../model/call/CallModel.cpp" line="348"/>
<location filename="../../model/call/CallModel.cpp" line="359"/>
<source>call_error_no_response_toast</source>
<extracomment>&quot;No response&quot;</extracomment>
<translation>No response</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="352"/>
<location filename="../../model/call/CallModel.cpp" line="363"/>
<source>call_error_forbidden_resource_toast</source>
<extracomment>&quot;403 : Forbidden resource&quot;</extracomment>
<translation>403 : Forbidden resource</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="356"/>
<location filename="../../model/call/CallModel.cpp" line="367"/>
<source>call_error_not_answered_toast</source>
<extracomment>&quot;Request timeout&quot;</extracomment>
<translation>Request timeout</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="360"/>
<location filename="../../model/call/CallModel.cpp" line="371"/>
<source>call_error_user_declined_toast</source>
<extracomment>&quot;User declined the call&quot;</extracomment>
<translation>User declined the call</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="364"/>
<location filename="../../model/call/CallModel.cpp" line="375"/>
<source>call_error_user_not_found_toast</source>
<extracomment>&quot;User was not found&quot;</extracomment>
<translation>User was not found</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="368"/>
<location filename="../../model/call/CallModel.cpp" line="379"/>
<source>call_error_user_busy_toast</source>
<extracomment>&quot;User is busy&quot;</extracomment>
<translation>User is busy</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="372"/>
<location filename="../../model/call/CallModel.cpp" line="383"/>
<source>call_error_incompatible_media_params_toast</source>
<extracomment>&quot;User can&amp;apos;t accept your call&quot;</extracomment>
<translation>User can&apos;t accept your call</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="376"/>
<location filename="../../model/call/CallModel.cpp" line="387"/>
<source>call_error_io_error_toast</source>
<extracomment>&quot;Unavailable service or network error&quot;</extracomment>
<translation>Unavailable service or network error</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="380"/>
<location filename="../../model/call/CallModel.cpp" line="391"/>
<source>call_error_do_not_disturb_toast</source>
<extracomment>&quot;Le correspondant ne peut être dérangé&quot;</extracomment>
<translation>User cannot be disturbed</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="384"/>
<location filename="../../model/call/CallModel.cpp" line="395"/>
<source>call_error_temporarily_unavailable_toast</source>
<extracomment>&quot;Temporarily unavailable&quot;</extracomment>
<translation>Temporarily unavailable</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="388"/>
<location filename="../../model/call/CallModel.cpp" line="399"/>
<source>call_error_server_timeout_toast</source>
<extracomment>&quot;Server tiemout&quot;</extracomment>
<translation>Server tiemout</translation>
@ -4212,7 +4232,7 @@ Expiration : %1</translation>
<context>
<name>MagicSearchList</name>
<message>
<location filename="../../core/search/MagicSearchList.cpp" line="132"/>
<location filename="../../core/search/MagicSearchList.cpp" line="143"/>
<source>device_id</source>
<translation>Phone</translation>
</message>
@ -4915,13 +4935,13 @@ Expiration : %1</translation>
<translation>Conference invitation received !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<location filename="../../core/notifier/Notifier.cpp" line="389"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>New messages received !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="416"/>
<location filename="../../core/notifier/Notifier.cpp" line="417"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>New message on chatroom %1</translation>

View file

@ -230,76 +230,96 @@
<translation>Supprimer l&apos;image</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="106"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="107"/>
<source>sip_address</source>
<extracomment>SIP address</extracomment>
<translation>Adresse SIP</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="131"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="127"/>
<source>copied</source>
<extracomment>Copied</extracomment>
<translation>Copié</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="129"/>
<source>account_settings_sip_address_copied_message</source>
<extracomment>Your SIP address has been copied in the clipboard</extracomment>
<translation>Votre adresse SIP a é copié dans le presse-papiers</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="133"/>
<source>account_settings_sip_address_copied_error_message</source>
<extracomment>Error copying your SIP address</extracomment>
<translation>Erreur lors de la copie de votre adresse SIP</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="143"/>
<source>sip_address_display_name</source>
<extracomment>&quot;Nom d&apos;affichage</extracomment>
<translation>Nom d&apos;affichage</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="137"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="149"/>
<source>sip_address_display_name_explaination</source>
<extracomment>&quot;Le nom qui sera affiché à vos correspondants lors de vos échanges.&quot;</extracomment>
<translation>Le nom qui sera affiché à vos correspondants lors de vos échanges.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="155"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="167"/>
<source>manage_account_international_prefix</source>
<extracomment>Indicatif international*</extracomment>
<translation>Indicatif international*</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="181"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="193"/>
<source>manage_account_delete</source>
<extracomment>&quot;Déconnecter mon compte&quot;</extracomment>
<translation>Déconnecter mon compte</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="189"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="201"/>
<source>manage_account_delete_message</source>
<translation>Votre compte sera retiré de ce client linphone, mais vous restez connecté sur vos autres clients</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="208"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="220"/>
<source>manage_account_dialog_remove_account_title</source>
<extracomment>&quot;Se déconnecter du compte ?&quot;</extracomment>
<translation>Se déconnecter du compte ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="210"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="222"/>
<source>manage_account_dialog_remove_account_message</source>
<extracomment>Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org</extracomment>
<translation>Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="267"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="131"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="279"/>
<source>error</source>
<extracomment>Erreur</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="305"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="317"/>
<source>manage_account_device_remove</source>
<extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="314"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="326"/>
<source>manage_account_device_remove_confirm_dialog</source>
<translation>Supprimer %1 ?</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="328"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="340"/>
<source>manage_account_device_last_connection</source>
<extracomment>&quot;Dernière connexion:&quot;</extracomment>
<translation>Dernière connexion:</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="346"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml" line="358"/>
<source>device_last_updated_time_no_info</source>
<extracomment>&quot;No information&quot;</extracomment>
<translation>Pas d&apos;information</translation>
@ -608,19 +628,19 @@
<context>
<name>AllContactListView</name>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="275"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="276"/>
<source>car_favorites_contacts_title</source>
<extracomment>&quot;Favoris&quot;</extracomment>
<translation>Favoris</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="322"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="324"/>
<source>generic_address_picker_contacts_list_title</source>
<extracomment>&apos;Contacts&apos;</extracomment>
<translation>Contacts</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="372"/>
<location filename="../../view/Control/Display/Contact/AllContactListView.qml" line="374"/>
<source>generic_address_picker_suggestions_list_title</source>
<extracomment>&quot;Suggestions&quot;</extracomment>
<translation>Suggestions</translation>
@ -809,76 +829,76 @@
<context>
<name>CallCore</name>
<message>
<location filename="../../core/call/CallCore.cpp" line="212"/>
<location filename="../../core/call/CallCore.cpp" line="213"/>
<source>call_record_end_message</source>
<extracomment>&quot;Enregistrement terminé&quot;</extracomment>
<translation>Enregistrement terminé</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="214"/>
<location filename="../../core/call/CallCore.cpp" line="215"/>
<source>call_record_saved_in_file_message</source>
<extracomment>&quot;L&apos;appel a é enregistré dans le fichier : %1&quot;</extracomment>
<translation>L&apos;appel a é enregistré dans le fichier : %1</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="393"/>
<location filename="../../core/call/CallCore.cpp" line="418"/>
<location filename="../../core/call/CallCore.cpp" line="396"/>
<location filename="../../core/call/CallCore.cpp" line="421"/>
<source>call_stats_codec_label</source>
<extracomment>&quot;Codec: %1 / %2 kHz&quot;</extracomment>
<translation>Codec: %1 / %2 kHz</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="397"/>
<location filename="../../core/call/CallCore.cpp" line="421"/>
<location filename="../../core/call/CallCore.cpp" line="400"/>
<location filename="../../core/call/CallCore.cpp" line="424"/>
<source>call_stats_bandwidth_label</source>
<extracomment>&quot;Bande passante : %1 %2 kbits/s %3 %4 kbits/s&quot;</extracomment>
<translation>Bande passante : %1 %2 kbits/s %3 %4 kbits/s</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="403"/>
<location filename="../../core/call/CallCore.cpp" line="426"/>
<location filename="../../core/call/CallCore.cpp" line="406"/>
<location filename="../../core/call/CallCore.cpp" line="429"/>
<source>call_stats_loss_rate_label</source>
<extracomment>&quot;Taux de perte: %1% %2%&quot;</extracomment>
<translation>Taux de perte: %1% %2%</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="408"/>
<location filename="../../core/call/CallCore.cpp" line="411"/>
<source>call_stats_jitter_buffer_label</source>
<extracomment>&quot;Tampon de gigue: %1 ms&quot;</extracomment>
<translation>Tampon de gigue: %1 ms</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="435"/>
<location filename="../../core/call/CallCore.cpp" line="438"/>
<source>call_stats_resolution_label</source>
<extracomment>&quot;Définition vidéo : %1 %2 %3 %4&quot;</extracomment>
<translation>Définition vidéo : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="441"/>
<location filename="../../core/call/CallCore.cpp" line="444"/>
<source>call_stats_fps_label</source>
<extracomment>&quot;FPS : %1 %2 %3 %4&quot;</extracomment>
<translation>FPS : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="654"/>
<location filename="../../core/call/CallCore.cpp" line="657"/>
<source>media_encryption_dtls</source>
<extracomment>DTLS</extracomment>
<translation>DTLS</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="657"/>
<location filename="../../core/call/CallCore.cpp" line="660"/>
<source>media_encryption_none</source>
<extracomment>None</extracomment>
<translation>None</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="660"/>
<location filename="../../core/call/CallCore.cpp" line="663"/>
<source>media_encryption_srtp</source>
<extracomment>SRTP</extracomment>
<translation>SRTP</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="663"/>
<location filename="../../core/call/CallCore.cpp" line="666"/>
<source>media_encryption_post_quantum</source>
<extracomment>&quot;ZRTP - Post quantique&quot;</extracomment>
<translation>ZRTP - Post quantique</translation>
@ -1117,67 +1137,67 @@
<context>
<name>CallModel</name>
<message>
<location filename="../../model/call/CallModel.cpp" line="348"/>
<location filename="../../model/call/CallModel.cpp" line="359"/>
<source>call_error_no_response_toast</source>
<extracomment>&quot;No response&quot;</extracomment>
<translation>Pas de réponse</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="352"/>
<location filename="../../model/call/CallModel.cpp" line="363"/>
<source>call_error_forbidden_resource_toast</source>
<extracomment>&quot;403 : Forbidden resource&quot;</extracomment>
<translation>403 : Forbidden resource</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="356"/>
<location filename="../../model/call/CallModel.cpp" line="367"/>
<source>call_error_not_answered_toast</source>
<extracomment>&quot;Request timeout&quot;</extracomment>
<translation>La requête a expiré</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="360"/>
<location filename="../../model/call/CallModel.cpp" line="371"/>
<source>call_error_user_declined_toast</source>
<extracomment>&quot;User declined the call&quot;</extracomment>
<translation>Le correspondant a décliné l&apos;appel</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="364"/>
<location filename="../../model/call/CallModel.cpp" line="375"/>
<source>call_error_user_not_found_toast</source>
<extracomment>&quot;User was not found&quot;</extracomment>
<translation>Le correspondant n&apos;a pas é trouvé</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="368"/>
<location filename="../../model/call/CallModel.cpp" line="379"/>
<source>call_error_user_busy_toast</source>
<extracomment>&quot;User is busy&quot;</extracomment>
<translation>Le correspondant est occupé</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="372"/>
<location filename="../../model/call/CallModel.cpp" line="383"/>
<source>call_error_incompatible_media_params_toast</source>
<extracomment>&quot;User can&amp;apos;t accept your call&quot;</extracomment>
<translation>Le correspondant ne peut accepter votre appel</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="376"/>
<location filename="../../model/call/CallModel.cpp" line="387"/>
<source>call_error_io_error_toast</source>
<extracomment>&quot;Unavailable service or network error&quot;</extracomment>
<translation>Service indisponible ou erreur réseau</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="380"/>
<location filename="../../model/call/CallModel.cpp" line="391"/>
<source>call_error_do_not_disturb_toast</source>
<extracomment>&quot;Le correspondant ne peut être dérangé&quot;</extracomment>
<translation>Le correspondant ne peut être dérangé</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="384"/>
<location filename="../../model/call/CallModel.cpp" line="395"/>
<source>call_error_temporarily_unavailable_toast</source>
<extracomment>&quot;Temporarily unavailable&quot;</extracomment>
<translation>Temporairement indisponible</translation>
</message>
<message>
<location filename="../../model/call/CallModel.cpp" line="388"/>
<location filename="../../model/call/CallModel.cpp" line="399"/>
<source>call_error_server_timeout_toast</source>
<extracomment>&quot;Server tiemout&quot;</extracomment>
<translation>Délai d&apos;attente du serveur dépassé</translation>
@ -4212,7 +4232,7 @@ Expiration : %1</translation>
<context>
<name>MagicSearchList</name>
<message>
<location filename="../../core/search/MagicSearchList.cpp" line="132"/>
<location filename="../../core/search/MagicSearchList.cpp" line="143"/>
<source>device_id</source>
<translation>Téléphone</translation>
</message>
@ -4915,13 +4935,13 @@ Expiration : %1</translation>
<translation>Nouvelle invitation à une conférence !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<location filename="../../core/notifier/Notifier.cpp" line="389"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>Nouveaux messages reçus !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="416"/>
<location filename="../../core/notifier/Notifier.cpp" line="417"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>Nouveau message sur la conversation %1</translation>

View file

@ -128,6 +128,17 @@ void CallModel::setSpeakerMuted(bool isMuted) {
emit speakerMutedChanged(isMuted);
}
void CallModel::enableVideo(bool enable) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
auto params = CoreModel::getInstance()->getCore()->createCallParams(mMonitor);
params->enableVideo(enable);
mMonitor->update(params);
}
bool CallModel::videoEnabled() const {
return mMonitor->getParams()->videoEnabled();
}
void CallModel::activateLocalVideo(std::shared_ptr<linphone::CallParams> &params, bool enable) {
lInfo() << sLog()
.arg("Updating call with video enabled and media direction set to %1")

View file

@ -82,7 +82,8 @@ public:
LinphoneEnums::VideoSourceScreenSharingType getVideoSourceType() const;
int getScreenSharingIndex() const;
void setVideoSourceDescriptorModel(std::shared_ptr<VideoSourceDescriptorModel> model = nullptr);
void enableVideo(bool enable);
bool videoEnabled() const;
static void activateLocalVideo(std::shared_ptr<linphone::CallParams> &params, bool enable);
void sendDtmf(const QString &dtmf);

View file

@ -18,6 +18,7 @@ Flickable {
property bool showContactMenu: true // Display the dot menu for contacts.
property bool showFavorites: true // Display the favorites in the header
property bool hideSuggestions: false // Hide not stored contacts (not suggestions)
property bool showMe: true // Wether to display current account address or not (disabled for adding participants)
property string highlightText: searchText // Bold characters in Display name.
property var sourceFlags: LinphoneEnums.MagicSearchSource.All
@ -295,6 +296,7 @@ Flickable {
property MagicSearchProxy proxy: MagicSearchProxy {
id: favoritesProxy
parentProxy: mainItem.mainModel
showMe: mainItem.showMe
filterType: MagicSearchProxy.FilteringTypes.Favorites
}
model: mainItem.showFavorites

View file

@ -161,6 +161,7 @@ FocusScope {
itemsRightMargin: Utils.getSizeWithScreenRatio(28)
multiSelectionEnabled: true
showContactMenu: false
showMe: false
confInfoGui: mainItem.conferenceInfoGui
selectedContacts: mainItem.selectedParticipants
onSelectedContactsChanged: Qt.callLater(function () {

View file

@ -103,6 +103,7 @@ AbstractSettingsLayout {
spacing: Utils.getSizeWithScreenRatio(5)
Text {
Layout.alignment: Qt.AlignLeft
//: SIP address
text: "%1 :".arg(qsTr("sip_address"))
color: DefaultStyle.main2_600
font: Typography.p2l
@ -120,7 +121,18 @@ AbstractSettingsLayout {
Layout.alignment: Qt.AlignRight
icon.source: AppIcons.copy
style: ButtonStyle.noBackground
onClicked: UtilsCpp.copyToClipboard(model.core.identityAddress)
onClicked: {
if (UtilsCpp.copyToClipboard(model.core.identityAddress)) {
//: Copied
UtilsCpp.showInformationPopup(qsTr("copied"),
//: Your SIP address has been copied in the clipboard
qsTr("account_settings_sip_address_copied_message"))
} else {
UtilsCpp.showInformationPopup(qsTr("error"),
//: Error copying your SIP address
qsTr("account_settings_sip_address_copied_error_message"))
}
}
}
}
ColumnLayout {