linphone-desktop/Linphone/view/Page/Form/Call/NewCallForm.qml
Julien Wadel 8ad4d8be1e Fixes magic search :
- remove suggestions items if already in contacts.
- display sip address.
2024-11-07 08:29:25 +00:00

207 lines
5.7 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls.Basic as Control
import QtQuick.Effects
import Linphone
import UtilsCpp
import SettingsCpp
FocusScope {
id: mainItem
property bool groupCallVisible
property bool displayCurrentCalls: false
property color searchBarColor: DefaultStyle.grey_100
property color searchBarBorderColor: "transparent"
property alias searchBar: searchBar
property NumericPadPopup numPadPopup
signal callButtonPressed(string address)
signal groupCallCreationRequested()
signal transferCallToAnotherRequested(CallGui dest)
signal contactClicked(FriendGui contact)
clip: true
ColumnLayout {
anchors.fill: parent
spacing: 22 * DefaultStyle.dp
ColumnLayout {
spacing: 18 * DefaultStyle.dp
visible: mainItem.displayCurrentCalls
Text {
text: qsTr("Appels en cours")
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
}
Flickable {
Layout.fillWidth: true
Layout.preferredHeight: callList.height
Layout.maximumHeight: mainItem.height/2
// Layout.fillHeight: true
contentHeight: callList.height
contentWidth: width
RoundedPane {
id: callList
anchors.left: parent.left
anchors.right: parent.right
contentItem: CallListView {
isTransferList: true
onTransferCallToAnotherRequested: (dest) => {
mainItem.transferCallToAnotherRequested(dest)
}
}
}
}
}
Control.Control {
id: listLayout
Layout.fillWidth: true
Layout.fillHeight: true
background: Item {
anchors.fill: parent
}
contentItem: ColumnLayout {
// anchors.fill: parent
spacing: 10 * DefaultStyle.dp
SearchBar {
id: searchBar
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true
Layout.rightMargin: 39 * DefaultStyle.dp
Layout.maximumWidth: mainItem.width
focus: true
color: mainItem.searchBarColor
borderColor: mainItem.searchBarBorderColor
placeholderText: qsTr("Rechercher un contact")
numericPadPopup: mainItem.numPadPopup
KeyNavigation.down: grouCallButton
}
Flickable {
Layout.fillWidth: true
Layout.fillHeight: true
Layout.topMargin: 25 * DefaultStyle.dp
contentWidth: width
contentHeight: content.height
clip: true
Control.ScrollBar.vertical: ScrollBar {
active: true
interactive: true
policy: Control.ScrollBar.AsNeeded
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.rightMargin: 8 * DefaultStyle.dp
}
ColumnLayout {
id: content
spacing: 32 * DefaultStyle.dp
anchors.left: parent.left
anchors.right: parent.right
anchors.rightMargin: 39 * DefaultStyle.dp
Button {
id: grouCallButton
visible: mainItem.groupCallVisible && !SettingsCpp.disableMeetingsFeature
Layout.preferredWidth: 320 * DefaultStyle.dp
Layout.preferredHeight: 44 * DefaultStyle.dp
padding: 0
KeyNavigation.up: searchBar
KeyNavigation.down: contactList.count >0 ? contactList : searchList
onClicked: mainItem.groupCallCreationRequested()
background: Rectangle {
anchors.fill: parent
radius: 50 * DefaultStyle.dp
gradient: Gradient {
orientation: Gradient.Horizontal
GradientStop { position: 0.0; color: DefaultStyle.main2_100}
GradientStop { position: 1.0; color: DefaultStyle.grey_0}
}
}
contentItem: RowLayout {
spacing: 16 * DefaultStyle.dp
anchors.verticalCenter: parent.verticalCenter
Image {
source: AppIcons.groupCall
Layout.preferredWidth: 44 * DefaultStyle.dp
sourceSize.width: 44 * DefaultStyle.dp
fillMode: Image.PreserveAspectFit
}
Text {
text: "Appel de groupe"
color: DefaultStyle.grey_1000
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
underline: grouCallButton.shadowEnabled
}
}
Item {
Layout.fillWidth: true
}
Image {
source: AppIcons.rightArrow
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
}
}
}
ColumnLayout {
spacing: 18 * DefaultStyle.dp
visible: contactList.contentHeight > 0
Text {
text: qsTr("Contacts")
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
}
ContactListView{
id: contactList
Layout.fillWidth: true
Layout.preferredHeight: contentHeight
Control.ScrollBar.vertical.visible: false
contactMenuVisible: false
searchBarText: searchBar.text
onContactClicked: (contact) => {
mainItem.contactClicked(contact)
}
}
}
ColumnLayout {
spacing: 18 * DefaultStyle.dp
visible: searchList.count > 0
Text {
text: qsTr("Suggestions")
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
}
ContactListView{
id: searchList
Layout.fillWidth: true
Layout.fillHeight: true
Layout.preferredHeight: contentHeight
contactMenuVisible: false
Control.ScrollBar.vertical.visible: false
initialHeadersVisible: false
displayNameCapitalization: false
searchBarText: searchBar.text
sourceFlags: LinphoneEnums.MagicSearchSource.All
hideListProxy: contactList.model
onContactClicked: (contact) => {
mainItem.contactClicked(contact)
}
}
}
Item {
Layout.fillHeight: true
}
}
}
}
}
}
}