mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-27 00:48:08 +00:00
84 lines
2.1 KiB
QML
84 lines
2.1 KiB
QML
import QtQuick
|
|
import QtQuick.Controls 2.2 as Control
|
|
import QtQuick.Effects
|
|
import Linphone
|
|
|
|
Button {
|
|
id: mainItem
|
|
property alias popup: popup
|
|
property var contentImageColor
|
|
checked: popup.visible
|
|
implicitWidth: 24 * DefaultStyle.dp
|
|
implicitHeight: 24 * DefaultStyle.dp
|
|
width: 24 * DefaultStyle.dp
|
|
height: 24 * DefaultStyle.dp
|
|
leftPadding: 0
|
|
rightPadding: 0
|
|
topPadding: 0
|
|
bottomPadding: 0
|
|
icon.source: AppIcons.more
|
|
icon.width: 24 * DefaultStyle.dp
|
|
icon.height: 24 * DefaultStyle.dp
|
|
function close() {
|
|
popup.close()
|
|
}
|
|
|
|
background: Rectangle {
|
|
anchors.fill: mainItem
|
|
visible: mainItem.checked
|
|
color: DefaultStyle.main2_300
|
|
radius: 40 * DefaultStyle.dp
|
|
}
|
|
contentItem: EffectImage {
|
|
imageSource: mainItem.icon.source
|
|
imageWidth: mainItem.icon.width
|
|
imageHeight: mainItem.icon.height
|
|
colorizationColor: mainItem.contentImageColor
|
|
}
|
|
onPressed: {
|
|
if (popup.visible) popup.close()
|
|
else popup.open()
|
|
}
|
|
Control.Popup {
|
|
id: popup
|
|
x: 0
|
|
y: mainItem.height
|
|
closePolicy: Popup.CloseOnPressOutsideParent | Popup.CloseOnPressOutside
|
|
padding: 10 * DefaultStyle.dp
|
|
parent: mainItem // Explicit define for coordinates references.
|
|
|
|
onVisibleChanged: {
|
|
if (!visible) return
|
|
// Do not use popup.height as it is not consistent.
|
|
var position = mainItem.mapToItem(mainItem.Window.contentItem, mainItem.x + popup.implicitContentWidth + popup.padding, mainItem.y + mainItem.height + popup.implicitContentHeight + popup.padding)
|
|
if (position.y >= mainItem.Window.height) {
|
|
y = -mainItem.height - popup.implicitContentHeight
|
|
}else {
|
|
y = mainItem.height + popup.padding
|
|
}
|
|
if (position.x >= mainItem.Window.width) {
|
|
x = -popup.implicitContentWidth
|
|
} else {
|
|
x = 0
|
|
}
|
|
}
|
|
|
|
background: Item {
|
|
anchors.fill: parent
|
|
Rectangle {
|
|
id: callOptionsMenuPopup
|
|
anchors.fill: parent
|
|
color: DefaultStyle.grey_0
|
|
radius: 16 * DefaultStyle.dp
|
|
}
|
|
MultiEffect {
|
|
source: callOptionsMenuPopup
|
|
anchors.fill: callOptionsMenuPopup
|
|
shadowEnabled: true
|
|
shadowBlur: 1
|
|
shadowColor: DefaultStyle.grey_900
|
|
shadowOpacity: 0.4
|
|
}
|
|
}
|
|
}
|
|
}
|