// SPDX-FileCopyrightText: 2022 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later import QtQuick 2.15 import QtQuick.Window 2.15 import ".." import im.nheko 1.0 Window { id: imageOverlay required property string url required property string eventId required property Room room flags: Qt.FramelessWindowHint visibility: Window.FullScreen color: Qt.rgba(0.2,0.2,0.2,0.66) Shortcut { sequence: StandardKey.Cancel onActivated: imageOverlay.close() } Item { height: Math.min(parent.height, img.implicitHeight) width: Math.min(parent.width, img.implicitWidth) x: (parent.width - img.width)/2 y: (parent.height - img.height)/2 Image { id: img visible: !mxcimage.loaded anchors.fill: parent source: url.replace("mxc://", "image://MxcImage/") asynchronous: true fillMode: Image.PreserveAspectFit smooth: true mipmap: true } MxcAnimatedImage { id: mxcimage visible: loaded anchors.fill: parent roomm: imageOverlay.room play: !Settings.animateImagesOnHover || mouseArea.hovered eventId: imageOverlay.eventId } PinchHandler { } WheelHandler { property: "scale" } DragHandler { } HoverHandler { id: mouseArea } } Row { anchors.top: parent.top anchors.right: parent.right anchors.margins: Nheko.paddingLarge spacing: Nheko.paddingMedium ImageButton { height: 48 width: 48 hoverEnabled: true image: ":/icons/icons/ui/download.svg" //ToolTip.visible: hovered //ToolTip.delay: Nheko.tooltipDelay //ToolTip.text: qsTr("Download") onClicked: { if (room) { room.saveMedia(eventId); } else { TimelineManager.saveMedia(url); } imageOverlay.close(); } } ImageButton { height: 48 width: 48 hoverEnabled: true image: ":/icons/icons/ui/dismiss.svg" //ToolTip.visible: hovered //ToolTip.delay: Nheko.tooltipDelay //ToolTip.text: qsTr("Close") onClicked: imageOverlay.close() } } }