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

MaterialsSlot.qml « Materials « Preferences « qml « resources - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a706aaf2b98fa3b54802f55704e9a352c128676b (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
// Copyright (c) 2018 Ultimaker B.V.
// Uranium 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

Rectangle
{
    id: materialSlot
    property var material: null
    property var hovered: false
    property var is_favorite: material != null ? material.is_favorite : false

    height: UM.Theme.getSize("favorites_row").height
    width: parent.width
    color: material != null ? (base.currentItem.root_material_id == material.root_material_id ? UM.Theme.getColor("favorites_row_selected") : "transparent") : "transparent"

    Rectangle
    {
        id: swatch
        color: material != null ? material.color_code : "transparent"
        border.width: UM.Theme.getSize("default_lining").width
        border.color: "black"
        width: UM.Theme.getSize("favorites_button_icon").width
        height: UM.Theme.getSize("favorites_button_icon").height
        anchors.verticalCenter: materialSlot.verticalCenter
        anchors.left: materialSlot.left
        anchors.leftMargin: UM.Theme.getSize("default_margin").width
    }
    Label
    {
        text: material != null ? material.brand + " " + material.name : ""
        verticalAlignment: Text.AlignVCenter
        height: parent.height
        anchors.left: swatch.right
        anchors.verticalCenter: materialSlot.verticalCenter
        anchors.leftMargin: UM.Theme.getSize("narrow_margin").width
        font.italic: Cura.MachineManager.currentRootMaterialId[Cura.ExtruderManager.activeExtruderIndex] == material.root_material_id
    }
    MouseArea
    {
        anchors.fill: parent
        onClicked:
        {
            materialList.currentBrand = material.brand
            materialList.currentType = material.brand + "_" + material.material
            base.currentItem = material
        }
        hoverEnabled: true
        onEntered: { materialSlot.hovered = true }
        onExited: { materialSlot.hovered = false }
    }
    Button
    {
        id: favorite_button
        text: ""
        implicitWidth: UM.Theme.getSize("favorites_button").width
        implicitHeight: UM.Theme.getSize("favorites_button").height
        visible: materialSlot.hovered || materialSlot.is_favorite || favorite_button.hovered
        anchors
        {
            right: materialSlot.right
            verticalCenter: materialSlot.verticalCenter
        }
        onClicked:
        {
            if (materialSlot.is_favorite) {
                base.materialManager.removeFavorite(material.root_material_id)
                materialSlot.is_favorite = false
                return
            }
            base.materialManager.addFavorite(material.root_material_id)
            materialSlot.is_favorite = true
            return
        }
        style: ButtonStyle
        {
            background: Rectangle
            {
                anchors.fill: parent
                color: "transparent"
            }
        }
        UM.RecolorImage {
            anchors
            {
                verticalCenter: favorite_button.verticalCenter
                horizontalCenter: favorite_button.horizontalCenter
            }
            width: UM.Theme.getSize("favorites_button_icon").width
            height: UM.Theme.getSize("favorites_button_icon").height
            color:
            {
                if (favorite_button.hovered)
                {
                    return UM.Theme.getColor("primary_hover")
                }
                else
                {
                    if (materialSlot.is_favorite)
                    {
                        return UM.Theme.getColor("primary")
                    }
                    else
                    {
                        UM.Theme.getColor("text_inactive")
                    }
                }
            }
            source: materialSlot.is_favorite ? UM.Theme.getIcon("favorites_star_full") : UM.Theme.getIcon("favorites_star_empty")
        }
    }
}