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

import QtQuick 2.7
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.3

import UM 1.3 as UM
import Cura 1.1 as Cura

Item
{
    id: previewMenu

    property real itemHeight: height - 2 * UM.Theme.getSize("default_lining").width

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

    anchors
    {
        left: parent.left
        right: parent.right
        leftMargin: UM.Theme.getSize("wide_margin").width * 2
        rightMargin: UM.Theme.getSize("wide_margin").width * 2
    }

    Row
    {
        id: stageMenuRow

        anchors.fill: parent
        // This is a trick to make sure that the borders of the two adjacent buttons' borders overlap. Otherwise
        // there will be double border (one from each button)
        spacing: -UM.Theme.getSize("default_lining").width

        Cura.ViewsSelector
        {
            id: viewsSelector
            height: parent.height
            width: Math.max(Math.round((parent.width - printSetupSelectorItem.width) / 3), UM.Theme.getSize("views_selector").width)
            headerCornerSide: Cura.RoundedRectangle.Direction.Left
        }

        // This component will grow freely up to complete the width of the row.
        Loader
        {
            id: viewPanel
            height: parent.height
            width: source != "" ? (parent.width - viewsSelector.width - printSetupSelectorItem.width) : 0
            source: UM.Controller.activeView != null && UM.Controller.activeView.stageMenuComponent != null ? UM.Controller.activeView.stageMenuComponent : ""
        }

        Item
        {
            id: printSetupSelectorItem
            // This is a work around to prevent the printSetupSelector from having to be re-loaded every time
            // a stage switch is done.
            children: [printSetupSelector]
            height: childrenRect.height
            width: childrenRect.width
        }
    }
}