import QtQuick 2.9
import QtQuick.Controls 2.2
import QtGraphicalEffects 1.0

import de.itsblue.ScStw.Styling 2.0
import de.itsblue.ScStw.Styling.Components 1.0

Button {
    id: control

    property string image
    property color backgroundColor: appTheme.theme.colors.button
    property real imageScale: 1
    property double glowRadius: 0.001
    property double glowSpread: 0.2
    property bool glowVisible: true
    property double glowScale: 0.75
    property double glowOpacity: Math.pow( control.opacity, 100 )

    Behavior on text {
        //animate a text change
        enabled: true
        FadeAnimation {
            target: text
        }
    }

    contentItem: Item {}

    background: Item {
        id: controlBackgroundContainer

        RectangularGlow {
            id: effect
            glowRadius: control.glowRadius
            spread: control.glowSpread
            color: "black"

            visible: control.glowVisible

            cornerRadius: controlBackground.radius
            anchors.fill: controlBackground
            scale: control.glowScale
            opacity: control.glowOpacity
        }

        Rectangle {
            id:  controlBackground

            anchors.fill: parent

            radius: height * 0.5

            color: control.down ? Qt.darker(control.backgroundColor, 1.2) : control.backgroundColor

            Behavior on color {
                ColorAnimation {
                    duration: 200
                }
            }

            Text {
                id: text

                anchors.centerIn: parent
                anchors.verticalCenterOffset: -height * 0.05
                height: parent.height * 0.6
                width: parent.width * 0.6

                fontSizeMode: Text.Fit
                font.pixelSize: Math.max(parent.height * 0.16, parent.width * 0.16)
                font.family: "Helvetica"

                verticalAlignment: Text.AlignVCenter
                horizontalAlignment: Text.AlignHCenter

                text: control.text

                color: enabled ? appTheme.theme.colors.text:appTheme.theme.colors.disabledText
            }

            Image {
                id: buttonIcon
                source: control.image

                anchors.centerIn: parent
                height: parent.height * 0.5
                width: height

                mipmap: true

                fillMode: Image.PreserveAspectFit

                scale: control.imageScale
            }
        }
    }

}
