diff --git a/Linphone/core/call/CallCore.cpp b/Linphone/core/call/CallCore.cpp index 3058c61ce..8a15f4800 100644 --- a/Linphone/core/call/CallCore.cpp +++ b/Linphone/core/call/CallCore.cpp @@ -107,7 +107,8 @@ CallCore::CallCore(const std::shared_ptr &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 &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 &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 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 core = conference ? ConferenceCore::create(conference) : nullptr; mCallModelConnection->invokeToCore([this, core]() { setConference(core); }); }); diff --git a/Linphone/core/notifier/Notifier.cpp b/Linphone/core/notifier/Notifier.cpp index 4a12e56be..0175e2a10 100644 --- a/Linphone/core/notifier/Notifier.cpp +++ b/Linphone/core/notifier/Notifier.cpp @@ -369,6 +369,7 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr }; 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"; diff --git a/Linphone/core/search/MagicSearchList.cpp b/Linphone/core/search/MagicSearchList.cpp index bef53989a..984ae9c16 100644 --- a/Linphone/core/search/MagicSearchList.cpp +++ b/Linphone/core/search/MagicSearchList.cpp @@ -94,18 +94,29 @@ void MagicSearchList::setSelf(QSharedPointer me) { [this](const std::list> &results) { auto *contacts = new QList>(); 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 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 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; } diff --git a/Linphone/core/search/MagicSearchList.hpp b/Linphone/core/search/MagicSearchList.hpp index d546ed212..ea61dec1d 100644 --- a/Linphone/core/search/MagicSearchList.hpp +++ b/Linphone/core/search/MagicSearchList.hpp @@ -41,7 +41,7 @@ public: ~MagicSearchList(); void setSelf(QSharedPointer me); - void connectContact(FriendCore* data); + void connectContact(FriendCore *data); void setSearch(const QString &search); void setResults(const QList> &contacts); void add(QSharedPointer contact); @@ -55,6 +55,9 @@ public: int getMaxResults() const; void setMaxResults(int maxResults); + bool getShowMe() const; + void setShowMe(bool showMe); + virtual QHash 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 mMagicSearch; QSharedPointer> mModelConnection; diff --git a/Linphone/core/search/MagicSearchProxy.cpp b/Linphone/core/search/MagicSearchProxy.cpp index 106f6b4cf..3da478af7 100644 --- a/Linphone/core/search/MagicSearchProxy.cpp +++ b/Linphone/core/search/MagicSearchProxy.cpp @@ -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; } diff --git a/Linphone/core/search/MagicSearchProxy.hpp b/Linphone/core/search/MagicSearchProxy.hpp index e6d48d89c..66a71b6b9 100644 --- a/Linphone/core/search/MagicSearchProxy.hpp +++ b/Linphone/core/search/MagicSearchProxy.hpp @@ -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 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(); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 772bdb588..f372462bd 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -230,76 +230,96 @@ Bild löschen - + sip_address + SIP address SIP-Adresse - + + copied + Copied + Kopiert + + + + account_settings_sip_address_copied_message + Your SIP address has been copied in the clipboard + + + + + account_settings_sip_address_copied_error_message + Error copying your SIP address + + + + sip_address_display_name "Nom d'affichage Anzeigename - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." Der Name, der Ihren Kontakten während der Kommunikation angezeigt wird. - + manage_account_international_prefix Indicatif international* Internationale Vorwahl* - + manage_account_delete "Déconnecter mon compte" Konto trennen - + manage_account_delete_message Ihr Konto wird aus diesem Linphone-Client entfernt, bleibt jedoch auf Ihren anderen Geräten verbunden - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Vom Konto abmelden? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org Wenn Sie Ihr Konto dauerhaft löschen möchten, besuchen Sie: https://sip.linphone.org - + + error Erreur Fehler - + manage_account_device_remove "Supprimer" Löschen - + manage_account_device_remove_confirm_dialog %1 löschen? - + manage_account_device_last_connection "Dernière connexion:" Letzte Anmeldung: - + device_last_updated_time_no_info "No information" @@ -613,19 +633,19 @@ AllContactListView - + car_favorites_contacts_title "Favoris" Favoriten - + generic_address_picker_contacts_list_title 'Contacts' Kontakte - + generic_address_picker_suggestions_list_title "Suggestions" Vorschläge @@ -814,76 +834,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Aufnahme beendet - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Die Aufnahme wurde in der folgenden Datei gespeichert: %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandbreite: %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Verlustquote: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter-Puffer: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Videoauflösung: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None Nichts - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post-quantum ZRTP @@ -1122,67 +1142,67 @@ CallModel - + call_error_no_response_toast "No response" - + call_error_forbidden_resource_toast "403 : Forbidden resource" - + call_error_not_answered_toast "Request timeout" - + call_error_user_declined_toast "User declined the call" Der Benutzer hat den Anruf abgelehnt - + call_error_user_not_found_toast "User was not found" Benutzer nicht gefunden - + call_error_user_busy_toast "User is busy" Der Benutzer ist beschäftigt - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Der Benutzer kann Ihren Anruf nicht annehmen - + call_error_io_error_toast "Unavailable service or network error" Dienst nicht verfügbar oder Netzwerkfehler - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Vorübergehend nicht verfügbar - + call_error_server_timeout_toast "Server tiemout" Server-Zeitüberschreitung @@ -4296,7 +4316,7 @@ Error MagicSearchList - + device_id Telefon @@ -5008,13 +5028,13 @@ Error - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + new_message_alert_accessible_name New message on chatroom %1 diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index ffe5edeed..a1d78f477 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -230,76 +230,96 @@ Delete image - + sip_address + SIP address SIP address - + + copied + Copied + Copied + + + + account_settings_sip_address_copied_message + Your SIP address has been copied in the clipboard + Your SIP address has been copied in the clipboard + + + + account_settings_sip_address_copied_error_message + Error copying your SIP address + Error copying your SIP address + + + sip_address_display_name "Nom d'affichage Display name - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." The name displayed to your contacts during exchanges. - + manage_account_international_prefix Indicatif international* International code* - + manage_account_delete "Déconnecter mon compte" Disconnect my account - + manage_account_delete_message Your account will be removed from this Linphone client, but you will remain connected on your other clients - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Log out of the account? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org If you wish to permanently delete your account, go to: https://sip.linphone.org - + + error Erreur Error - + manage_account_device_remove "Supprimer" Delete - + manage_account_device_remove_confirm_dialog Delete %1? - + manage_account_device_last_connection "Dernière connexion:" Last login: - + device_last_updated_time_no_info "No information" No information @@ -608,19 +628,19 @@ AllContactListView - + car_favorites_contacts_title "Favoris" Favorites - + generic_address_picker_contacts_list_title 'Contacts' Contacts - + generic_address_picker_suggestions_list_title "Suggestions" Suggestions @@ -809,76 +829,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Recording ended - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Recording has been saved in file : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandwidth : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Loss rate: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter buffer : %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Video resolution: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post quantum ZRTP @@ -1117,67 +1137,67 @@ CallModel - + call_error_no_response_toast "No response" No response - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" Request timeout - + call_error_user_declined_toast "User declined the call" User declined the call - + call_error_user_not_found_toast "User was not found" User was not found - + call_error_user_busy_toast "User is busy" User is busy - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" User can't accept your call - + call_error_io_error_toast "Unavailable service or network error" Unavailable service or network error - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" User cannot be disturbed - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporarily unavailable - + call_error_server_timeout_toast "Server tiemout" Server tiemout @@ -4212,7 +4232,7 @@ Expiration : %1 MagicSearchList - + device_id Phone @@ -4915,13 +4935,13 @@ Expiration : %1 Conference invitation received ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. New messages received ! - + new_message_alert_accessible_name New message on chatroom %1 New message on chatroom %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 7a70cbfdc..42d98aa13 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -230,76 +230,96 @@ Supprimer l'image - + sip_address + SIP address Adresse SIP - + + copied + Copied + Copié + + + + account_settings_sip_address_copied_message + Your SIP address has been copied in the clipboard + Votre adresse SIP a été copié dans le presse-papiers + + + + account_settings_sip_address_copied_error_message + Error copying your SIP address + Erreur lors de la copie de votre adresse SIP + + + sip_address_display_name "Nom d'affichage Nom d'affichage - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." Le nom qui sera affiché à vos correspondants lors de vos échanges. - + manage_account_international_prefix Indicatif international* Indicatif international* - + manage_account_delete "Déconnecter mon compte" Déconnecter mon compte - + manage_account_delete_message Votre compte sera retiré de ce client linphone, mais vous restez connecté sur vos autres clients - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Se déconnecter du compte ? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org - + + error Erreur Erreur - + manage_account_device_remove "Supprimer" Supprimer - + manage_account_device_remove_confirm_dialog Supprimer %1 ? - + manage_account_device_last_connection "Dernière connexion:" Dernière connexion: - + device_last_updated_time_no_info "No information" Pas d'information @@ -608,19 +628,19 @@ AllContactListView - + car_favorites_contacts_title "Favoris" Favoris - + generic_address_picker_contacts_list_title 'Contacts' Contacts - + generic_address_picker_suggestions_list_title "Suggestions" Suggestions @@ -809,76 +829,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Enregistrement terminé - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" L'appel a été enregistré dans le fichier : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bande passante : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Taux de perte: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Tampon de gigue: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Définition vidéo : %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" ZRTP - Post quantique @@ -1117,67 +1137,67 @@ CallModel - + call_error_no_response_toast "No response" Pas de réponse - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" La requête a expiré - + call_error_user_declined_toast "User declined the call" Le correspondant a décliné l'appel - + call_error_user_not_found_toast "User was not found" Le correspondant n'a pas été trouvé - + call_error_user_busy_toast "User is busy" Le correspondant est occupé - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Le correspondant ne peut accepter votre appel - + call_error_io_error_toast "Unavailable service or network error" Service indisponible ou erreur réseau - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" Le correspondant ne peut être dérangé - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporairement indisponible - + call_error_server_timeout_toast "Server tiemout" Délai d'attente du serveur dépassé @@ -4212,7 +4232,7 @@ Expiration : %1 MagicSearchList - + device_id Téléphone @@ -4915,13 +4935,13 @@ Expiration : %1 Nouvelle invitation à une conférence ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. Nouveaux messages reçus ! - + new_message_alert_accessible_name New message on chatroom %1 Nouveau message sur la conversation %1 diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index 900d45729..f4045ceac 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -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 ¶ms, bool enable) { lInfo() << sLog() .arg("Updating call with video enabled and media direction set to %1") diff --git a/Linphone/model/call/CallModel.hpp b/Linphone/model/call/CallModel.hpp index 847f50f41..cdcc0b15d 100644 --- a/Linphone/model/call/CallModel.hpp +++ b/Linphone/model/call/CallModel.hpp @@ -82,7 +82,8 @@ public: LinphoneEnums::VideoSourceScreenSharingType getVideoSourceType() const; int getScreenSharingIndex() const; void setVideoSourceDescriptorModel(std::shared_ptr model = nullptr); - + void enableVideo(bool enable); + bool videoEnabled() const; static void activateLocalVideo(std::shared_ptr ¶ms, bool enable); void sendDtmf(const QString &dtmf); diff --git a/Linphone/view/Control/Display/Contact/AllContactListView.qml b/Linphone/view/Control/Display/Contact/AllContactListView.qml index 7c6b7d43c..2965d20b8 100644 --- a/Linphone/view/Control/Display/Contact/AllContactListView.qml +++ b/Linphone/view/Control/Display/Contact/AllContactListView.qml @@ -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 diff --git a/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml b/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml index d808f991b..95815f484 100644 --- a/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml +++ b/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml @@ -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 () { diff --git a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml index 8f70da2df..6c9345f9a 100644 --- a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml @@ -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 {