import QtQuick 2.2
import QtQuick.Controls 1.4

import UM 1.3 as UM
import Cura 1.0 as Cura

Component
{
    Rectangle
    {
        id: base
        property var manager: Cura.MachineManager.printerOutputDevices[0]
        property var lineColor: "#DCDCDC" // TODO: Should be linked to theme.
        property var cornerRadius: 4 * screenScaleFactor // TODO: Should be linked to theme.

        visible: manager != null
        anchors.fill: parent
        color: UM.Theme.getColor("viewport_background")

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

        Label
        {
            id: activePrintersLabel
            font: UM.Theme.getFont("large")
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.topMargin: UM.Theme.getSize("default_margin").height
            anchors.top: parent.top
            text: Cura.MachineManager.printerOutputDevices[0].name
        }

        Rectangle
        {
            id: printJobArea
            border.width: UM.Theme.getSize("default_lining").width
            border.color: lineColor
            anchors.top: activePrintersLabel.bottom
            anchors.topMargin: UM.Theme.getSize("default_margin").height
            anchors.left: parent.left
            anchors.leftMargin: UM.Theme.getSize("default_margin").width
            anchors.right: parent.right
            anchors.rightMargin:UM.Theme.getSize("default_margin").width
            radius: cornerRadius
            height: childrenRect.height

            Item
            {
                id: printJobTitleBar
                width: parent.width
                height: printJobTitleLabel.height + 2 * UM.Theme.getSize("default_margin").height

                Label
                {
                    id: printJobTitleLabel
                    anchors.left: parent.left
                    anchors.leftMargin: UM.Theme.getSize("default_margin").width
                    anchors.top: parent.top
                    anchors.topMargin: UM.Theme.getSize("default_margin").height
                    text: catalog.i18nc("@title", "Print jobs")
                    font: UM.Theme.getFont("default")
                    opacity: 0.75
                }
                Rectangle
                {
                    anchors.bottom: parent.bottom
                    height: UM.Theme.getSize("default_lining").width
                    color: lineColor
                    width: parent.width
                }
            }

            Column
            {
                id: printJobColumn
                anchors.top: printJobTitleBar.bottom
                anchors.topMargin: UM.Theme.getSize("default_margin").height
                anchors.left: parent.left
                anchors.leftMargin: UM.Theme.getSize("default_margin").width
                anchors.right: parent.right
                anchors.rightMargin: UM.Theme.getSize("default_margin").width

                Item
                {
                    width: parent.width
                    height: childrenRect.height
                    opacity: 0.65
                    Label
                    {
                        text: catalog.i18nc("@label", "Printing")
                        font: UM.Theme.getFont("very_small")

                    }
                    Label
                    {
                        text: manager.activePrintJobs.length
                        font: UM.Theme.getFont("small")
                        anchors.right: parent.right
                    }
                }
                Item
                {
                    width: parent.width
                    height: childrenRect.height
                    opacity: 0.65
                    Label
                    {
                        text: catalog.i18nc("@label", "Queued")
                        font: UM.Theme.getFont("very_small")
                    }
                    Label
                    {
                        text: manager.queuedPrintJobs.length
                        font: UM.Theme.getFont("small")
                        anchors.right: parent.right
                    }
                }
            }
            OpenPanelButton
            {
                anchors.top: printJobColumn.bottom
                anchors.left: parent.left
                anchors.right: parent.right
                anchors.margins: UM.Theme.getSize("default_margin").height
                id: configButton
                onClicked: base.manager.openPrintJobControlPanel()
                text: catalog.i18nc("@action:button", "View print jobs")
            }

            Item
            {
                // spacer
                anchors.top: configButton.bottom
                width: UM.Theme.getSize("default_margin").width
                height: UM.Theme.getSize("default_margin").height
            }
        }


        Rectangle
        {
            id: printersArea
            border.width: UM.Theme.getSize("default_lining").width
            border.color: lineColor
            anchors.top: printJobArea.bottom
            anchors.topMargin: UM.Theme.getSize("default_margin").height
            anchors.left: parent.left
            anchors.leftMargin: UM.Theme.getSize("default_margin").width
            anchors.right: parent.right
            anchors.rightMargin:UM.Theme.getSize("default_margin").width
            radius: cornerRadius
            height: childrenRect.height

            Item
            {
                id: printersTitleBar
                width: parent.width
                height: printJobTitleLabel.height + 2 * UM.Theme.getSize("default_margin").height

                Label
                {
                    id: printersTitleLabel
                    anchors.left: parent.left
                    anchors.leftMargin: UM.Theme.getSize("default_margin").width
                    anchors.top: parent.top
                    anchors.topMargin: UM.Theme.getSize("default_margin").height
                    text: catalog.i18nc("@label:title", "Printers")
                    font: UM.Theme.getFont("default")
                    opacity: 0.75
                }
                Rectangle
                {
                    anchors.bottom: parent.bottom
                    height: UM.Theme.getSize("default_lining").width
                    color: lineColor
                    width: parent.width
                }
            }
            Column
            {
                id: printersColumn
                anchors.top: printersTitleBar.bottom
                anchors.topMargin: UM.Theme.getSize("default_margin").height
                anchors.left: parent.left
                anchors.leftMargin: UM.Theme.getSize("default_margin").width
                anchors.right: parent.right
                anchors.rightMargin: UM.Theme.getSize("default_margin").width

                Repeater
                {
                    model: manager.connectedPrintersTypeCount
                    Item
                    {
                        width: parent.width
                        height: childrenRect.height
                        opacity: 0.65
                        Label
                        {
                            text: modelData.machine_type
                            font: UM.Theme.getFont("very_small")
                        }

                        Label
                        {
                            text: modelData.count
                            font: UM.Theme.getFont("small")
                            anchors.right: parent.right
                        }
                    }
                }
            }
            OpenPanelButton
            {
                anchors.top: printersColumn.bottom
                anchors.left: parent.left
                anchors.right: parent.right
                anchors.margins: UM.Theme.getSize("default_margin").height
                id: printerConfigButton
                onClicked: base.manager.openPrinterControlPanel()

                text: catalog.i18nc("@action:button", "View printers")
            }

            Item
            {
                // spacer
                anchors.top: printerConfigButton.bottom
                width: UM.Theme.getSize("default_margin").width
                height: UM.Theme.getSize("default_margin").height
            }
        }
    }
}
