diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml old mode 100644 new mode 100755 index f4f439439f..c37b3bf222 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -407,14 +407,53 @@ Rectangle } } ExclusiveGroup { id: modeMenuGroup; } - ListView{ - id: modesList - property var index: 0 - model: modesListModel - delegate: wizardDelegate - anchors.top: parent.top - anchors.left: parent.left - width: parent.width + + Text + { + id: toggleLeftText + anchors.right: modeToggleSwitch.left + anchors.rightMargin: UM.Theme.getSize("toggle_button_text_anchoring_margin").width + anchors.verticalCenter: parent.verticalCenter + text: "" + color: UM.Theme.getColor("toggle_active_text") + font: UM.Theme.getFont("default") + } + + Switch + { + id: modeToggleSwitch + checked: false + anchors.right: toggleRightText.left + anchors.rightMargin: UM.Theme.getSize("toggle_button_text_anchoring_margin").width + anchors.verticalCenter: parent.verticalCenter + + onClicked: + { + var index = 0; + if (checked) + { + index = 1; + } + updateActiveMode(index); + } + + function updateActiveMode(index) + { + base.currentModeIndex = index; + UM.Preferences.setValue("cura/active_mode", index); + } + + style: UM.Theme.styles.toggle_button + } + + Text + { + id: toggleRightText + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + text: "" + color: UM.Theme.getColor("toggle_active_text") + font: UM.Theme.getFont("default") } } @@ -541,10 +580,14 @@ Rectangle }) sidebarContents.push({ "item": modesListModel.get(base.currentModeIndex).item, "immediate": true }); - var index = parseInt(UM.Preferences.getValue("cura/active_mode")) - if(index) + toggleLeftText.text = modesListModel.get(0).text; + toggleRightText.text = modesListModel.get(1).text; + + var index = parseInt(UM.Preferences.getValue("cura/active_mode")); + if (index) { currentModeIndex = index; + modeToggleSwitch.checked = index > 0; } } @@ -567,4 +610,4 @@ Rectangle watchedProperties: [ "value" ] storeIndex: 0 } -} \ No newline at end of file +} diff --git a/resources/themes/cura/styles.qml b/resources/themes/cura/styles.qml index 64b4436622..a7c7dcb6cd 100644 --- a/resources/themes/cura/styles.qml +++ b/resources/themes/cura/styles.qml @@ -8,6 +8,44 @@ import QtQuick.Controls.Styles 1.1 import UM 1.1 as UM QtObject { + property Component toggle_button: Component { + SwitchStyle { + groove: Rectangle { + implicitWidth: UM.Theme.getSize("toggle_button_background_implicit_size").width + implicitHeight: UM.Theme.getSize("toggle_button_background_implicit_size").height + radius: UM.Theme.getSize("toggle_button_radius").width + border.color: { + if (control.pressed || (control.checkable && control.checked)) { + return UM.Theme.getColor("sidebar_header_active"); + } else if(control.hovered) { + return UM.Theme.getColor("sidebar_header_hover"); + } else { + return UM.Theme.getColor("sidebar_header_bar"); + } + } + Behavior on border.color { ColorAnimation { duration: 50; } } + border.width: 1 + } + + handle: Rectangle { + implicitWidth: UM.Theme.getSize("toggle_button_knob_implicit_size").width + implicitHeight: UM.Theme.getSize("toggle_button_knob_implicit_size").height + radius: UM.Theme.getSize("toggle_button_radius").width + + color: { + if (control.pressed || (control.checkable && control.checked)) { + return UM.Theme.getColor("sidebar_header_active"); + } else if(control.hovered) { + return UM.Theme.getColor("sidebar_header_hover"); + } else { + return UM.Theme.getColor("sidebar_header_bar"); + } + } + Behavior on color { ColorAnimation { duration: 50; } } + } + } + } + property Component sidebar_header_button: Component { ButtonStyle { background: Rectangle { diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index fa4bf2ee92..084ee27bb2 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -319,6 +319,11 @@ "infill_button_margin": [0.5, 0.5], - "jobspecs_line": [2.0, 2.0] + "jobspecs_line": [2.0, 2.0], + + "toggle_button_text_anchoring_margin": [1.0, 1.0], + "toggle_button_radius": [1.0, 1.0], + "toggle_button_background_implicit_size": [2.0, 1.0], + "toggle_button_knob_implicit_size": [1.0, 1.0] } }