From bbae9ecb4c926f52ab503b46b904fd0031173829 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Thu, 27 Jul 2023 14:03:05 +0200 Subject: [PATCH] - Add an hidden option to activate ephemeral on chat creation (create_ephemeral_chat_rooms=) - Add a placeholder in contacts for display name and resize empty box to placeholder size. - Fix account name alignment. - Hide records menu if option has been deactivated. --- linphone-app/assets/languages/cs.ts | 5 +++++ linphone-app/assets/languages/da.ts | 5 +++++ linphone-app/assets/languages/de.ts | 7 ++++++- linphone-app/assets/languages/en.ts | 5 +++++ linphone-app/assets/languages/es.ts | 5 +++++ linphone-app/assets/languages/fr_FR.ts | 5 +++++ linphone-app/assets/languages/hu.ts | 5 +++++ linphone-app/assets/languages/it.ts | 5 +++++ linphone-app/assets/languages/ja.ts | 5 +++++ linphone-app/assets/languages/lt.ts | 5 +++++ linphone-app/assets/languages/pt_BR.ts | 5 +++++ linphone-app/assets/languages/ru.ts | 5 +++++ linphone-app/assets/languages/sv.ts | 5 +++++ linphone-app/assets/languages/tr.ts | 5 +++++ linphone-app/assets/languages/uk.ts | 5 +++++ linphone-app/assets/languages/zh_CN.ts | 5 +++++ linphone-app/src/components/calls/CallsListModel.cpp | 10 ++++++++++ .../src/components/settings/SettingsModel.cpp | 11 +++++++++++ .../src/components/settings/SettingsModel.hpp | 7 ++++++- .../ui/modules/Common/Form/TransparentTextInput.qml | 2 +- .../ui/modules/Linphone/Account/AccountStatus.qml | 6 +++--- linphone-app/ui/views/App/Main/ContactEdit.qml | 2 ++ linphone-app/ui/views/App/Main/MainWindowMenuBar.qml | 3 ++- .../ui/views/App/Main/MainWindowTopMenuBar.qml | 1 + 24 files changed, 117 insertions(+), 7 deletions(-) diff --git a/linphone-app/assets/languages/cs.ts b/linphone-app/assets/languages/cs.ts index cb0e3f845..cbcac7010 100644 --- a/linphone-app/assets/languages/cs.ts +++ b/linphone-app/assets/languages/cs.ts @@ -1008,6 +1008,11 @@ 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/da.ts b/linphone-app/assets/languages/da.ts index e2a07bd4b..cc3cffce7 100644 --- a/linphone-app/assets/languages/da.ts +++ b/linphone-app/assets/languages/da.ts @@ -1003,6 +1003,11 @@ Server url ikke konfigureret. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/de.ts b/linphone-app/assets/languages/de.ts index 767580fcb..c05a5e760 100644 --- a/linphone-app/assets/languages/de.ts +++ b/linphone-app/assets/languages/de.ts @@ -625,7 +625,7 @@ Server URL ist nicht konfiguriert. icsCancelledMeetingInvite 'Meeting has been cancelled' : ICS title for a cancelled invitation. - + Das Treffen wurde storniert @@ -1003,6 +1003,11 @@ Server URL ist nicht konfiguriert. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/en.ts b/linphone-app/assets/languages/en.ts index fa04c0f46..84619a2c7 100644 --- a/linphone-app/assets/languages/en.ts +++ b/linphone-app/assets/languages/en.ts @@ -1003,6 +1003,11 @@ Server URL not configured. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact USERNAME(S) + + displayName + 'Display Name' : placeholder for setting display name on a contact + Display Name + Contacts diff --git a/linphone-app/assets/languages/es.ts b/linphone-app/assets/languages/es.ts index 36182ccea..42702c9b2 100644 --- a/linphone-app/assets/languages/es.ts +++ b/linphone-app/assets/languages/es.ts @@ -1003,6 +1003,11 @@ URL del servidor no configurada. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/fr_FR.ts b/linphone-app/assets/languages/fr_FR.ts index 9a77aa04a..79682359f 100644 --- a/linphone-app/assets/languages/fr_FR.ts +++ b/linphone-app/assets/languages/fr_FR.ts @@ -1003,6 +1003,11 @@ URL du serveur non configurée. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact Nom(s) d'utilisateur + + displayName + 'Display Name' : placeholder for setting display name on a contact + Nom d'affichage + Contacts diff --git a/linphone-app/assets/languages/hu.ts b/linphone-app/assets/languages/hu.ts index cc3b1fd78..ba3537cab 100644 --- a/linphone-app/assets/languages/hu.ts +++ b/linphone-app/assets/languages/hu.ts @@ -997,6 +997,11 @@ A kiszolgáló URL-je nincs konfigurálva. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/it.ts b/linphone-app/assets/languages/it.ts index 98039e43d..5173999c4 100644 --- a/linphone-app/assets/languages/it.ts +++ b/linphone-app/assets/languages/it.ts @@ -1003,6 +1003,11 @@ URL del server non configurato. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/ja.ts b/linphone-app/assets/languages/ja.ts index a9fbe1212..7825a1c1e 100644 --- a/linphone-app/assets/languages/ja.ts +++ b/linphone-app/assets/languages/ja.ts @@ -997,6 +997,11 @@ 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/lt.ts b/linphone-app/assets/languages/lt.ts index 5d5184fb5..f015fd728 100644 --- a/linphone-app/assets/languages/lt.ts +++ b/linphone-app/assets/languages/lt.ts @@ -1009,6 +1009,11 @@ Nesukonfigūruotas serverio url. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/pt_BR.ts b/linphone-app/assets/languages/pt_BR.ts index c6948365b..fd9f3e1e9 100644 --- a/linphone-app/assets/languages/pt_BR.ts +++ b/linphone-app/assets/languages/pt_BR.ts @@ -1003,6 +1003,11 @@ URL do servidor não configurado. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/ru.ts b/linphone-app/assets/languages/ru.ts index 4de374f52..24a89a2d3 100644 --- a/linphone-app/assets/languages/ru.ts +++ b/linphone-app/assets/languages/ru.ts @@ -1009,6 +1009,11 @@ 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/sv.ts b/linphone-app/assets/languages/sv.ts index 7afff6c73..916df6c6a 100644 --- a/linphone-app/assets/languages/sv.ts +++ b/linphone-app/assets/languages/sv.ts @@ -1003,6 +1003,11 @@ Serverwebbadressen är inte konfigurerad. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/tr.ts b/linphone-app/assets/languages/tr.ts index 432d87649..dc8a0e5f2 100644 --- a/linphone-app/assets/languages/tr.ts +++ b/linphone-app/assets/languages/tr.ts @@ -997,6 +997,11 @@ Sunucu url'si yapılandırılmadı. 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/uk.ts b/linphone-app/assets/languages/uk.ts index be6b43132..442a6cb2e 100644 --- a/linphone-app/assets/languages/uk.ts +++ b/linphone-app/assets/languages/uk.ts @@ -1009,6 +1009,11 @@ 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/assets/languages/zh_CN.ts b/linphone-app/assets/languages/zh_CN.ts index 1de29a6ac..553bef147 100644 --- a/linphone-app/assets/languages/zh_CN.ts +++ b/linphone-app/assets/languages/zh_CN.ts @@ -997,6 +997,11 @@ 'USERNAME(S)' : label for sip accounts when only username is displayed n contact + + displayName + 'Display Name' : placeholder for setting display name on a contact + + Contacts diff --git a/linphone-app/src/components/calls/CallsListModel.cpp b/linphone-app/src/components/calls/CallsListModel.cpp index 93663e1a7..d7d1437be 100644 --- a/linphone-app/src/components/calls/CallsListModel.cpp +++ b/linphone-app/src/components/calls/CallsListModel.cpp @@ -260,6 +260,9 @@ bool CallsListModel::createSecureChat (const QString& subject, const QString &pa std::list > participants; std::shared_ptr localAddress; participants.push_back(address); + int ephemeralTime = CoreManager::getInstance()->getSettingsModel()->getCreateEphemeralChatRooms(); + if(ephemeralTime>0) + params->setEphemeralLifetime(ephemeralTime); params->enableEncryption(true); params->setSubject(Utils::appStringToCoreString(subject)); @@ -268,6 +271,8 @@ bool CallsListModel::createSecureChat (const QString& subject, const QString &pa qInfo() << "Create secure ChatRoom: " << subject << ", from " << QString::fromStdString(localAddress->asString()) << " and with " < chatRoom = core->createChatRoom(params, localAddress, participants); + if(chatRoom) + chatRoom->enableEphemeral(ephemeralTime>0); // Still needed? // if( chatRoom != nullptr){ // auto timelineList = CoreManager::getInstance()->getTimelineListModel(); @@ -318,6 +323,9 @@ QVariantMap CallsListModel::createChatRoom(const QString& subject, const int& se qWarning() << "Failed to add participant to conference, bad address : " << (participant ? participant->getSipAddress() : p.toString()); } params->enableEncryption(securityLevel>0); + int ephemeralTime = CoreManager::getInstance()->getSettingsModel()->getCreateEphemeralChatRooms(); + if(securityLevel > 0 && ephemeralTime>0) + params->setEphemeralLifetime(ephemeralTime); if( securityLevel<=0) params->setBackend(linphone::ChatRoomBackend::Basic); @@ -365,6 +373,8 @@ QVariantMap CallsListModel::createChatRoom(const QString& subject, const int& se } if( !chatRoom) qWarning() << "Chat room cannot be created"; + else if(securityLevel > 0) + chatRoom->enableEphemeral(ephemeralTime>0); result["created"] = (chatRoom != nullptr); return result; diff --git a/linphone-app/src/components/settings/SettingsModel.cpp b/linphone-app/src/components/settings/SettingsModel.cpp index 966a140c5..3779cba43 100644 --- a/linphone-app/src/components/settings/SettingsModel.cpp +++ b/linphone-app/src/components/settings/SettingsModel.cpp @@ -1140,6 +1140,17 @@ void SettingsModel::setContactsEnabled (bool status) { int SettingsModel::getIncomingCallTimeout() const { return CoreManager::getInstance()->getCore()->getIncTimeout(); } + +int SettingsModel::getCreateEphemeralChatRooms() const{ + return mConfig->getInt(UiSection, "create_ephemeral_chat_rooms", 0); +} + +void SettingsModel::setCreateEphemeralChatRooms(int seconds) { + if(!isReadOnly(UiSection, "create_ephemeral_chat_rooms")) + mConfig->setInt(UiSection, "create_ephemeral_chat_rooms", seconds); + emit createEphemeralsChatRoomsChanged(); +} + // ============================================================================= // Network. // ============================================================================= diff --git a/linphone-app/src/components/settings/SettingsModel.hpp b/linphone-app/src/components/settings/SettingsModel.hpp index 2b13f3039..e26bb5f47 100644 --- a/linphone-app/src/components/settings/SettingsModel.hpp +++ b/linphone-app/src/components/settings/SettingsModel.hpp @@ -501,6 +501,9 @@ public: int getIncomingCallTimeout() const; + int getCreateEphemeralChatRooms() const; + void setCreateEphemeralChatRooms(int seconds);// <=0 deactivate + // Network. ------------------------------------------------------------------ bool getShowNetworkSettings () const; @@ -594,7 +597,7 @@ public: void setDownloadFolder (const QString &folder); QString getRemoteProvisioningRootUrl() const; - QString getRemoteProvisioning () const; + Q_INVOKABLE QString getRemoteProvisioning () const; void setRemoteProvisioning (const QString &remoteProvisioning); Q_INVOKABLE bool isQRCodeAvailable() const; @@ -804,6 +807,8 @@ signals: void contactsEnabledChanged (bool status); + void createEphemeralsChatRoomsChanged(); + // Network. ------------------------------------------------------------------ void showNetworkSettingsChanged (bool status); diff --git a/linphone-app/ui/modules/Common/Form/TransparentTextInput.qml b/linphone-app/ui/modules/Common/Form/TransparentTextInput.qml index f9f9903c8..8af7f8bf5 100644 --- a/linphone-app/ui/modules/Common/Form/TransparentTextInput.qml +++ b/linphone-app/ui/modules/Common/Form/TransparentTextInput.qml @@ -40,7 +40,7 @@ Item { 'transparent' height: parent.height width: { - var width = textInput.contentWidth + parent.padding * 2 + var width = Math.max(textInput.contentWidth, placeholder.contentWidth) + parent.padding * 2 return width < parent.width ? width : parent.width } diff --git a/linphone-app/ui/modules/Linphone/Account/AccountStatus.qml b/linphone-app/ui/modules/Linphone/Account/AccountStatus.qml index b0cbb373e..770e65124 100644 --- a/linphone-app/ui/modules/Linphone/Account/AccountStatus.qml +++ b/linphone-app/ui/modules/Linphone/Account/AccountStatus.qml @@ -70,7 +70,7 @@ Item { Text { id:username Layout.fillWidth: true - Layout.preferredHeight: accountStatus.noAccountConfigured ? -1 : parent.height / 2 + Layout.preferredHeight: accountStatus.noAccountConfigured ? -1 : subtitle.visible ? parent.height / 2 : parent.height Layout.alignment: !subtitle.visible ? Qt.AlignVCenter | Qt.AlignLeft : Qt.AlignBottom | Qt.AlignLeft color: AccountStatusStyle.username.colorModel.color elide: Text.ElideRight @@ -78,7 +78,7 @@ Item { font.pointSize: AccountStatusStyle.username.pointSize //: 'No account configured' : Status text when there is no configured account. text: accountStatus.noAccountConfigured ? qsTr('noAccount'): AccountSettingsModel.username - verticalAlignment: Text.AlignBottom + verticalAlignment: subtitle.visible ? Text.AlignBottom : Text.AlignVCenter wrapMode: Text.WordWrap maximumLineCount: 3 } @@ -106,7 +106,7 @@ Item { Text { id: subtitle - Layout.preferredHeight:parent.height / 2 + Layout.preferredHeight: visible ? parent.height / 2 : 0 Layout.preferredWidth:parent.width visible: !accountStatus.noAccountConfigured && text != username.text color: AccountStatusStyle.sipAddress.colorModel.color diff --git a/linphone-app/ui/views/App/Main/ContactEdit.qml b/linphone-app/ui/views/App/Main/ContactEdit.qml index cd2fa8fb4..a372d8bc3 100644 --- a/linphone-app/ui/views/App/Main/ContactEdit.qml +++ b/linphone-app/ui/views/App/Main/ContactEdit.qml @@ -133,6 +133,8 @@ ColumnLayout { forceFocus: true readOnly: !_edition text: avatar.username + //: 'Display Name' : placeholder for setting display name on a contact + placeholder: qsTr('displayName') font.family: SettingsModel.textMessageFont.family onEditingFinished: Logic.setUsername(text) diff --git a/linphone-app/ui/views/App/Main/MainWindowMenuBar.qml b/linphone-app/ui/views/App/Main/MainWindowMenuBar.qml index e974df614..b1195fd69 100644 --- a/linphone-app/ui/views/App/Main/MainWindowMenuBar.qml +++ b/linphone-app/ui/views/App/Main/MainWindowMenuBar.qml @@ -57,7 +57,7 @@ Item { Shortcut { id: recordingsShortcut - onActivated: menuParent.displayRecordings() + onActivated: if(SettingsModel.callRecorderEnabled) menuParent.displayRecordings() } // --------------------------------------------------------------------------- @@ -75,6 +75,7 @@ Item { } MenuItem{ + visible: SettingsModel.callRecorderEnabled //: 'Recordings' : Label for the recordings menu. text: qsTr('recordings') onTriggered: recordingsShortcut.onActivated() diff --git a/linphone-app/ui/views/App/Main/MainWindowTopMenuBar.qml b/linphone-app/ui/views/App/Main/MainWindowTopMenuBar.qml index ed4ae1d25..28a52612f 100644 --- a/linphone-app/ui/views/App/Main/MainWindowTopMenuBar.qml +++ b/linphone-app/ui/views/App/Main/MainWindowTopMenuBar.qml @@ -28,6 +28,7 @@ MenuBar { } MenuItem { + visible: SettingsModel.callRecorderEnabled //: 'Recordings' : Label for the recordings menu. text: qsTr('recordings') role: MenuItem.ApplicationSpecificRole