import QtQuick
import QtQuick.Controls 2.15

// Плашка хода долгой операции в левом нижнем углу: не задевает кнопку запуска,
// сообщение по центру и кнопки папки с настройками.
Rectangle {
    id: panel

    property string title: ""
    property string status: ""
    // -1 — итог ещё неизвестен, показываем «…» вместо процентов.
    property double fraction: -1
    // Необязательная вторая строка: мегабайты у загрузки, путь у архивации.
    property string detail: ""
    property bool cancellable: true

    signal cancelRequested()

    width: 320
    height: 72
    radius: 8
    color: "#1e1e1e"
    opacity: 0.94
    border.color: "#91B315"
    border.width: 1

    Text {
        x: 12; y: 8
        width: parent.width - 70
        elide: Text.ElideRight
        color: "#ffffff"
        font.pixelSize: 12
        font.bold: true
        text: panel.title
    }

    Text {
        anchors.right: parent.right
        anchors.rightMargin: 12
        y: 8
        color: "#91B315"
        font.pixelSize: 12
        text: panel.fraction < 0 ? "…" : Math.round(panel.fraction * 100) + "%"
    }

    Rectangle {
        id: track
        x: 12; y: 30
        width: parent.width - 24
        height: 6
        radius: 3
        color: "#2a2a2a"

        Rectangle {
            width: panel.fraction > 0 ? track.width * panel.fraction : 0
            height: parent.height
            radius: 3
            color: "#91B315"
            Behavior on width { NumberAnimation { duration: 120 } }
        }
    }

    Text {
        x: 12; y: 44
        width: parent.width - 40
        elide: Text.ElideMiddle
        color: "#888888"
        font.pixelSize: 10
        text: panel.detail !== "" ? panel.detail : panel.status
    }

    Text {
        anchors.right: parent.right
        anchors.bottom: parent.bottom
        anchors.rightMargin: 10
        anchors.bottomMargin: 6
        visible: panel.cancellable
        text: "✕"
        color: cancelArea.containsMouse ? "#cc6666" : "#666666"
        font.pixelSize: 12

        MouseArea {
            id: cancelArea
            anchors.fill: parent
            anchors.margins: -6
            hoverEnabled: true
            onClicked: panel.cancelRequested()
        }
    }
}
