linphone-desktop/linphone-app/ui/modules/Linphone/SmartSearchBar/SmartSearchBar.qml

127 lines
3.7 KiB
QML

import QtQuick 2.7
import Common 1.0
import Linphone 1.0
import UtilsCpp 1.0
import LinphoneEnums 1.0
import Linphone.Styles 1.0
// =============================================================================
SearchBox {
id: searchBox
// ---------------------------------------------------------------------------
readonly property alias isOpen: searchBox._isOpen
property alias header : view.headerItem
property alias actions : view.actions
property alias showHeader : view.showHeader
property alias participantListModel : searchModel.participantListModel
function addAddressToIgnore(entry){
searchModel.addAddressToIgnore(entry)
}
function removeAddressToIgnore(entry){
searchModel.removeAddressToIgnore(entry)
}
function isIgnored(address){
return searchModel.isIgnored(address)
}
property var resultExceptions : []
// ---------------------------------------------------------------------------
signal addContact (string sipAddress)
signal launchChat (string sipAddress)
signal launchSecureChat (string sipAddress)
signal launchCall (string sipAddress)
signal launchVideoCall (string sipAddress)
signal entryClicked (var entry)
// ---------------------------------------------------------------------------
entryHeight: SipAddressesViewStyle.entry.height
// ---------------------------------------------------------------------------
onEnterPressed: {
var sipAddress = view.interpretableSipAddress
return sipAddress.length > 0 && SettingsModel.outgoingCallsEnabled && searchBox.launchCall(sipAddress)
}
// ---------------------------------------------------------------------------
SipAddressesView {
id: view
actions: [{
colorSet: SipAddressesViewStyle.videoCall,
secure: 0,
visible: true,
handler: function (entry) {
searchBox.launchVideoCall(entry.sipAddress)
searchBox.closeMenu()
},
visible: SettingsModel.videoAvailable && SettingsModel.outgoingCallsEnabled && SettingsModel.showStartVideoCallButton
}, {
colorSet: SipAddressesViewStyle.call,
secure: 0,
visible: true,
handler: function (entry) {
searchBox.launchCall(entry.sipAddress)
searchBox.closeMenu()
},
visible: SettingsModel.outgoingCallsEnabled
}, {
colorSet: SettingsModel.getShowStartChatButton() ? SipAddressesViewStyle.chat : SipAddressesViewStyle.history,
secure: 0,
handler: function (entry) {
searchBox.launchChat(entry.sipAddress)
searchBox.closeMenu()
},
visible: SettingsModel.standardChatEnabled
}, {
colorSet: SettingsModel.getShowStartChatButton() ? SipAddressesViewStyle.chat : SipAddressesViewStyle.history,
secure: 1,
visible: SettingsModel.secureChatEnabled && AccountSettingsModel.conferenceUri != '',
secureIconVisibleHandler : function(entry) {
return true;
// Snippet for reactivating displaying icon/special icon on capability.
//if(entry)
// return UtilsCpp.hasCapability(entry.sipAddress ? entry.sipAddress : entry, LinphoneEnums.FriendCapabilityLimeX3Dh, true);
//else
// return false;
},
handler: function (entry) {
searchBox.launchSecureChat(entry.sipAddress)
searchBox.closeMenu()
}
}
]
headerButtonDescription: qsTr('addContact')
headerButtonIcon: 'contact_add_custom'
headerButtonOverwriteColor: SipAddressesViewStyle.header.button.colorModel.color
headerButtonAction: SettingsModel.contactsEnabled && (function (sipAddress) {
searchBox.closeMenu()
searchBox.addContact(sipAddress)
})
genSipAddress: searchBox.filter
model: SearchSipAddressesProxyModel {
id:searchModel
}
onEntryClicked: {
searchBox.entryClicked(entry)
searchBox.closeMenu()
}
}
}