blob: 26c5406f22734d38db7ea11f5ef6e2ebc1a01029 [file] [log] [blame]
/*
* Copyright (C) 2020 by Savoir-faire Linux
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtGraphicalEffects 1.12
import net.jami.Models 1.0
import "../../commoncomponents"
Menu {
id: contextMenu
property string responsibleAccountId: ""
property string responsibleConvUid: ""
property int generalMenuSeparatorCount: 0
property int commonBorderWidth: 1
font.pointSize: JamiTheme.menuFontSize
function openMenu(){
visible = true
visible = false
visible = true
}
GeneralMenuSeparator {
preferredWidth: startVideoCallItem.preferredWidth
preferredHeight: 8
separatorColor: "transparent"
Component.onCompleted: {
generalMenuSeparatorCount++
}
}
/*
* All GeneralMenuItems should remain the same width / height.
*/
GeneralMenuItem {
id: startVideoCallItem
itemName: qsTr("Start video call")
iconSource: "qrc:/images/icons/ic_video_call_24px.svg"
leftBorderWidth: commonBorderWidth
rightBorderWidth: commonBorderWidth
onClicked: {
contextMenu.close()
ConversationsAdapter.selectConversation(responsibleAccountId,
responsibleConvUid, false)
CallAdapter.placeCall()
}
}
GeneralMenuItem {
id: startAudioCallItem
itemName: qsTr("Start audio call")
iconSource: "qrc:/images/icons/ic_phone_24px.svg"
leftBorderWidth: commonBorderWidth
rightBorderWidth: commonBorderWidth
onClicked: {
contextMenu.close()
ConversationsAdapter.selectConversation(responsibleAccountId,
responsibleConvUid, false)
CallAdapter.placeAudioOnlyCall()
}
}
GeneralMenuItem {
id: clearConversationItem
itemName: qsTr("Clear conversation")
iconSource: "qrc:/images/icons/ic_clear_24px.svg"
leftBorderWidth: commonBorderWidth
rightBorderWidth: commonBorderWidth
onClicked: {
contextMenu.close()
ClientWrapper.utilsAdaptor.clearConversationHistory(responsibleAccountId,
responsibleConvUid)
}
}
GeneralMenuItem {
id: removeContactItem
itemName: qsTr("Remove contact")
iconSource: "qrc:/images/icons/round-remove_circle-24px.svg"
leftBorderWidth: commonBorderWidth
rightBorderWidth: commonBorderWidth
onClicked: {
contextMenu.close()
ClientWrapper.utilsAdaptor.removeConversation(responsibleAccountId,
responsibleConvUid)
}
}
GeneralMenuSeparator {
preferredWidth: startVideoCallItem.preferredWidth
preferredHeight: commonBorderWidth
Component.onCompleted: {
generalMenuSeparatorCount++
}
}
GeneralMenuItem {
id: blockContactItem
itemName: qsTr("Block contact")
iconSource: "qrc:/images/icons/ic_block_24px.svg"
leftBorderWidth: commonBorderWidth
rightBorderWidth: commonBorderWidth
onClicked: {
contextMenu.close()
ClientWrapper.utilsAdaptor.removeConversation(responsibleAccountId,
responsibleConvUid, true)
}
}
GeneralMenuSeparator {
preferredWidth: startVideoCallItem.preferredWidth
preferredHeight: commonBorderWidth
Component.onCompleted: {
generalMenuSeparatorCount++
}
}
GeneralMenuItem {
id: profileItem
itemName: qsTr("Profile")
iconSource: "qrc:/images/icons/person-24px.svg"
leftBorderWidth: commonBorderWidth
rightBorderWidth: commonBorderWidth
onClicked: {
contextMenu.close()
userProfile.open()
}
}
GeneralMenuSeparator {
preferredWidth: startVideoCallItem.preferredWidth
preferredHeight: 8
separatorColor: "transparent"
Component.onCompleted: {
generalMenuSeparatorCount++
}
}
background: Rectangle {
implicitWidth: startVideoCallItem.preferredWidth
implicitHeight: startVideoCallItem.preferredHeight
* (contextMenu.count - generalMenuSeparatorCount)
border.width: commonBorderWidth
border.color: JamiTheme.tabbarBorderColor
}
}