
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import QtQuick.Scene3D 2.14
import Qt3D.Core 2.14
import Qt3D.Render 2.14
import Qt3D.Input 2.14
import Qt3D.Extras 2.14
import QtQuick.Controls.Styles 1.4
import QtQuick 2.14 as QQ2
import QtQuick.Dialogs 1.3
import QtQuick.Window 2.2
import QtQuick.Controls 2.14
import QtQuick.Controls.impl 2.14
Window {
    id: rangeWindow
    title : "Set range"
    width: columns.width + 40
    height: columns.height
    flags:  Qt.Dialog 
            | Qt.WindowSystemMenuHint | Qt.WindowTitleHint 
            | Qt.WindowCloseButtonHint | Qt.WindowOkButtonHint 
            | Qt.FrameWindowHint
    visible: true
    // modality: Qt.ApplicationModal 
    color: activePalette.window
    ColumnLayout {
        id: columns
        x: 20
        spacing: 10
        Rectangle {
            height: 10
        }
        Text {
            color: activePalette.text 
            text: "Set Colormap Range"
        }
        RowLayout {
            id: rowItem
            Text {
                color: activePalette.text 
                text: "Min."
            }
            DoubleSpinBox {
                id: minbox
                value: 0
                from: 0
                to: 25500
                onValueModified: {
                    pointxyziMaterial.colorrate.x=(maxbox.value-minbox.value)/25500;
                    pointxyziMaterial.colorrate.y=minbox.value/25500;
                    colortableItem.fresh();    
                }
            }
            Rectangle {
                width: 50
            }
            Text {
                color: activePalette.text
                text: "Max."
            }
            DoubleSpinBox {               
                id: maxbox
                value: 25500
                from: 0
                to: 25500
                onValueModified: {
                    pointxyziMaterial.colorrate.x=(maxbox.value-minbox.value)/25500;
                    pointxyziMaterial.colorrate.y=minbox.value/25500;
                    colortableItem.fresh();
                }
                
            }
        }
        DefaulttinyCheckbox {
            id: belowCheck
            text: "Reset color out of range"
            checked: false
            onCheckedChanged: {
                if(belowCheck.checked === true){
                    belowButton.visible=true;
                    pointxyziMaterial.colorrate.z=1.0;
                    pointxyziMaterial.belowrangeColor=belowcolor.color;
                    pointxyziMaterial.aboverangeColor=abovecolor.color;
                }
                else{
                    belowButton.visible=false;
                    pointxyziMaterial.colorrate.z=0;
                }
            }
        }
        RowLayout{
            id:belowButton
            visible:false
            DefaultButton {         
                text:"Below range color"   
                onClicked: {
                belowcolorDialog.sender=belowcolor;
                belowcolorDialog.open();}
            }
            Rectangle{
                id:belowcolor
                    color:"blue"
                    width: 20
                    height: 20
                    radius: width/2
                    border.color: 'white'
                    border.width: 2
            }
            Rectangle{
                width:10
            }
            DefaultButton {
                text:"Above range color"   
                onClicked:{abovecolorDialog.sender=abovecolor;
                abovecolorDialog.open();
                }
            }
            Rectangle{
                id:abovecolor
                    color:"red"
                    width: 20
                    height: 20
                    radius: width/2
                    border.color: 'white'
                    border.width: 2
            }
        }
        Rectangle {
            height: 10
        }   
    }
    ColorDialog {
        id:belowcolorDialog
        property var sender;
        onAccepted: {
            sender.color = belowcolorDialog.currentColor;
            pointxyziMaterial.belowrangeColor=belowcolor.color;
            pointxyziMaterial.aboverangeColor=abovecolor.color;
        }
    }
    ColorDialog {
        id:abovecolorDialog
        property var sender;
        onAccepted: {
            sender.color = abovecolorDialog.currentColor;
            pointxyziMaterial.belowrangeColor=belowcolor.color;
            pointxyziMaterial.aboverangeColor=abovecolor.color;
        }
    }
}