Welcome to mirror list, hosted at ThFree Co, Russian Federation.

MaterialsBrandSection.qml « Materials « Preferences « qml « resources - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: dc8be9563ba4f2d793b44b80b320683ab7dc4a19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// Copyright (c) 2019 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.

import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.3
import QtQuick.Dialogs 1.2

import UM 1.2 as UM
import Cura 1.0 as Cura

// An expandable list of materials. Includes both the header (this file) and the items (brandMaterialList)

Item
{
    id: brand_section

    property var sectionName: ""
    property var elementsModel   // This can be a MaterialTypesModel or GenericMaterialsModel or FavoriteMaterialsModel
    property var hasMaterialTypes: true  // It indicates wheather it has material types or not
    property var expanded: materialList.expandedBrands.indexOf(sectionName) > -1

    height: childrenRect.height
    width: parent.width
    Rectangle
    {
        id: brand_header_background
        color:
        {
            if(!expanded && sectionName == materialList.currentBrand)
            {
                return UM.Theme.getColor("favorites_row_selected")
            }
            else
            {
                return UM.Theme.getColor("favorites_header_bar")
            }
        }
        anchors.fill: brand_header
    }
    Row
    {
        id: brand_header
        width: parent.width
        Label
        {
            id: brand_name
            text: sectionName
            height: UM.Theme.getSize("favorites_row").height
            width: parent.width - UM.Theme.getSize("favorites_button").width
            verticalAlignment: Text.AlignVCenter
            leftPadding: (UM.Theme.getSize("default_margin").width / 2) | 0
        }
        Item
        {
            implicitWidth: UM.Theme.getSize("favorites_button").width
            implicitHeight: UM.Theme.getSize("favorites_button").height
            UM.RecolorImage
            {
                anchors
                {
                    verticalCenter: parent.verticalCenter
                    horizontalCenter: parent.horizontalCenter
                }
                width: UM.Theme.getSize("standard_arrow").width
                height: UM.Theme.getSize("standard_arrow").height
                color: "black"
                source: brand_section.expanded ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleLeft")
            }
        }
    }
    MouseArea
    {
        anchors.fill: brand_header
        onPressed:
        {
            const i = materialList.expandedBrands.indexOf(sectionName)
            if (i > -1)
            {
                // Remove it
                materialList.expandedBrands.splice(i, 1)
                brand_section.expanded = false
            }
            else
            {
                // Add it
                materialList.expandedBrands.push(sectionName)
                brand_section.expanded = true
            }
            UM.Preferences.setValue("cura/expanded_brands", materialList.expandedBrands.join(";"));
        }
    }
    Column
    {
        id: brandMaterialList
        anchors.top: brand_header.bottom
        width: parent.width
        anchors.left: parent ? parent.left : undefined
        height: brand_section.expanded ? childrenRect.height : 0
        visible: brand_section.expanded

        Repeater
        {
            model: elementsModel
            delegate: Loader
            {
                id: loader
                width: parent ? parent.width : 0
                property var element: model
                sourceComponent: hasMaterialTypes ? materialsTypeSection : materialSlot
            }
        }
    }

    Component
    {
        id: materialsTypeSection
        MaterialsTypeSection
        {
            materialType: element
        }
    }

    Component
    {
        id: materialSlot
        MaterialsSlot
        {
            material: element
        }
    }

    Connections
    {
        target: UM.Preferences
        function onPreferenceChanged(preference)
        {
            if (preference !== "cura/expanded_types" && preference !== "cura/expanded_brands")
            {
                return;
            }

            expanded = materialList.expandedBrands.indexOf(sectionName) > -1
        }
    }
}