Rename AbstractStacksModel.py -> MachineListModel.py since this model includes both abstract machine stacks and regular machines

Add machineCount for displaying the number of machines of a type.

MachineSelectorButton is in use in other places, swapped it out for a new Component MachineListButton.

CURA-9514
This commit is contained in:
joeydelarago 2022-08-23 14:29:05 +02:00
parent bedb76d516
commit b18080c332
6 changed files with 104 additions and 11 deletions

View file

@ -0,0 +1,88 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
import QtQuick.Controls 2.3
import UM 1.5 as UM
import Cura 1.0 as Cura
Button
{
id: machineListButton
width: parent.width
height: UM.Theme.getSize("large_button").height
leftPadding: UM.Theme.getSize("default_margin").width
rightPadding: UM.Theme.getSize("default_margin").width
checkable: true
hoverEnabled: true
contentItem: Item
{
width: machineListButton.width - machineListButton.leftPadding - machineListButton.rightPadding
height: UM.Theme.getSize("action_button").height
UM.ColorImage
{
id: printerIcon
height: UM.Theme.getSize("medium_button").height
width: UM.Theme.getSize("medium_button").width
color: UM.Theme.getColor("machine_selector_printer_icon")
visible: model.machineType == "abstract_machine"
source: model.machineType == "abstract_machine" ? UM.Theme.getIcon("PrinterTriple", "medium") : UM.Theme.getIcon("Printer", "medium")
anchors
{
left: parent.left
verticalCenter: parent.verticalCenter
}
}
UM.Label
{
id: buttonText
anchors
{
left: printerIcon.right
right: printerCount.left
verticalCenter: parent.verticalCenter
leftMargin: UM.Theme.getSize("default_margin").width
}
text: machineListButton.text
font: model.machineType == "abstract_machine" ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")
visible: text != ""
elide: Text.ElideRight
}
Rectangle
{
id: printerCount
color: UM.Theme.getColor("background_2")
radius: height
width: height
anchors
{
right: parent.right
top: buttonText.top
bottom: buttonText.bottom
verticalCenter: parent.verticalCenter
}
visible: model.machineType == "abstract_machine"
UM.Label
{
text: model.machineCount
anchors.centerIn: parent
font: UM.Theme.getFont("default_bold")
}
}
}
background: Rectangle
{
id: backgroundRect
color: machineListButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent"
}
}

View file

@ -10,8 +10,8 @@ import Cura 1.0 as Cura
ListView
{
id: listView
model: Cura.AbstractStacksModel {}
section.property: "hasRemoteConnection"
model: Cura.MachineListModel {}
section.property: "section"
property real contentHeight: childrenRect.height
ScrollBar.vertical: UM.ScrollBar
@ -29,13 +29,10 @@ ListView
color: UM.Theme.getColor("text_medium")
}
delegate: MachineSelectorButton
delegate: MachineListButton
{
text: model.name ? model.name : ""
width: listView.width - scrollBar.width
outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null
checked: Cura.MachineManager.activeMachine ? Cura.MachineManager.activeMachine.id == model.id : false
onClicked:
{

View file

@ -2,6 +2,7 @@ module Cura
MachineSelector 1.0 MachineSelector.qml
MachineSelectorButton 1.0 MachineSelectorButton.qml
MachineListButton 1.0 MachineListButton.qml
CustomConfigurationSelector 1.0 CustomConfigurationSelector.qml
PrintSetupSelector 1.0 PrintSetupSelector.qml
ProfileOverview 1.6 ProfileOverview.qml

View file

@ -564,6 +564,9 @@
"medium_button": [2.5, 2.5],
"medium_button_icon": [2, 2],
"large_button": [3.5, 3.5],
"large_button_icon": [2.8, 2.8],
"context_menu": [20, 2],
"icon_indicator": [1, 1],