import QtQuick 2.7
import QtQuick.Controls 2.2 as Control
import QtQuick.Effects
import QtQuick.Layouts
import Linphone
  
Popup {
	id: mainItem
	modal: true
	anchors.centerIn: parent
	closePolicy: Control.Popup.NoAutoClose
	rightPadding: 10 * DefaultStyle.dp
	leftPadding: 10 * DefaultStyle.dp
	topPadding: 10 * DefaultStyle.dp
	bottomPadding: 10 * DefaultStyle.dp
	property int radius: 16 * DefaultStyle.dp
	property color underlineColor: DefaultStyle.main1_500_main
  	property alias buttons: buttonsLayout.data
  	property alias content: contentLayout.data
	property string text
	signal accepted()
	signal rejected()

	background: Item {
		anchors.fill: parent
		Rectangle {
			visible: mainItem.underlineColor != undefined
			width: mainItem.width
			x: backgroundItem.x
			y: backgroundItem.y
			height: backgroundItem.height + 2 * DefaultStyle.dp
			color: mainItem.underlineColor
			radius: mainItem.radius
		}
		Rectangle {
			id: backgroundItem
			anchors.fill: parent
			width: mainItem.width
			height: mainItem.implicitHeight
			radius: mainItem.radius
			color: DefaultStyle.grey_0
			border.color: DefaultStyle.grey_0
		}
		MultiEffect {
			anchors.fill: backgroundItem
			source: backgroundItem
			shadowEnabled: true
			shadowColor: DefaultStyle.grey_900
			shadowBlur: 1.0
			shadowOpacity: 0.1
		}
	}

	contentItem: ColumnLayout {
		spacing: 20 * DefaultStyle.dp

		ColumnLayout {
			id: contentLayout
			Layout.fillWidth: true
			Layout.fillHeight: true
			Layout.alignment: Qt.AlignHCenter
		}
		Text {
			id: defaultText
			visible: text.length != 0
			width: parent.width
			Layout.preferredWidth: 278 * DefaultStyle.dp
			Layout.alignment: Qt.AlignCenter
			text: mainItem.text
			font {
				pixelSize: 14 * DefaultStyle.dp
				weight: 400 * DefaultStyle.dp
			}
			wrapMode: Text.Wrap
			horizontalAlignment: Text.AlignHCenter
		}

		RowLayout {
			id: buttonsLayout
			Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
			spacing: 10 * DefaultStyle.dp

			// Default buttons only visible if no other children
			// have been set
			Button {
				visible: mainItem.buttons.length === 2
				text: qsTr("Oui")
				leftPadding: 20 * DefaultStyle.dp
				rightPadding: 20 * DefaultStyle.dp
				topPadding: 11 * DefaultStyle.dp
				bottomPadding: 11 * DefaultStyle.dp
				onClicked: {
					mainItem.accepted()
					mainItem.close()
				}
			}
			Button {
				visible: mainItem.buttons.length === 2
				text: qsTr("Non")
				leftPadding: 20 * DefaultStyle.dp
				rightPadding: 20 * DefaultStyle.dp
				topPadding: 11 * DefaultStyle.dp
				bottomPadding: 11 * DefaultStyle.dp
				onClicked: {
					mainItem.rejected()
					mainItem.close()
				}
			}
		}
	}
}