/*
 *  SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
 *
 *  SPDX-License-Identifier: GPL-2.0-or-later
 */

import QtQuick 2.4
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.3 as Controls
import Qt5Compat.GraphicalEffects

import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 3.0 as PC3
import org.kde.kquickcontrolsaddons 2.0

import org.kde.plasma.private.containmentlayoutmanager 1.0 as ContainmentLayoutManager 
import org.kde.private.mobile.homescreen.folio 1.0 as Folio

PC3.RoundButton {
    id: removeButton

    required property Folio.DesktopModel desktopModel

    anchors {
        right: parent.right
        top: parent.top
    }
    visible: false
    icon.name: "delete"
    onClicked: delegateDestructionAnim.restart()

    function show() {
        scale = 0;
        visible = true;
        removeButtonScaleAnim.from = 0;
        removeButtonScaleAnim.to = 1;
        removeButtonAnim.running = true;
    }

    function hide() {
        if (!visible) {
            return;
        }
        removeButtonScaleAnim.from = 1;
        removeButtonScaleAnim.to = 0;
        removeButtonAnim.running = true;
    }

    SequentialAnimation {
        id: delegateDestructionAnim
        NumberAnimation {
            target: delegate
            property: "scale"
            from: 1
            to: 0
            duration: PlasmaCore.Units.longDuration
            easing.type: Easing.InOutQuad
        }
        ScriptAction {
            script: {
                appletsLayout.releaseSpace(delegate);
                desktopModel.removeFavorite(index);
            }
        }
    }
    SequentialAnimation {
        id: removeButtonAnim
        NumberAnimation {
            id: removeButtonScaleAnim
            target: removeButton
            property: "scale"
            duration: PlasmaCore.Units.longDuration
            easing.type: Easing.InOutQuad
        }
        ScriptAction {
            script: {
                if (removeButton.scale === 0) {
                    removeButton.visible = false;
                }
            }
        }
    }
}
