import QtQuick 2.7
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.kirigami 2.20 as Kirigami

ListView {
    boundsBehavior: Flickable.StopAtBounds
    interactive: contentHeight > height
    keyNavigationEnabled: true
    keyNavigationWraps: true
    currentIndex: -1

    highlightMoveDuration: 0
    highlightResizeDuration: 0
    highlight: PlasmaExtras.Highlight {
    }

    topMargin: Kirigami.Units.smallSpacing * 2
    bottomMargin: Kirigami.Units.smallSpacing * 2
    leftMargin: Kirigami.Units.smallSpacing * 2
    rightMargin: Kirigami.Units.smallSpacing * 2

    function effectiveWidth() {
        return width - leftMargin - rightMargin
    }

    function activate(index) {
        if (typeof contextMenu !== "undefined"
                && contextMenu.status !== PlasmaExtras.Menu.Closed) {
            return
        }
        currentIndex = index
    }

    function clickCurrentItemButton(buttonName) {
        if (!currentItem) {
            return
        }
        const button = currentItem[buttonName]
        if (button && button.enabled) {
            button.clicked()
        }
    }

    function triggerNativeActionWithCurrentItemData(actionName, fieldName) {
        if (!currentItem) {
            return
        }
        const data = currentItem[fieldName]
        if (data) {
            plasmoid[actionName](data)
        }
    }

    function copyCurrentItemData(fieldName) {
        this.triggerNativeActionWithCurrentItemData("copyToClipboard", fieldName)
    }

    function showContextMenu(item, x, y) {
        if (typeof contextMenu === "undefined") {
            return
        }
        if (typeof contextMenu.init !== "undefined") {
            contextMenu.init(item)
        }
        contextMenu.open(x, y)
    }
}
