/*
     SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>

     SPDX-License-Identifier: LGPL-2.0-or-later
 */

 import QtQuick 2.7
 import QtQuick.Window 2.15
 import QtQuick.Controls 2.5
 import QtQuick.Templates 2.5 as T
 import org.kde.plasma.core 2.0 as PlasmaCore
 import org.kde.kirigami 2.5 as Kirigami
 import org.kde.plasma.components 2.0 as PlasmaComponents

 PlasmaComponents.Dialog {
     id: control

     palette: Kirigami.Theme.palette
     implicitWidth: Math.max(background ? background.implicitWidth : 0,
                             contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0)
     implicitHeight: Math.max(background ? background.implicitHeight : 0,
                              contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding

     delegate: MenuItem { width: parent.width; onImplicitWidthChanged: control.contentItem.contentItem.childrenChanged() }


     margins: 0
     leftPadding: background.margins.left
     topPadding: background.margins.top
     rightPadding: background.margins.right
     bottomPadding: background.margins.bottom

     contentItem: ListView {
         implicitHeight: contentHeight
         property bool hasCheckables: false
         property bool hasIcons: false
         model: control.contentModel

         implicitWidth: {
             var maxWidth = 0;
             for (var i = 0; i < contentItem.children.length; ++i) {
                 maxWidth = Math.max(maxWidth, contentItem.children[i].implicitWidth);
             }
             return maxWidth;
         }

         interactive: Window.window ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height : false
         clip: true
         currentIndex: control.currentIndex || 0
         keyNavigationEnabled: true
         keyNavigationWraps: true

         T.ScrollBar.vertical: ScrollBar {}
     }

     Connections {
         target: control.contentItem.contentItem

         function onChildrenChanged() {
             for (var i in control.contentItem.contentItem.children) {
                 var child = control.contentItem.contentItem.children[i];
                 if (child.checkable) {
                     control.contentItem.hasCheckables = true;
                 }
                 if (child.icon && child.icon.hasOwnProperty("name") && (child.icon.name.length > 0 || child.icon.source.length > 0)) {
                     control.contentItem.hasIcons = true;
                 }
             }
         }
     }

     /*enter: Transition {
         NumberAnimation {
             property: "opacity"
             from: 0
             to: 1
             easing.type: Easing.InOutQuad
             duration: PlasmaCore.Units.shortDuration
         }
     }

     exit: Transition {
         NumberAnimation {
             property: "opacity"
             from: 1
             to: 0
             easing.type: Easing.InOutQuad
             duration: PlasmaCore.Units.shortDuration
         }
     }*/

     /*background: PlasmaCore.FrameSvgItem {
         imagePath: "widgets/background"
         implicitWidth: PlasmaCore.Units.gridUnit * 8
         implicitHeight: PlasmaCore.Units.gridUnit * 2
     }*/
 }