animation on progress status account connection + key binding open research in history

This commit is contained in:
Gaelle Braud 2025-08-04 17:02:47 +02:00
parent 55ce938d0b
commit 6ccbdf6ef8
5 changed files with 657 additions and 626 deletions

View file

@ -67,7 +67,7 @@ ListView {
} }
} }
onAtYEndChanged: if (atYEnd) { onAtYEndChanged: if (atYEnd && chat) {
chat.core.lMarkAsRead() chat.core.lMarkAsRead()
} }
onAtYBeginningChanged: if (atYBeginning) { onAtYBeginningChanged: if (atYBeginning) {

View file

@ -24,7 +24,7 @@ Loader{
: contact : contact
? contact.core.defaultAddress ? contact.core.defaultAddress
: '' : ''
readonly property string address: SettingsCpp.hideSipAddresses ? UtilsCpp.getUsername(_address) : _address readonly property var address: SettingsCpp.hideSipAddresses ? UtilsCpp.getUsername(_address) : _address
property var displayNameObj: UtilsCpp.getDisplayName(_address) property var displayNameObj: UtilsCpp.getDisplayName(_address)
property var displayNameVal: account && account.core.displayName property var displayNameVal: account && account.core.displayName
? account.core.displayName ? account.core.displayName
@ -126,6 +126,14 @@ Loader{
: (contact : (contact
? contact.core?.presenceIcon ? contact.core?.presenceIcon
: "") : "")
RotationAnimator on rotation {
running: mainItem.account && mainItem.account.core.registrationState === LinphoneEnums.RegistrationState.Progress
direction: RotationAnimator.Clockwise
from: 0
to: 360
loops: Animation.Infinite
duration: 10000
}
} }
} }

View file

@ -73,15 +73,24 @@ Control.Control{
RowLayout { RowLayout {
anchors.fill: parent anchors.fill: parent
Image { Image {
sourceSize.width: 11 * DefaultStyle.dp id: registrationImage
sourceSize.height: 11 * DefaultStyle.dp sourceSize.width: Math.round(11 * DefaultStyle.dp)
sourceSize.height: Math.round(11 * DefaultStyle.dp)
smooth: false smooth: false
Layout.preferredWidth: 11 * DefaultStyle.dp Layout.preferredWidth: Math.round(11 * DefaultStyle.dp)
Layout.preferredHeight: 11 * DefaultStyle.dp Layout.preferredHeight: Math.round(11 * DefaultStyle.dp)
source: presenceBar.isRegistered source: presenceBar.isRegistered
? mainItem.account.core.presenceIcon ? mainItem.account.core.presenceIcon
: mainItem.account?.core.registrationIcon || "" : mainItem.account?.core.registrationIcon || ""
Layout.leftMargin: 8 * DefaultStyle.dp Layout.leftMargin: Math.round(8 * DefaultStyle.dp)
RotationAnimator on rotation {
running: mainItem.account && mainItem.account.core.registrationState === LinphoneEnums.RegistrationState.Progress
direction: RotationAnimator.Clockwise
from: 0
to: 360
loops: Animation.Infinite
duration: 10000
}
} }
Text { Text {
id: presenceOrRegistrationText id: presenceOrRegistrationText

View file

@ -9,7 +9,7 @@ import UtilsCpp
import SettingsCpp import SettingsCpp
import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
RowLayout { FocusScope {
id: mainItem id: mainItem
property ChatGui chat property ChatGui chat
// used to show chat message reactions in details panel // used to show chat message reactions in details panel
@ -19,7 +19,6 @@ RowLayout {
property CallGui call property CallGui call
property alias callHeaderContent: splitPanel.headerContentItem property alias callHeaderContent: splitPanel.headerContentItem
property bool replyingToMessage: false property bool replyingToMessage: false
spacing: 0
enum PanelType { MessageReactions, SharedFiles, Medias, ImdnStatus, ForwardToList, ManageParticipants, EphemeralSettings, None} enum PanelType { MessageReactions, SharedFiles, Medias, ImdnStatus, ForwardToList, ManageParticipants, EphemeralSettings, None}
signal oneOneCall(bool video) signal oneOneCall(bool video)
@ -51,8 +50,17 @@ RowLayout {
} }
Keys.onPressed: (event) => { Keys.onPressed: (event) => {
if (event.modifiers & Qt.ControlModifier && event.key === Qt.Key_F) searchBarLayout.visible = true event.accepted = false
if (event.modifiers & Qt.ControlModifier && event.key === Qt.Key_F) {
searchBarLayout.visible = true
event.accepted = true
} }
}
RowLayout {
anchors.fill: parent
spacing: 0
//onEventChanged: { //onEventChanged: {
// TODO : call when all messages read after scroll to unread feature available // TODO : call when all messages read after scroll to unread feature available
@ -162,6 +170,10 @@ RowLayout {
} }
spacing: Math.round(50 * DefaultStyle.dp) spacing: Math.round(50 * DefaultStyle.dp)
height: Math.round(65 * DefaultStyle.dp) height: Math.round(65 * DefaultStyle.dp)
Connections {
target: mainItem
function onChatChanged() {searchBarLayout.visible = false}
}
SearchBar { SearchBar {
id: chatMessagesSearchBar id: chatMessagesSearchBar
Layout.fillWidth: true Layout.fillWidth: true
@ -235,6 +247,7 @@ RowLayout {
anchors.fill: parent anchors.fill: parent
anchors.leftMargin: Math.round(18 * DefaultStyle.dp) anchors.leftMargin: Math.round(18 * DefaultStyle.dp)
anchors.rightMargin: Math.round(18 * DefaultStyle.dp) anchors.rightMargin: Math.round(18 * DefaultStyle.dp)
onActiveFocusChanged: console.log("chat messages focus", activeFocus)
Control.ScrollBar.vertical: scrollbar Control.ScrollBar.vertical: scrollbar
onShowReactionsForMessageRequested: (chatMessage) => { onShowReactionsForMessageRequested: (chatMessage) => {
mainItem.chatMessage = chatMessage mainItem.chatMessage = chatMessage
@ -705,4 +718,5 @@ RowLayout {
} }
} }
} }
}
} }

View file

@ -334,8 +334,8 @@ AbstractMainPage {
SelectedChatView { SelectedChatView {
visible: chat != undefined && chat != null visible: chat != undefined && chat != null
anchors.fill: parent anchors.fill: parent
chat: mainItem.selectedChatGui || null
onChatChanged: if (mainItem.selectedChatGui !== chat) mainItem.selectedChatGui = chat onChatChanged: if (mainItem.selectedChatGui !== chat) mainItem.selectedChatGui = chat
chat: mainItem.selectedChatGui ? mainItem.selectedChatGui : null
} }
} }
} }