Skip to content
Snippets Groups Projects
Commit ad7d8e13 authored by Aline Gondim Santos's avatar Aline Gondim Santos Committed by Sébastien Blin
Browse files

callviewcontextmenu: cleanup

Change-Id: I76f77f7e5f7eb3e2c46e01f9cdd51b2d40af7739
GitLab: #975
parent 5df521eb
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<g id="noun-about-3359358" transform="translate(-188.36 -188.36)">
<path id="Path_14" d="M200.4,190.4c-5.5,0-10,4.5-10,10s4.5,10,10,10s10-4.5,10-10C210.4,194.8,205.9,190.4,200.4,190.4z
M200.4,208.5c-4.5,0-8.2-3.7-8.2-8.2s3.7-8.2,8.2-8.2c4.5,0,8.2,3.7,8.2,8.2C208.5,204.9,204.9,208.5,200.4,208.5L200.4,208.5z"/>
<path id="Path_15" d="M200.4,197.7c-0.5,0-0.9,0.4-0.9,0.9c0,0,0,0,0,0v7.7c0,0.5,0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9l0,0v-7.7
C201.3,198.1,200.9,197.7,200.4,197.7C200.4,197.7,200.4,197.7,200.4,197.7z"/>
<path id="Path_16" d="M201.3,195.3c0,0.5-0.4,0.9-0.9,0.9c-0.5,0-0.9-0.4-0.9-0.9c0-0.5,0.4-0.9,0.9-0.9l0,0
C200.9,194.4,201.3,194.8,201.3,195.3"/>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<g>
<path d="M2.9,9.1c0.5,0,0.9-0.4,0.9-0.9V4.2c0-0.2,0.2-0.3,0.3-0.3h3.9c0.5,0,1-0.4,1-0.9S8.6,2,8.1,2H4.2C3,2,2,3,2,4.2v3.9
C2,8.6,2.4,9.1,2.9,9.1z"/>
<path d="M21.1,14.9c-0.5,0-0.9,0.4-0.9,0.9v3.9c0,0.2-0.2,0.3-0.3,0.3h-3.9c-0.5,0-0.9,0.4-0.9,0.9c0,0.5,0.4,1,0.9,1h3.9
c1.2,0,2.2-1,2.2-2.2v-3.9C22,15.4,21.6,14.9,21.1,14.9z"/>
<path d="M8.1,20.1H4.2c-0.2,0-0.3-0.2-0.3-0.3v-3.9c0-0.5-0.4-1-1-1c-0.5,0-0.9,0.4-0.9,1v3.9C2,21,3,22,4.2,22h3.9
c0.5,0,1-0.4,1-1C9.1,20.5,8.6,20.1,8.1,20.1z"/>
<path d="M15.9,3.9h3.9c0.2,0,0.3,0.2,0.3,0.3v3.9c0,0.5,0.4,0.9,0.9,0.9S22,8.6,22,8.1V4.2C22,3,21,2,19.8,2h-3.9
c-0.5,0-0.9,0.4-0.9,0.9S15.4,3.9,15.9,3.9z"/>
<path d="M16.8,12c0-1.3-0.5-2.5-1.4-3.4c-0.9-0.9-2.1-1.4-3.4-1.4c0,0,0,0,0,0c-1.3,0-2.5,0.5-3.4,1.4C7.7,9.5,7.2,10.7,7.2,12
c0,2.7,2.2,4.8,4.8,4.8c0,0,0,0,0,0C14.7,16.8,16.8,14.7,16.8,12z M12,9.1C12,9.1,12,9.1,12,9.1c1.6,0,2.9,1.3,2.9,2.9
c0,0.8-0.3,1.5-0.9,2.1c-0.5,0.5-1.3,0.9-2.1,0.9c0,0,0,0,0,0c-1.6,0-2.9-1.3-2.9-2.9c0-0.8,0.3-1.5,0.9-2.1
C10.5,9.4,11.2,9.1,12,9.1z"/>
</g>
</svg>
......@@ -56,12 +56,12 @@ Item {
hoveredOverlaySinkId,
hoveredOverVideoMuted)
{
callViewContextMenu.x = x
callViewContextMenu.y = y
callViewContextMenu.x = root.width - x >= callViewContextMenu.width ? x : root.width - callViewContextMenu.width
callViewContextMenu.y = root.height - y >= callViewContextMenu.height ? y : root.height - callViewContextMenu.height
callViewContextMenu.hoveredOverlayUri = hoveredOverlayUri
callViewContextMenu.hoveredOverlaySinkId = hoveredOverlaySinkId
callViewContextMenu.hoveredOverVideoMuted = hoveredOverVideoMuted
callViewContextMenu.openMenu()
callViewContextMenu.open()
}
DropArea {
......@@ -178,18 +178,14 @@ Item {
CallViewContextMenu {
id: callViewContextMenu
onTransferCallButtonClicked: openContactPicker(ContactList.TRANSFER)
onPluginItemClicked: openPluginsMenu()
onScreenshotTaken: {
toastManager.instantiateToast();
}
onRecordCallClicked: CallAdapter.recordThisCallToggle()
onOpenSelectionWindow: {
SelectScreenWindowCreation.presentSelectScreenWindow(
appWindow, windowSelection)
}
onScreenshotButtonHoveredChanged: {
participantsLayer.screenshotButtonHovered = screenshotButtonHovered
}
}
onVisibleChanged: {
callViewContextMenu.close()
}
}
......@@ -19,6 +19,8 @@
*/
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import net.jami.Models 1.1
import net.jami.Adapters 1.1
......@@ -28,206 +30,119 @@ import "../../commoncomponents"
import "../../commoncomponents/contextmenu"
import "../js/screenrubberbandcreation.js" as ScreenRubberBandCreation
ContextMenuAutoLoader {
Popup {
id: root
property bool windowSelection: false
signal pluginItemClicked
signal transferCallButtonClicked
signal recordCallClicked
signal openSelectionWindow
signal screenshotTaken
property bool screenshotButtonHovered: screenShot.itemHovered
property bool screenshotButtonHovered: false
property string hoveredOverlayUri: ""
property string hoveredOverlaySinkId: ""
property bool hoveredOverVideoMuted: true
property list<GeneralMenuItem> menuItems: [
GeneralMenuItem {
id: resumePauseCall
canTrigger: CurrentCall.isSIP
itemName: CurrentCall.isPaused ?
JamiStrings.resumeCall :
JamiStrings.pauseCall
iconSource: CurrentCall.isPaused ?
JamiResources.play_circle_outline_24dp_svg :
JamiResources.pause_circle_outline_24dp_svg
onClicked: {
CallAdapter.holdThisCallToggle()
}
},
GeneralMenuItem {
id: inputPanelSIP
canTrigger: CurrentCall.isSIP
itemName: JamiStrings.sipInputPanel
iconSource: JamiResources.ic_keypad_svg
onClicked: {
sipInputPanel.open()
}
},
GeneralMenuItem {
id: callTransfer
canTrigger: CurrentCall.isSIP
itemName: JamiStrings.transferCall
iconSource: JamiResources.phone_forwarded_24dp_svg
addMenuSeparatorAfter: CurrentCall.isSIP
onClicked: {
root.transferCallButtonClicked()
}
},
GeneralMenuItem {
id: localRecord
itemName: CurrentCall.isRecordingLocally ?
JamiStrings.stopRec :
JamiStrings.startRec
iconSource: JamiResources.fiber_manual_record_24dp_svg
iconColor: JamiTheme.recordIconColor
onClicked: {
root.recordCallClicked()
}
},
GeneralMenuItem {
id: fullScreen
itemName: layoutManager.isCallFullscreen ?
JamiStrings.exitFullScreen :
JamiStrings.viewFullScreen
iconSource: layoutManager.isCallFullscreen ?
JamiResources.close_fullscreen_24dp_svg :
JamiResources.open_in_full_24dp_svg
onClicked: {
callStackView.toggleFullScreen()
}
},
GeneralMenuItem {
id: stopSharing
canTrigger: CurrentCall.isSharing
&& !CurrentCall.isSIP
&& !CurrentCall.isVideoMuted
itemName: JamiStrings.stopSharing
iconSource: JamiResources.share_stop_black_24dp_svg
iconColor: JamiTheme.redColor
onClicked: AvAdapter.stopSharing(CurrentCall.sharingSource)
},
GeneralMenuItem {
id: shareScreen
canTrigger: CurrentAccount.videoEnabled_Video
&& AvAdapter.currentRenderingDeviceType !== Video.DeviceType.DISPLAY
&& !CurrentCall.isSIP
itemName: JamiStrings.shareScreen
iconSource: JamiResources.laptop_black_24dp_svg
onClicked: {
if (Qt.application.screens.length === 1) {
AvAdapter.shareEntireScreen(0)
} else {
windowSelection = false
openSelectionWindow()
}
}
},
GeneralMenuItem {
id: shareWindow
canTrigger: CurrentAccount.videoEnabled_Video
&& AvAdapter.currentRenderingDeviceType !== Video.DeviceType.DISPLAY
&& !CurrentCall.isSIP
itemName: JamiStrings.shareWindow
iconSource: JamiResources.window_black_24dp_svg
onClicked: {
AvAdapter.getListWindows()
if (AvAdapter.windowsNames.length >= 1) {
windowSelection = true
openSelectionWindow()
}
}
},
GeneralMenuItem {
id: shareScreenArea
canTrigger: CurrentAccount.videoEnabled_Video
&& AvAdapter.currentRenderingDeviceType !== Video.DeviceType.DISPLAY
&& !CurrentCall.isSIP
&& Qt.platform.os.toString() !== "windows" // temporarily disable for windows
itemName: JamiStrings.shareScreenArea
iconSource: JamiResources.share_area_black_24dp_svg
onClicked: {
if (Qt.platform.os !== "windows") {
AvAdapter.shareScreenArea(0, 0, 0, 0)
} else {
ScreenRubberBandCreation.createScreenRubberBandWindowObject()
ScreenRubberBandCreation.showScreenRubberBandWindow()
}
}
},
GeneralMenuItem {
id: shareFile
canTrigger: CurrentAccount.videoEnabled_Video
&& !CurrentCall.isSIP
itemName: JamiStrings.shareFile
iconSource: JamiResources.file_black_24dp_svg
onClicked: {
jamiFileDialog.open()
}
},
GeneralMenuItem {
id: viewPlugin
canTrigger: PluginAdapter.isEnabled &&
PluginAdapter.callMediaHandlersListCount
itemName: JamiStrings.viewPlugin
iconSource: JamiResources.extension_24dp_svg
onClicked: {
root.pluginItemClicked()
}
},
GeneralMenuItem {
id: advancedInformation
canTrigger: true
itemName: JamiStrings.advancedInformation
iconSource: JamiResources.settings_24dp_svg
onClicked: {
CallAdapter.startTimerInformation();
callInformationOverlay.open()
}
},
GeneralMenuItem {
id: screenShot
canTrigger: hoveredOverlayUri !== "" && hoveredOverVideoMuted === false
itemName: JamiStrings.tileScreenshot
iconSource: JamiResources.baseline_camera_alt_24dp_svg
MaterialToolTip {
id: tooltip
parent: screenShot
visible: screenShot.itemHovered
delay: Qt.styleHints.mousePressAndHoldInterval
property bool isMe: CurrentAccount.uri === hoveredOverlayUri
text: isMe ? JamiStrings.me
: UtilsAdapter.getBestNameForUri(CurrentAccount.id, hoveredOverlayUri)
}
onClicked: {
if (CallAdapter.takeScreenshot(videoProvider.captureRawVideoFrame(hoveredOverlaySinkId),
UtilsAdapter.getDirScreenshot())) {
screenshotTaken()
property var listModel: ListModel {
id: actionsModel
}
onAboutToShow: {
actionsModel.clear()
actionsModel.append({"Top": true})
if (hoveredOverlayUri !== "" && hoveredOverVideoMuted === false)
actionsModel.append({"Name": JamiStrings.tileScreenshot,
"IconSource" : JamiResources.screenshot_black_24dp_svg})
actionsModel.append({"Name": JamiStrings.advancedInformation,
"IconSource": JamiResources.informations_black_24dp_svg})
actionsModel.append({"Bottom": true})
itemListView.implicitHeight = 20 + 45 * (actionsModel.count - 2)
}
onAboutToHide: {
screenshotButtonHovered = false
hoveredOverlayUri = ""
hoveredOverlaySinkId = ""
hoveredOverVideoMuted = true
actionsModel.clear()
}
background: Rectangle {
color: "transparent"
}
contentItem: Rectangle {
id: container
width: childrenRect.width
height: childrenRect.height
color: "#c4272727"
radius: 4
ColumnLayout {
anchors.topMargin: 8
anchors.bottomMargin: 8
ListView {
id: itemListView
orientation: ListView.Vertical
implicitWidth: 200
implicitHeight: 100
interactive: false
model: actionsModel
delegate: ItemDelegate {
id: menuItem
width: 200
height: Top || Bottom ? 10 : 45
background: Rectangle {
visible: !Top && !Bottom
anchors.fill: parent
color: menuItem.down ? "#c4aaaaaa" : menuItem.hovered ? "#c4777777" : "transparent"
}
RowLayout {
anchors.fill: parent
visible: !Top && !Bottom
ResponsiveImage {
Layout.leftMargin: JamiTheme.preferredMarginSize
source: IconSource
color: "white"
width: 20
height: 20
}
Text {
Layout.fillWidth: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
text: Name
elide: Text.ElideRight
font.pointSize: JamiTheme.participantFontSize
color: "white"
}
}
onClicked: {
switch(Name) {
case JamiStrings.advancedInformation:
CallAdapter.startTimerInformation()
callInformationOverlay.open()
break
case JamiStrings.tileScreenshot:
if (CallAdapter.takeScreenshot(videoProvider.captureRawVideoFrame(hoveredOverlaySinkId),
UtilsAdapter.getDirScreenshot())) {
screenshotTaken()
}
break
}
root.close()
}
onHoveredChanged: {
if (Name === JamiStrings.tileScreenshot) {
screenshotButtonHovered = hovered
}
}
}
}
}
]
Component.onCompleted: menuItemsToLoad = menuItems
}
}
......@@ -106,7 +106,7 @@ Item {
Rectangle {
z: -1
border.color: JamiTheme.buttonTintedBlue
border.color: voiceActive ? JamiTheme.buttonTintedBlue : "yellow"
border.width: 2
color: "transparent"
radius: 10
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment