// Copyright (c) 2015 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.

import QtQuick 2.2
import QtQuick.Window 2.2
import QtQuick.Controls 1.2

import UM 1.1 as UM

UM.Dialog
{
    id: base;

    minimumWidth: 500 * screenScaleFactor
    minimumHeight: 140 * screenScaleFactor
    maximumWidth: minimumWidth
    maximumHeight: minimumHeight
    width: minimumWidth
    height: minimumHeight

    visible: true
    modality: Qt.ApplicationModal
    onVisibleChanged:
    {
        if(visible)
        {
            resetPrintersModel()
        }
    }
    title: catalog.i18nc("@title:window", "Print over network")

    property var printersModel:  ListModel{}
    function resetPrintersModel() {
        printersModel.clear()
        printersModel.append({ name: "Automatic", key: ""})

        for (var index in OutputDevice.printers)
        {
            printersModel.append({name: OutputDevice.printers[index].name, key: OutputDevice.printers[index].key})
        }
    }

    Column
    {
        id: printerSelection
        anchors.fill: parent
        anchors.top: parent.top
        anchors.topMargin: UM.Theme.getSize("default_margin").height
        anchors.leftMargin: UM.Theme.getSize("default_margin").width
        anchors.rightMargin: UM.Theme.getSize("default_margin").width
        height: 50 * screenScaleFactord
        Label
        {
            id: manualPrinterSelectionLabel
            anchors
            {
                left: parent.left
                topMargin: UM.Theme.getSize("default_margin").height
                right: parent.right
            }
            text: catalog.i18nc("@label", "Printer selection")
            wrapMode: Text.Wrap
            height: 20 * screenScaleFactor
        }

        ComboBox
        {
            id: printerSelectionCombobox
            model: base.printersModel
            textRole: "name"

            width: parent.width
            height: 40 * screenScaleFactor
            Behavior on height { NumberAnimation { duration: 100 } }
        }

        SystemPalette
        {
           id: palette
        }

        UM.I18nCatalog { id: catalog; name: "cura"; }
    }

    leftButtons: [
        Button
        {
            text: catalog.i18nc("@action:button","Cancel")
            enabled: true
            onClicked: {
                base.visible = false;
                printerSelectionCombobox.currentIndex = 0
            }
        }
    ]

    rightButtons: [
        Button
        {
            text: catalog.i18nc("@action:button","Print")
            enabled: true
            onClicked: {
                base.visible = false;
                OutputDevice.sendPrintJob(printerSelectionCombobox.model.get(printerSelectionCombobox.currentIndex).key)
                // reset to defaults
                printerSelectionCombobox.currentIndex = 0
            }
        }
    ]
}
