import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import QtQml 2.14
import QtQml.Models 2.14
import QtGraphicalEffects 1.0
import QtQuick.Dialogs 1.3
import QtQuick.Window 2.2

Rectangle {
    property QtObject trackBuffer: modelData
    id : defaultTrackBody
    clip: true
    width: multitrack.width 
    height: trackHeight
    color: activePalette.dark
    border.color: activePalette.button
    border.width: 1
    Repeater {
        model: modelData.clips
        delegate: Rectangle {
            Connections {
                target: recordButton
                onRecordingChanged: {
                    if (flag) {
                        savePcapDialog.open()
                    }
                    else {
                        timeline.recording = false
                        modelData.setRecord(false)
                    }
                }
            }
            FileDialog {
                id: savePcapDialog
                title: "Save pcap file"
                selectExisting: false
                nameFilters: ["pcap files (*.pcap)"]
                onAccepted: {
                    console.log(savePcapDialog.fileUrl)
                    modelData.setRecord(true, savePcapDialog.fileUrl)
                    timeline.recording = true
                }
            }
            Rectangle {
                clip: true
                anchors.left: parent.right
                anchors.leftMargin: Math.max(0, Math.min(1, (modelData.beginSeconds - rulerTimeBegin) / rulerTimeDuration)) * (multitrack.width - headWidth)
                width: Math.max(0, Math.min(1, (modelData.endSeconds - rulerTimeBegin) / rulerTimeDuration)) * (multitrack.width - headWidth) - anchors.leftMargin
                height: trackHeight
                color: activePalette.midlight
                border.color: activePalette.light
                border.width: 0
                Rectangle {
                    anchors.left: parent.left
                    color: activePalette.highlight
                    width: timeCursorCol.x - headWidth - parent.x
                    height: parent.height
                }
                MouseArea {
                    id: forClick
                    anchors.fill: parent
                    acceptedButtons: Qt.RightButton
                    propagateComposedEvents: true
                    property bool toolbar: false
                    onClicked: {
                        clipMenu.popup()         
                    }                
                } 

                // MouseArea {
                //     id: forDoubleClick
                //     anchors.fill: parent
                //     acceptedButtons: Qt.LeftButton
                //     propagateComposedEvents: true
                //     property bool toolbar: false
                //     onDoubleClicked: {
                //         modelData.setToolbarEnabled(toolbar)
                //         toolbar = !toolbar                   
                //     }    
                // } 
                DefaultMenu {
                    parent: defaultTrackBody
                    id : clipMenu
                    title: "Clip Menu"
                    DefaultMenuItem {
                        text: "Reset"
                        
                        onClicked: {
                            modelData.reset()
                        }
                    }
                    DefaultMenuItem {
                        Connections {
                            target: playButton
                            onPlayingChanged: {
                                modelData.loading = flag
                            }
                        }
                        text: modelData.loading ? "Pause" : "Start"
                        onClicked: {
                            modelData.loading = !modelData.loading
                        }
                    }
                    DefaultMenuItem {
                        text: "Delete Track"
                        onClicked: {
                            trackBuffer.deleteTrack();
                        }
                    }
                    DefaultMenuItem {
                        text: "Cancel"
                    }
                }
            }
        }
    }
}