mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-22 06:08:07 +00:00
- Forward messages to a contact, a sip address or directly to a timeline.
- Fix CI on Qt5_DIR. - Hide reply message preview after sending message. - Fix binding loop on sub-messages. - Reduce spacing size in message.
This commit is contained in:
parent
8da7c81331
commit
d7dfe986c0
49 changed files with 776 additions and 48 deletions
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
.build_all_script: &build_all_script |
|
||||
ccache -s
|
||||
export Qt5_DIR=/usr/local/opt/qt/lib/cmake
|
||||
export Qt5_DIR=/usr/local/opt/qt/lib/cmake/Qt5
|
||||
export PATH=$PATH:/usr/local/opt/qt/bin
|
||||
if [ -d "build" ]; then rm -rf build; fi;
|
||||
mkdir -p build/OUTPUT
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## Added
|
||||
- Features:
|
||||
* messages features : Reply
|
||||
* messages features : Reply, forward (to contact, to a SIP address or to a timeline)
|
||||
|
||||
## 4.3.2
|
||||
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ Server url ikke konfigureret.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Klik her: <a href="%1">%1</a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">ANNULLER</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ Server URL ist nicht konfiguriert.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Klicken Sie hier: <a href="%1">%1</a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">ABBRECHEN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ Server URL not configured.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation>Selection copied to clipboard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation>Choose where to forward the message</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2693,6 +2698,28 @@ Click here: <a href="%1">%1</a>
|
|||
<translation>Tunnel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation>Cancel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation>Search in contacts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation>Search an address in your contacts or use a custom one.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation>Conversations</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ URL del servidor no configurada.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Haga clic aquí: <a href="%1">%1 </a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">CANCELAR</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ URL du serveur non configurée.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation>La sélection a été copiée dans le presse-papier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Cliquez ici : <a href="%1">%1</a>
|
|||
<translation>Tunnel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -473,6 +473,11 @@ A kiszolgáló URL-je nincs konfigurálva.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation>A kijelölés a vágólapra másolva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2660,6 +2665,28 @@ Kattintson ide: <a href="%1">%1</a>
|
|||
<translation>Alagút</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">Mégse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ URL del server non configurato.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Clicca: <a href="%1">%1</a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">ANNULLA</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -473,6 +473,11 @@
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2660,6 +2665,28 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">キャンセル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -475,6 +475,11 @@ Nesukonfigūruotas serverio url.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2680,6 +2685,28 @@ Spustelėkite čia: <a href="%1">%1</a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">ATSISAKYTI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ URL do servidor não configurado.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation>Seleção copiada para a área de transferência</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Clique aqui: <a href="%1">%1 </a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -475,6 +475,11 @@
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2680,6 +2685,28 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">ОТМЕНА</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -474,6 +474,11 @@ Serverwebbadressen är inte konfigurerad.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2670,6 +2675,28 @@ Klicka här: <a href="%1">%1</a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">AVBRYT</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -473,6 +473,11 @@ Sunucu url'si yapılandırılmadı.</translation>
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2660,6 +2665,28 @@ Buraya tıklayın: <a href="%1">%1</a>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">İPTAL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -475,6 +475,11 @@
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2680,6 +2685,28 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">СКАСУВАТИ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -473,6 +473,11 @@
|
|||
<extracomment>"Selection copied to clipboard" : when a user copy a text from the menu, this message show up.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>forwardDialogTitle</source>
|
||||
<extracomment>'Choose where to forward the message' : Dialog title for choosing where to forward the current message.</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatDeliveries</name>
|
||||
|
|
@ -2660,6 +2665,28 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SipAddressDialog</name>
|
||||
<message>
|
||||
<source>cancel</source>
|
||||
<translation type="unfinished">取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchPlaceholder</source>
|
||||
<extracomment>'Search in contacts' : Placeholder for a search a contact</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>contactsSearchTooltip</source>
|
||||
<extracomment>'Search an address in your contacts or use a custom one.' : tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>timelineSelectionHeader</source>
|
||||
<extracomment>'Conversations' : header for a selection in conversation list</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SmartSearchBar</name>
|
||||
<message>
|
||||
|
|
|
|||
|
|
@ -271,6 +271,7 @@
|
|||
<file>ui/modules/Linphone/Chat/ChatDeliveries.qml</file>
|
||||
<file>ui/modules/Linphone/Chat/ChatMenu.qml</file>
|
||||
<file>ui/modules/Linphone/Chat/ChatMessagePreview.qml</file>
|
||||
<file>ui/modules/Linphone/Chat/ChatForwardMessage.qml</file>
|
||||
<file>ui/modules/Linphone/Chat/ChatReplyMessage.qml</file>
|
||||
<file>ui/modules/Linphone/Chat/ChatReplyPreview.qml</file>
|
||||
<file>ui/modules/Linphone/Chat/Event.qml</file>
|
||||
|
|
@ -288,6 +289,7 @@
|
|||
<file>ui/modules/Linphone/Contact/ContactMessageCounter.qml</file>
|
||||
<file>ui/modules/Linphone/Contact/Contact.qml</file>
|
||||
<file>ui/modules/Linphone/Dialog/OnlineInstallerDialog.qml</file>
|
||||
<file>ui/modules/Linphone/Dialog/SipAddressDialog.qml</file>
|
||||
<file>ui/modules/Linphone/History/History.qml</file>
|
||||
<file>ui/modules/Linphone/History/History.js</file>
|
||||
<file>ui/modules/Linphone/History/Event.qml</file>
|
||||
|
|
@ -312,6 +314,7 @@
|
|||
<file>ui/modules/Linphone/Styles/Calls/CallStatisticsStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Calls/ConferenceControlsStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Chat/ChatStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Chat/ChatForwardMessageStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Chat/ChatReplyMessageStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Codecs/CodecsViewerStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Contact/AvatarStyle.qml</file>
|
||||
|
|
@ -319,6 +322,7 @@
|
|||
<file>ui/modules/Linphone/Styles/Contact/ContactMessageCounterStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Contact/ContactStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Dialog/OnlineInstallerDialogStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Dialog/SipAddressDialogStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/History/HistoryStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Menus/SipAddressesMenuStyle.qml</file>
|
||||
<file>ui/modules/Linphone/Styles/Misc/MessageCounterStyle.qml</file>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
#include "components/notifier/Notifier.hpp"
|
||||
#include "components/participant-imdn/ParticipantImdnStateListModel.hpp"
|
||||
#include "components/participant-imdn/ParticipantImdnStateProxyModel.hpp"
|
||||
#include "components/settings/AccountSettingsModel.hpp"
|
||||
#include "components/settings/SettingsModel.hpp"
|
||||
#include "utils/QExifImageHeader.hpp"
|
||||
#include "utils/Utils.hpp"
|
||||
|
|
@ -444,7 +445,22 @@ ChatMessageModel * ChatMessageModel::getReplyChatMessageModel() const{
|
|||
return mReplyChatMessageModel.get();
|
||||
}
|
||||
|
||||
bool ChatMessageModel::isForward() const{
|
||||
return mChatMessage->isForward();
|
||||
}
|
||||
|
||||
QString ChatMessageModel::getForwardInfo() const{
|
||||
return Utils::coreStringToAppString(mChatMessage->getForwardInfo());
|
||||
}
|
||||
|
||||
QString ChatMessageModel::getForwardInfoDisplayName() const{
|
||||
QString forwardInfo = getForwardInfo();
|
||||
auto forwardAddress = Utils::interpretUrl(forwardInfo);
|
||||
if(!forwardAddress || CoreManager::getInstance()->getAccountSettingsModel()->getUsedSipAddress()->weakEqual(forwardAddress))
|
||||
return "";// myself
|
||||
else
|
||||
return Utils::getDisplayName(forwardInfo);
|
||||
}
|
||||
//-----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -160,6 +160,11 @@ public:
|
|||
Q_PROPERTY(bool isReply READ isReply CONSTANT)
|
||||
Q_PROPERTY(ChatMessageModel* replyChatMessageModel READ getReplyChatMessageModel CONSTANT)
|
||||
|
||||
Q_PROPERTY(bool isForward READ isForward CONSTANT)
|
||||
Q_PROPERTY(QString getForwardInfo READ getForwardInfo CONSTANT)
|
||||
Q_PROPERTY(QString getForwardInfoDisplayName READ getForwardInfoDisplayName CONSTANT)
|
||||
|
||||
|
||||
std::shared_ptr<linphone::ChatMessage> getChatMessage();
|
||||
std::shared_ptr<ContentModel> getContentModel(std::shared_ptr<linphone::Content> content);
|
||||
Q_INVOKABLE ContentModel * getContent(int i);
|
||||
|
|
@ -185,6 +190,10 @@ public:
|
|||
bool isReply() const;
|
||||
ChatMessageModel * getReplyChatMessageModel() const;
|
||||
|
||||
bool isForward() const;
|
||||
QString getForwardInfo() const;
|
||||
QString getForwardInfoDisplayName() const;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void setWasDownloaded(bool wasDownloaded);
|
||||
|
|
|
|||
|
|
@ -682,6 +682,14 @@ void ChatRoomModel::sendFileMessage (const QString &path) {
|
|||
emit messageSent(message);
|
||||
}
|
||||
|
||||
void ChatRoomModel::forwardMessage(ChatMessageModel * model){
|
||||
if(model){
|
||||
shared_ptr<linphone::ChatMessage> _message;
|
||||
_message = mChatRoom->createForwardMessage(model->getChatMessage());
|
||||
_message->send();
|
||||
emit messageSent(_message);
|
||||
}
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void ChatRoomModel::compose () {
|
||||
|
|
|
|||
|
|
@ -217,8 +217,9 @@ public:
|
|||
void deleteChatRoom();
|
||||
Q_INVOKABLE void leaveChatRoom ();
|
||||
Q_INVOKABLE void updateParticipants(const QVariantList& participants);
|
||||
void sendMessage (const QString &message);
|
||||
void sendMessage (const QString &message);
|
||||
void sendFileMessage (const QString &path);
|
||||
Q_INVOKABLE void forwardMessage(ChatMessageModel * model);
|
||||
void compose ();
|
||||
void resetMessageCount ();
|
||||
Q_INVOKABLE void initEntries();
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ CREATE_PARENT_MODEL_FUNCTION(removeAllEntries)
|
|||
|
||||
CREATE_PARENT_MODEL_FUNCTION_WITH_PARAM(sendFileMessage, const QString &)
|
||||
CREATE_PARENT_MODEL_FUNCTION_WITH_PARAM(sendMessage, const QString &)
|
||||
CREATE_PARENT_MODEL_FUNCTION_WITH_PARAM(forwardMessage, ChatMessageModel *)
|
||||
CREATE_PARENT_MODEL_FUNCTION_WITH_PARAM(setReply, ChatMessageModel*)
|
||||
CREATE_PARENT_MODEL_FUNCTION(clearReply)
|
||||
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ public:
|
|||
|
||||
Q_INVOKABLE void sendFileMessage (const QString &path);
|
||||
|
||||
Q_INVOKABLE void forwardMessage(ChatMessageModel * model);
|
||||
|
||||
Q_INVOKABLE void compose (const QString& text);
|
||||
|
||||
Q_INVOKABLE void resetMessageCount();
|
||||
|
|
|
|||
|
|
@ -112,8 +112,12 @@ void SearchSipAddressesModel::setFilter(const QString& filter){
|
|||
|
||||
void SearchSipAddressesModel::searchReceived(std::list<std::shared_ptr<linphone::SearchResult>> results){
|
||||
QList<std::shared_ptr<SearchResultModel> > addresses;
|
||||
for(auto it = results.begin() ; it != results.end() ; ++it)
|
||||
addresses << std::make_shared<SearchResultModel>((*it)->getFriend(), (*it)->getAddress());
|
||||
for(auto it = results.begin() ; it != results.end() ; ++it){
|
||||
auto linphoneFriend = (*it)->getFriend();
|
||||
auto address = (*it)->getAddress();
|
||||
if( linphoneFriend || address)
|
||||
addresses << std::make_shared<SearchResultModel>(linphoneFriend,address );
|
||||
}
|
||||
// Fix crash on Qt 5.15.2 with endResetModel (index out of range).
|
||||
if(mAddresses.size() > 0){// Workaround : remove all
|
||||
beginRemoveRows(QModelIndex(), 0, mAddresses.size()-1);
|
||||
|
|
|
|||
|
|
@ -8,10 +8,12 @@ import Common.Styles 1.0
|
|||
|
||||
Item {
|
||||
property alias text: description.text
|
||||
property alias horizontalAlignment: description.horizontalAlignment
|
||||
property int marginOffset: 0
|
||||
|
||||
height: !text ? DialogStyle.description.verticalMargin : undefined
|
||||
height: !text ? (DialogStyle.description.verticalMargin + marginOffset) : undefined
|
||||
implicitHeight: text
|
||||
? description.implicitHeight + DialogStyle.description.verticalMargin * 2
|
||||
? description.implicitHeight + (DialogStyle.description.verticalMargin + marginOffset) * 2
|
||||
: 0
|
||||
|
||||
Text {
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@ ListView {
|
|||
id: view
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
ScrollBar.vertical: ForceScrollBar {
|
||||
id: vScrollBar
|
||||
|
||||
onPressedChanged: pressed ? view.movementStarted() : view.movementEnded()
|
||||
visible:view.contentHeight > view.height
|
||||
// ScrollBar.AsNeeded doesn't work. Do it ourself.
|
||||
policy: (view.contentHeight > view.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ ApplicationWindow {
|
|||
// ---------------------------------------------------------------------------
|
||||
|
||||
function attachVirtualWindow (component, properties, exitStatusHandler) {
|
||||
Logic.attachVirtualWindow.call(this, component, properties, exitStatusHandler)
|
||||
return Logic.attachVirtualWindow.call(this, component, properties, exitStatusHandler)
|
||||
}
|
||||
|
||||
function detachVirtualWindow () {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import Common 1.0
|
|||
import Common.Styles 1.0
|
||||
import 'Window.js' as Logic
|
||||
|
||||
import Linphone 1.0 as M
|
||||
// =============================================================================
|
||||
StackView{
|
||||
id:stackView
|
||||
|
|
@ -13,7 +14,6 @@ StackView{
|
|||
visible:!stackView.empty
|
||||
|
||||
function setContent(url, properties, exitStatusHandler){
|
||||
var isEmpty = stackView.empty;
|
||||
if(properties && properties.virtualWindowHash){
|
||||
var haveItem = stackView.find(function(item, index) {
|
||||
return item.sourceProperties && item.sourceProperties.virtualWindowHash && item.sourceProperties.virtualWindowHash == properties.virtualWindowHash;
|
||||
|
|
@ -27,7 +27,7 @@ StackView{
|
|||
}else{
|
||||
push(page, {"sourceUrl":url, "sourceProperties":properties, "exitStatusHandler":exitStatusHandler, "setData":true, "active":true});
|
||||
}
|
||||
return isEmpty;
|
||||
return stackView.currentItem
|
||||
}
|
||||
function unsetContent () {
|
||||
if(stackView.depth == 1)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
//
|
||||
// The exit status handler is optional.
|
||||
function attachVirtualWindow (component, properties, exitStatusHandler) {
|
||||
virtualWindow.setContent(component, properties, exitStatusHandler);
|
||||
return virtualWindow.setContent(component, properties, exitStatusHandler);
|
||||
}
|
||||
|
||||
function detachVirtualWindow () {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ Window {
|
|||
// ---------------------------------------------------------------------------
|
||||
|
||||
function attachVirtualWindow (component, properties, exitStatusHandler) {
|
||||
Logic.attachVirtualWindow.call(this, component, properties, exitStatusHandler)
|
||||
return Logic.attachVirtualWindow.call(this, component, properties, exitStatusHandler)
|
||||
}
|
||||
|
||||
function detachVirtualWindow () {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ singleton Constants 1.0 Constants/Constants.qml
|
|||
|
||||
BusyIndicator 1.0 Animations/BusyIndicator.qml
|
||||
|
||||
DialogDescription 1.0 Dialog/DialogDescription.qml
|
||||
ConfirmDialog 1.0 Dialog/ConfirmDialog.qml
|
||||
DialogPlus 1.0 Dialog/DialogPlus.qml
|
||||
|
||||
|
|
|
|||
|
|
@ -274,6 +274,25 @@ Rectangle {
|
|||
proxyModel.setReply($chatEntry)
|
||||
container.replyChatMessageModel = $chatEntry
|
||||
}
|
||||
onForwardClicked:{
|
||||
window.attachVirtualWindow(Qt.resolvedUrl('../Dialog/SipAddressDialog.qml')
|
||||
//: 'Choose where to forward the message' : Dialog title for choosing where to forward the current message.
|
||||
, {title: qsTr('forwardDialogTitle'),
|
||||
addressSelectedCallback: function (sipAddress) {
|
||||
var chat = CallsListModel.createChat(sipAddress)
|
||||
if(chat){
|
||||
chat.forwardMessage($chatEntry)
|
||||
TimelineListModel.select(chat)
|
||||
}
|
||||
},
|
||||
chatRoomSelectedCallback: function (chatRoomModel){
|
||||
if(chatRoomModel){
|
||||
chatRoomModel.forwardMessage($chatEntry)
|
||||
TimelineListModel.select(chatRoomModel)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -399,11 +418,12 @@ Rectangle {
|
|||
chat.bindToEnd = true
|
||||
if(proxyModel.chatRoomModel) {
|
||||
proxyModel.sendMessage(text)
|
||||
|
||||
chatMessagePreview.hide()
|
||||
}else{
|
||||
console.log("Peer : " +proxyModel.peerAddress+ "/"+chat.model.peerAddress)
|
||||
proxyModel.chatRoomModel = CallsListModel.createChat(proxyModel.peerAddress)
|
||||
proxyModel.sendMessage(text)
|
||||
chatMessagePreview.hide()
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {text = proxyModel.cachedText; cursorPosition=text.length}
|
||||
|
|
|
|||
|
|
@ -22,15 +22,14 @@ GridView{
|
|||
id: deliveryLayout
|
||||
|
||||
property ChatMessageModel chatMessageModel
|
||||
|
||||
|
||||
|
||||
//height: visible ? ChatStyle.composingText.height*container.proxyModel.composers.length : 0
|
||||
height: visible ? (ChatStyle.composingText.height-5)*deliveryLayout.model.count : 0
|
||||
cellWidth: parent.width; cellHeight: ChatStyle.composingText.height-5
|
||||
visible:false
|
||||
model: ParticipantImdnStateProxyModel{
|
||||
id: imdnStatesModel
|
||||
chatMessageModel: deliveryLayout.chatMessageModel
|
||||
chatMessageModel: deliveryLayout.visible ? deliveryLayout.chatMessageModel: null
|
||||
}
|
||||
function getText(state, displayName, stateChangeTime){
|
||||
if(state == LinphoneEnums.ChatMessageStateDelivered)
|
||||
|
|
|
|||
61
linphone-app/ui/modules/Linphone/Chat/ChatForwardMessage.qml
Normal file
61
linphone-app/ui/modules/Linphone/Chat/ChatForwardMessage.qml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import QtQuick 2.7
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import Clipboard 1.0
|
||||
import Common 1.0
|
||||
import Linphone 1.0
|
||||
|
||||
import Common.Styles 1.0
|
||||
import Linphone.Styles 1.0
|
||||
import TextToSpeech 1.0
|
||||
import Utils 1.0
|
||||
import Units 1.0
|
||||
import UtilsCpp 1.0
|
||||
import LinphoneEnums 1.0
|
||||
|
||||
import ColorsList 1.0
|
||||
|
||||
import 'Message.js' as Logic
|
||||
|
||||
// =============================================================================
|
||||
|
||||
Item {
|
||||
id: mainItem
|
||||
property ChatMessageModel mainChatMessageModel
|
||||
property int maxWidth : parent.width
|
||||
property int fitWidth: headerArea.fitWidth + 7 + ChatForwardMessageStyle.padding * 2
|
||||
property int fitHeight: icon.height
|
||||
property font customFont : SettingsModel.textMessageFont
|
||||
|
||||
width: maxWidth > fitWidth ? fitWidth : maxWidth
|
||||
height: fitHeight
|
||||
|
||||
ColumnLayout{
|
||||
anchors.fill: parent
|
||||
spacing: 5
|
||||
Row{
|
||||
id: headerArea
|
||||
property int fitWidth: icon.width + headerText.implicitWidth
|
||||
Layout.fillHeight: true
|
||||
Layout.topMargin: 5
|
||||
Icon{
|
||||
id: icon
|
||||
icon: ChatForwardMessageStyle.header.forwardIcon.icon
|
||||
iconSize: ChatForwardMessageStyle.header.forwardIcon.iconSize
|
||||
height: iconSize
|
||||
overwriteColor: ChatForwardMessageStyle.header.color
|
||||
}
|
||||
Text{
|
||||
id: headerText
|
||||
height: icon.height
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
property string forwardInfo: mainChatMessageModel.getForwardInfoDisplayName
|
||||
//: 'Forwarded' : Header on a message that contains a forward.
|
||||
text: 'Forwarded' + (forwardInfo ? ' : ' +forwardInfo : '')
|
||||
font.family: mainItem.customFont.family
|
||||
font.pointSize: Units.dp * (mainItem.customFont.pointSize + ChatForwardMessageStyle.header.pointSizeOffset)
|
||||
color: ChatForwardMessageStyle.header.color
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -21,6 +21,10 @@ ColumnLayout{
|
|||
anchors.bottom: parent.bottom
|
||||
height: replyPreview.height
|
||||
|
||||
function hide(){
|
||||
replyPreview.hide()
|
||||
}
|
||||
|
||||
ChatReplyPreview{
|
||||
id: replyPreview
|
||||
Layout.fillWidth: true
|
||||
|
|
|
|||
|
|
@ -24,20 +24,25 @@ Item {
|
|||
property ChatMessageModel chatMessageModel
|
||||
property ChatMessageModel mainChatMessageModel
|
||||
property int maxWidth : parent.width
|
||||
property int contentWidth: Math.max(usernameReplied.implicitWidth + replyMessage.implicitWidth , headerArea.width) + 7 + ChatReplyMessageStyle.padding * 2
|
||||
property int contentHeight: headerArea.height + replyArea.height
|
||||
property int headerHeight: ChatReplyMessageStyle.header.replyIcon.iconSize
|
||||
property int replyHeight: (chatMessageModel ? replyMessage.implicitHeight + usernameReplied.implicitHeight + ChatStyle.entry.message.padding * 2 + 3 : 0)
|
||||
property int fitWidth: Math.max(usernameReplied.implicitWidth + replyMessage.implicitWidth , headerArea.fitWidth) + 7 + ChatReplyMessageStyle.padding * 2
|
||||
property int fitHeight: headerHeight + replyHeight
|
||||
|
||||
property font customFont : SettingsModel.textMessageFont
|
||||
|
||||
width: maxWidth > contentWidth ? contentWidth : maxWidth
|
||||
|
||||
width: maxWidth < 0 || maxWidth > fitWidth ? fitWidth : maxWidth
|
||||
height: fitHeight
|
||||
onMainChatMessageModelChanged: if( mainChatMessageModel.replyChatMessageModel) chatMessageModel = mainChatMessageModel.replyChatMessageModel
|
||||
|
||||
|
||||
ColumnLayout{
|
||||
anchors.fill: parent
|
||||
spacing: 5
|
||||
Row{
|
||||
id: headerArea
|
||||
Layout.preferredHeight: icon.height
|
||||
property int fitWidth: icon.width + headerText.implicitWidth
|
||||
Layout.preferredHeight: headerHeight
|
||||
Layout.topMargin: 5
|
||||
Icon{
|
||||
id: icon
|
||||
|
|
@ -47,7 +52,8 @@ Item {
|
|||
overwriteColor: ChatReplyMessageStyle.header.color
|
||||
}
|
||||
Text{
|
||||
height: icon.height
|
||||
id: headerText
|
||||
height: parent.height
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
//: 'Reply' : Header on a message that contains a reply.
|
||||
text: qsTr('headerReply')
|
||||
|
|
@ -60,7 +66,7 @@ Item {
|
|||
Rectangle{
|
||||
id: replyArea
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: (chatMessageModel ? replyMessage.implicitHeight + usernameReplied.implicitHeight + ChatStyle.entry.message.padding : 0)
|
||||
Layout.fillHeight: true
|
||||
Layout.bottomMargin: ChatStyle.entry.message.padding
|
||||
Layout.leftMargin: 10
|
||||
Layout.rightMargin: 10
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@ Rectangle{
|
|||
visible: container.replyChatMessageModel
|
||||
// Remove bottom corners
|
||||
clip: false
|
||||
function hide(){
|
||||
state = 'hidden'
|
||||
}
|
||||
Rectangle{
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
|
|
@ -110,7 +113,7 @@ Rectangle{
|
|||
backgroundRadius: 90
|
||||
colorSet: ChatStyle.replyPreview.closeButton
|
||||
|
||||
onClicked: parent.state = 'hidden'
|
||||
onClicked: parent.hide()
|
||||
}
|
||||
states: [
|
||||
State {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ Row {
|
|||
|
||||
signal copyAllDone()
|
||||
signal copySelectionDone()
|
||||
signal forwardClicked()
|
||||
|
||||
Item {
|
||||
height: ChatStyle.entry.lineHeight
|
||||
|
|
@ -275,6 +276,7 @@ Row {
|
|||
|
||||
onCopyAllDone: mainRow.copyAllDone()
|
||||
onCopySelectionDone: mainRow.copySelectionDone()
|
||||
onForwardClicked: mainRow.forwardClicked()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import LinphoneUtils 1.0
|
|||
RowLayout {
|
||||
id:mainRow
|
||||
|
||||
Layout.fillWidth: true
|
||||
|
||||
signal copyAllDone()
|
||||
signal copySelectionDone()
|
||||
signal replyClicked()
|
||||
|
|
|
|||
|
|
@ -40,15 +40,15 @@ Item {
|
|||
// ---------------------------------------------------------------------------
|
||||
|
||||
implicitHeight: message.contentHeight +
|
||||
+ (replyMessage.visible ? replyMessage.contentHeight + 5 : 0)
|
||||
+ (forwardMessage.visible ? forwardMessage.fitHeight + 5 : 0)
|
||||
+ (replyMessage.visible ? replyMessage.fitHeight + 5 : 0)
|
||||
+ (ephemeralTimerRow.visible? message.padding * 4 : message.padding * 2)
|
||||
+ (deliveryLayout.visible? deliveryLayout.height : 0)
|
||||
|
||||
|
||||
Rectangle {
|
||||
id: rectangle
|
||||
property int maxWidth: parent.width
|
||||
property int dataWidth: Math.max(message.implicitWidth + 2*ChatStyle.entry.message.padding + 10, replyMessage.contentWidth)
|
||||
property int dataWidth: Math.max(Math.max(message.implicitWidth + 2*ChatStyle.entry.message.padding + 10, replyMessage.fitWidth), forwardMessage.fitWidth)
|
||||
height: parent.height - (deliveryLayout.visible? deliveryLayout.height : 0)
|
||||
radius: ChatStyle.entry.message.radius
|
||||
width: (
|
||||
|
|
@ -88,13 +88,18 @@ Item {
|
|||
Column{
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
spacing: 5
|
||||
spacing: 0
|
||||
ChatForwardMessage{
|
||||
id: forwardMessage
|
||||
mainChatMessageModel: $chatEntry
|
||||
visible: $chatEntry.isForward
|
||||
maxWidth: container.width
|
||||
}
|
||||
ChatReplyMessage{
|
||||
id: replyMessage
|
||||
mainChatMessageModel: $chatEntry
|
||||
visible: $chatEntry.isReply
|
||||
maxWidth: container.width
|
||||
height: contentHeight
|
||||
}
|
||||
TextEdit {
|
||||
id: message
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ import Utils 1.0
|
|||
|
||||
Item {
|
||||
implicitHeight: message.height
|
||||
width: parent.width
|
||||
//width: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
signal copyAllDone()
|
||||
signal copySelectionDone()
|
||||
|
|
@ -66,9 +67,10 @@ Item {
|
|||
|
||||
TooltipArea {
|
||||
id:tooltip
|
||||
visible: text != ''
|
||||
text: iconId.isError
|
||||
? qsTr('messageError')
|
||||
: (iconId.isRead ? qsTr('messageRead') : qsTr('messageDelivered'))
|
||||
: (iconId.isRead ? qsTr('messageRead') : (isDelivered ? qsTr('messageDelivered') : ''))
|
||||
hoveringCursor : retryAction.visible?Qt.PointingHandCursor:Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
|
|
|
|||
104
linphone-app/ui/modules/Linphone/Dialog/SipAddressDialog.qml
Normal file
104
linphone-app/ui/modules/Linphone/Dialog/SipAddressDialog.qml
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
import QtQuick 2.7
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import Common 1.0
|
||||
import Linphone 1.0
|
||||
|
||||
import App.Styles 1.0
|
||||
import Linphone.Styles 1.0
|
||||
|
||||
// =============================================================================
|
||||
|
||||
DialogPlus {
|
||||
id: mainItem
|
||||
|
||||
property var addressSelectedCallback
|
||||
property var chatRoomSelectedCallback
|
||||
|
||||
buttons: [
|
||||
TextButtonA {
|
||||
text: qsTr('cancel')
|
||||
|
||||
onClicked: exit(0)
|
||||
}
|
||||
]
|
||||
|
||||
buttonsAlignment: Qt.AlignCenter
|
||||
|
||||
height: SipAddressDialogStyle.height + 30
|
||||
width: SipAddressDialogStyle.width
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
spacing: SipAddressDialogStyle.spacing
|
||||
|
||||
SmartSearchBar {
|
||||
id: smartSearchBar
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: SipAddressDialogStyle.spacing
|
||||
visible: !timeline.isFilterVisible
|
||||
|
||||
showHeader:false
|
||||
|
||||
maxMenuHeight: MainWindowStyle.searchBox.maxHeight
|
||||
//: 'Search in contacts' : Placeholder for a search a contact
|
||||
placeholderText: qsTr('contactsSearchPlaceholder')
|
||||
//: 'Search an address in your contacts or use a custom one.' : tooltip
|
||||
tooltipText: qsTr('contactsSearchTooltip')
|
||||
|
||||
actions:[{
|
||||
colorSet: SipAddressDialogStyle.select,
|
||||
secure: 0,
|
||||
visible: true,
|
||||
secureIconVisibleHandler : function(entry) {
|
||||
return UtilsCpp.hasCapability(entry.sipAddress, LinphoneEnums.FriendCapabilityLimeX3Dh)
|
||||
},
|
||||
handler: function (entry) {
|
||||
mainItem.addressSelectedCallback(sipAddress)
|
||||
exit(1)
|
||||
},
|
||||
}]
|
||||
|
||||
onEntryClicked: {
|
||||
mainItem.addressSelectedCallback(sipAddress)
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
Text {
|
||||
id: description
|
||||
Layout.fillWidth: true
|
||||
|
||||
color: SipAddressDialogStyle.list.color
|
||||
font.pointSize: SipAddressDialogStyle.list.pointSize
|
||||
horizontalAlignment: Qt.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.WordWrap
|
||||
//: 'Conversations' : header for a selection in conversation list
|
||||
text: qsTr('timelineSelectionHeader')
|
||||
}
|
||||
|
||||
ScrollableListViewField {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
Timeline {
|
||||
id: timeline
|
||||
showHistoryButton: false
|
||||
updateSelectionModels: false
|
||||
anchors.fill: parent
|
||||
model: TimelineProxyModel{}
|
||||
onEntrySelected:{
|
||||
console.log(entry)
|
||||
if( entry ) {
|
||||
mainItem.chatRoomSelectedCallback(entry.chatRoomModel)
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
pragma Singleton
|
||||
import QtQml 2.2
|
||||
|
||||
import Units 1.0
|
||||
import ColorsList 1.0
|
||||
|
||||
// =============================================================================
|
||||
|
||||
QtObject {
|
||||
property string sectionName : 'ChatReplyMessage'
|
||||
property color color: ColorsList.add(sectionName, 'q').color
|
||||
property QtObject header: QtObject{
|
||||
property color color: ColorsList.add(sectionName+'_header', 'h').color
|
||||
property int pointSizeOffset: -3
|
||||
property QtObject forwardIcon: QtObject{
|
||||
property string icon : 'menu_forward_custom'
|
||||
property int iconSize: 22
|
||||
}
|
||||
}
|
||||
|
||||
property int padding: 8
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
pragma Singleton
|
||||
import QtQml 2.2
|
||||
import ColorsList 1.0
|
||||
import Units 1.0
|
||||
// =============================================================================
|
||||
|
||||
QtObject {
|
||||
property string sectionName : 'SipAddressDialog'
|
||||
property int height: 420
|
||||
property int spacing: 10
|
||||
property int width: 450
|
||||
|
||||
property QtObject select: QtObject {
|
||||
property int iconSize: 36
|
||||
property string icon : 'transfer_custom'
|
||||
property string name : 'select'
|
||||
property color backgroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_n', icon, 's_n_b_bg').color
|
||||
property color backgroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_h', icon, 's_h_b_bg').color
|
||||
property color backgroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_bg_p', icon, 's_p_b_bg').color
|
||||
property color foregroundNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_n', icon, 's_n_b_fg').color
|
||||
property color foregroundHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_h', icon, 's_h_b_fg').color
|
||||
property color foregroundPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_fg_p', icon, 's_p_b_fg').color
|
||||
}
|
||||
property QtObject searchField: QtObject {
|
||||
property color color: ColorsList.add(sectionName+'_searchField', 'c').color
|
||||
}
|
||||
property QtObject list: QtObject {
|
||||
property color color: ColorsList.add(sectionName+'_list_title', 'g').color
|
||||
property int pointSize: Units.dp * 11
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ singleton CardBlockStyle 1.0 Blocks/CardBlockStyle.qml
|
|||
singleton RequestBlockStyle 1.0 Blocks/RequestBlockStyle.qml
|
||||
|
||||
singleton ChatStyle 1.0 Chat/ChatStyle.qml
|
||||
singleton ChatForwardMessageStyle 1.0 Chat/ChatForwardMessageStyle.qml
|
||||
singleton ChatReplyMessageStyle 1.0 Chat/ChatReplyMessageStyle.qml
|
||||
|
||||
singleton CallControlsStyle 1.0 Calls/CallControlsStyle.qml
|
||||
|
|
@ -25,6 +26,7 @@ singleton ContactMessageCounterStyle 1.0 Contact/ContactMessageCounter
|
|||
singleton ContactStyle 1.0 Contact/ContactStyle.qml
|
||||
|
||||
singleton OnlineInstallerDialogStyle 1.0 Dialog/OnlineInstallerDialogStyle.qml
|
||||
singleton SipAddressDialogStyle 1.0 Dialog/SipAddressDialogStyle.qml
|
||||
|
||||
singleton HistoryStyle 1.0 History/HistoryStyle.qml
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ Rectangle {
|
|||
|
||||
property alias model: view.model
|
||||
property string _selectedSipAddress
|
||||
property bool showHistoryButton : true
|
||||
property bool updateSelectionModels : true
|
||||
property bool isFilterVisible: searchView.visible || filterView.visible
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -46,18 +49,19 @@ Rectangle {
|
|||
timeline.entrySelected('')
|
||||
}
|
||||
}
|
||||
onSelectedChanged : if(timelineModel) timeline.entrySelected(timelineModel)
|
||||
onSelectedChanged : if(timelineModel && timeline.updateSelectionModels) timeline.entrySelected(timelineModel)
|
||||
}
|
||||
// -------------------------------------------------------------------------
|
||||
// Legend.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
Rectangle {
|
||||
id: legendArea
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: TimelineStyle.legend.height
|
||||
Layout.alignment: Qt.AlignTop
|
||||
color: showHistory.containsMouse?TimelineStyle.legend.backgroundColor.hovered:TimelineStyle.legend.backgroundColor.normal
|
||||
visible:view.count > 0 || searchView.visible || filterView.visible
|
||||
visible:view.count > 0 || timeline.isFilterVisible
|
||||
|
||||
MouseArea{// no more showing history
|
||||
id:showHistory
|
||||
|
|
@ -121,6 +125,7 @@ Rectangle {
|
|||
Layout.rightMargin: TimelineStyle.legend.lastRightMargin
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: TimelineStyle.legend.iconSize
|
||||
visible: timeline.showHistoryButton
|
||||
onClicked:{
|
||||
showHistoryRequest()
|
||||
}
|
||||
|
|
@ -246,6 +251,7 @@ Rectangle {
|
|||
|
||||
ScrollableListView {
|
||||
id: view
|
||||
property alias updateSelectionModels: timeline.updateSelectionModels
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
currentIndex: -1
|
||||
|
|
@ -297,12 +303,14 @@ Rectangle {
|
|||
propagateComposedEvents: true
|
||||
preventStealing: false
|
||||
onClicked: {
|
||||
//timeline.model.unselectAll()
|
||||
if(mouse.button == Qt.LeftButton){
|
||||
if(modelData.selected)// Update selection
|
||||
if(modelData.selected || !view.updateSelectionModels)// Update selection
|
||||
timeline.entrySelected(modelData)
|
||||
modelData.selected = true
|
||||
view.currentIndex = index;
|
||||
if(view){
|
||||
if(view.updateSelectionModels)
|
||||
modelData.selected = true
|
||||
view.currentIndex = index;
|
||||
}
|
||||
}else{
|
||||
contactTooltip.show()
|
||||
}
|
||||
|
|
@ -312,7 +320,7 @@ Rectangle {
|
|||
Connections{
|
||||
target:modelData
|
||||
onSelectedChanged:{
|
||||
if(selected) {
|
||||
if(view.updateSelectionModels && selected) {
|
||||
view.currentIndex = index;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -241,11 +241,11 @@ ScrollableListView {
|
|||
Layout.fillWidth: true
|
||||
showContactAddress: sipAddressesView.showContactAddress
|
||||
|
||||
entry: $sipAddress
|
||||
entry: modelData
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: sipAddressesView.entryClicked($sipAddress.sipAddress, index)
|
||||
onClicked: sipAddressesView.entryClicked(modelData.sipAddress, index)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -284,11 +284,11 @@ ScrollableListView {
|
|||
tooltipText:modelData.tooltipText?modelData.tooltipText:''
|
||||
visible: sipAddressesView.actions[index].visible
|
||||
onClicked: {
|
||||
sipAddressesView.actions[index].handler($sipAddress)
|
||||
sipAddressesView.actions[index].handler(modelData)
|
||||
}
|
||||
Icon{
|
||||
visible: modelData.secure>0 &&
|
||||
(sipAddressesView.actions[index].secureIconVisibleHandler ? sipAddressesView.actions[index].secureIconVisibleHandler($sipAddress) : true)
|
||||
(sipAddressesView.actions[index].secureIconVisibleHandler ? sipAddressesView.actions[index].secureIconVisibleHandler(modelData) : true)
|
||||
icon: 'secure_on'
|
||||
iconSize:15
|
||||
anchors.right:parent.right
|
||||
|
|
|
|||
|
|
@ -16,17 +16,20 @@ CallStatistics 1.0 Calls/CallStatistics.qml
|
|||
|
||||
Chat 1.0 Chat/Chat.qml
|
||||
ChatMessagePreview 1.0 Chat/ChatMessagePreview.qml
|
||||
ChatForwardMessage 1.0 Chat/ChatForwardMessage.qml
|
||||
ChatReplyMessage 1.0 Chat/ChatReplyMessage.qml
|
||||
ChatReplyPreview 1.0 Chat/ChatReplyPreview.qml
|
||||
|
||||
History 1.0 History/History.qml
|
||||
|
||||
CodecsViewer 1.0 Codecs/CodecsViewer.qml
|
||||
|
||||
Avatar 1.0 Contact/Avatar.qml
|
||||
Contact 1.0 Contact/Contact.qml
|
||||
ContactDescription 1.0 Contact/ContactDescription.qml
|
||||
|
||||
SipAddressDialog 1.0 Dialog/SipAddressDialog.qml
|
||||
|
||||
History 1.0 History/History.qml
|
||||
|
||||
SipAddressesMenu 1.0 Menus/SipAddressesMenu.qml
|
||||
|
||||
MessageCounter 1.0 Misc/MessageCounter.qml
|
||||
|
|
@ -41,4 +44,4 @@ Timeline 1.0 Timeline/Timeline.qml
|
|||
|
||||
SipAddressesView 1.0 View/SipAddressesView.qml
|
||||
|
||||
ParticipantsView 1.0 View/ParticipantsView.qml
|
||||
ParticipantsView 1.0 View/ParticipantsView.qml
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue