Unify the CuraDrive plugin with the rest of the items in Cura

For instance, the buttons were converted to either primary buttons or secondary buttons. A new CheckBox component was created in Cura in order to reuse it in the future.

Contributes to CURA-6005.
This commit is contained in:
Diego Prado Gesto 2018-12-17 13:04:23 +01:00
parent e62a570210
commit b7904d6e05
12 changed files with 115 additions and 137 deletions

View file

@ -1,67 +0,0 @@
// Copyright (c) 2018 Ultimaker B.V.
import QtQuick 2.7
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3
import UM 1.1 as UM
Button
{
id: button
property alias cursorShape: mouseArea.cursorShape
property var iconSource: ""
property var busy: false
property var color: UM.Theme.getColor("primary")
property var hoverColor: UM.Theme.getColor("primary_hover")
property var disabledColor: color
property var textColor: UM.Theme.getColor("button_text")
property var textHoverColor: UM.Theme.getColor("button_text_hover")
property var textDisabledColor: textColor
property var textFont: UM.Theme.getFont("action_button")
contentItem: RowLayout
{
Icon
{
id: buttonIcon
iconSource: button.iconSource
width: 16 * screenScaleFactor
color: button.hovered ? button.textHoverColor : button.textColor
visible: button.iconSource != "" && !loader.visible
}
Icon
{
id: loader
iconSource: "../images/loading.gif"
width: 16 * screenScaleFactor
color: button.hovered ? button.textHoverColor : button.textColor
visible: button.busy
animated: true
}
Label
{
id: buttonText
text: button.text
color: button.enabled ? (button.hovered ? button.textHoverColor : button.textColor): button.textDisabledColor
font: button.textFont
visible: button.text != ""
renderType: Text.NativeRendering
}
}
background: Rectangle
{
color: button.enabled ? (button.hovered ? button.hoverColor : button.color) : button.disabledColor
}
MouseArea
{
id: mouseArea
anchors.fill: parent
onPressed: mouse.accepted = false
hoverEnabled: true
cursorShape: button.enabled ? (hovered ? Qt.PointingHandCursor : Qt.ArrowCursor) : Qt.ForbiddenCursor
}
}

View file

@ -1,49 +0,0 @@
// Copyright (c) 2018 Ultimaker B.V.
import QtQuick 2.7
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3
import UM 1.3 as UM
CheckBox
{
id: checkbox
hoverEnabled: true
property var label: ""
indicator: Rectangle {
implicitWidth: 30 * screenScaleFactor
implicitHeight: 30 * screenScaleFactor
x: 0
y: Math.round(parent.height / 2 - height / 2)
color: UM.Theme.getColor("sidebar")
border.color: UM.Theme.getColor("text")
Rectangle {
width: 14 * screenScaleFactor
height: 14 * screenScaleFactor
x: 8 * screenScaleFactor
y: 8 * screenScaleFactor
color: UM.Theme.getColor("primary")
visible: checkbox.checked
}
}
contentItem: Label {
anchors
{
left: checkbox.indicator.right
leftMargin: 5 * screenScaleFactor
}
text: catalog.i18nc("@checkbox:description", "Auto Backup")
color: UM.Theme.getColor("text")
renderType: Text.NativeRendering
verticalAlignment: Text.AlignVCenter
}
ActionToolTip
{
text: checkbox.label
}
}

View file

@ -14,7 +14,7 @@ ToolTip
background: Rectangle background: Rectangle
{ {
color: UM.Theme.getColor("sidebar") color: UM.Theme.getColor("main_background")
border.color: UM.Theme.getColor("primary") border.color: UM.Theme.getColor("primary")
border.width: 1 * screenScaleFactor border.width: 1 * screenScaleFactor
} }
@ -23,7 +23,7 @@ ToolTip
{ {
text: tooltip.text text: tooltip.text
color: UM.Theme.getColor("text") color: UM.Theme.getColor("text")
font: UM.Theme.getFont("very_small") font: UM.Theme.getFont("default")
renderType: Text.NativeRendering renderType: Text.NativeRendering
} }
} }

View file

@ -4,6 +4,7 @@ import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import UM 1.3 as UM import UM 1.3 as UM
import Cura 1.0 as Cura
import "../components" import "../components"
@ -13,7 +14,7 @@ RowLayout
width: parent.width width: parent.width
property bool showInfoButton: false property bool showInfoButton: false
ActionButton Cura.PrimaryButton
{ {
id: infoButton id: infoButton
text: catalog.i18nc("@button", "Want more?") text: catalog.i18nc("@button", "Want more?")
@ -22,7 +23,7 @@ RowLayout
visible: backupListFooter.showInfoButton visible: backupListFooter.showInfoButton
} }
ActionButton Cura.PrimaryButton
{ {
id: createBackupButton id: createBackupButton
text: catalog.i18nc("@button", "Backup Now") text: catalog.i18nc("@button", "Backup Now")
@ -32,11 +33,12 @@ RowLayout
busy: CuraDrive.isCreatingBackup busy: CuraDrive.isCreatingBackup
} }
ActionCheckBox Cura.CheckBox
{ {
id: autoBackupEnabled id: autoBackupEnabled
checked: CuraDrive.autoBackupEnabled checked: CuraDrive.autoBackupEnabled
onClicked: CuraDrive.toggleAutoBackup(autoBackupEnabled.checked) onClicked: CuraDrive.toggleAutoBackup(autoBackupEnabled.checked)
label: catalog.i18nc("@checkbox:description", "Automatically create a backup each day that Cura is started.") text: catalog.i18nc("@checkbox:description", "Auto Backup")
tooltip: catalog.i18nc("@checkbox:description", "Automatically create a backup each day that Cura is started.")
} }
} }

View file

@ -5,6 +5,7 @@ import QtQuick.Layouts 1.3
import QtQuick.Dialogs 1.1 import QtQuick.Dialogs 1.1
import UM 1.1 as UM import UM 1.1 as UM
import Cura 1.0 as Cura
Item Item
{ {
@ -29,7 +30,7 @@ Item
width: parent.width width: parent.width
height: 50 * screenScaleFactor height: 50 * screenScaleFactor
ActionButton Cura.ActionButton
{ {
color: "transparent" color: "transparent"
hoverColor: "transparent" hoverColor: "transparent"
@ -61,18 +62,18 @@ Item
renderType: Text.NativeRendering renderType: Text.NativeRendering
} }
ActionButton Cura.SecondaryButton
{ {
text: catalog.i18nc("@button", "Restore") text: catalog.i18nc("@button", "Restore")
color: "transparent" // color: "transparent"
hoverColor: "transparent" // hoverColor: "transparent"
textColor: UM.Theme.getColor("text") // textColor: UM.Theme.getColor("text")
textHoverColor: UM.Theme.getColor("text_link") // textHoverColor: UM.Theme.getColor("text_link")
enabled: !CuraDrive.isCreatingBackup && !CuraDrive.isRestoringBackup enabled: !CuraDrive.isCreatingBackup && !CuraDrive.isRestoringBackup
onClicked: confirmRestoreDialog.visible = true onClicked: confirmRestoreDialog.visible = true
} }
ActionButton Cura.ActionButton
{ {
color: "transparent" color: "transparent"
hoverColor: "transparent" hoverColor: "transparent"

View file

@ -14,11 +14,11 @@ Window
id: curaDriveDialog id: curaDriveDialog
minimumWidth: Math.round(UM.Theme.getSize("modal_window_minimum").width) minimumWidth: Math.round(UM.Theme.getSize("modal_window_minimum").width)
minimumHeight: Math.round(UM.Theme.getSize("modal_window_minimum").height) minimumHeight: Math.round(UM.Theme.getSize("modal_window_minimum").height)
maximumWidth: minimumWidth * 1.2 maximumWidth: Math.round(minimumWidth * 1.2)
maximumHeight: minimumHeight * 1.2 maximumHeight: Math.round(minimumHeight * 1.2)
width: minimumWidth width: minimumWidth
height: minimumHeight height: minimumHeight
color: UM.Theme.getColor("sidebar") color: UM.Theme.getColor("main_background")
title: catalog.i18nc("@title:window", "Cura Backups") title: catalog.i18nc("@title:window", "Cura Backups")
// Globally available. // Globally available.

View file

@ -38,11 +38,14 @@ Column
renderType: Text.NativeRendering renderType: Text.NativeRendering
} }
ActionButton Cura.PrimaryButton
{ {
id: loginButton id: loginButton
onClicked: Cura.API.account.login() width: UM.Theme.getSize("account_button").width
text: catalog.i18nc("@button", "Sign In") height: UM.Theme.getSize("account_button").height
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
text: catalog.i18nc("@button", "Sign in")
onClicked: Cura.API.account.login()
fixedWidthMode: true
} }
} }

View file

@ -4,6 +4,7 @@
import QtQuick 2.7 import QtQuick 2.7
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtGraphicalEffects 1.0 // For the dropshadow import QtGraphicalEffects 1.0 // For the dropshadow
import UM 1.1 as UM import UM 1.1 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
@ -30,6 +31,7 @@ Button
property color outlineDisabledColor: outlineColor property color outlineDisabledColor: outlineColor
property alias shadowColor: shadow.color property alias shadowColor: shadow.color
property alias shadowEnabled: shadow.visible property alias shadowEnabled: shadow.visible
property alias busy: busyIndicator.visible
// This property is used to indicate whether the button has a fixed width or the width would depend on the contents // This property is used to indicate whether the button has a fixed width or the width would depend on the contents
// Be careful when using fixedWidthMode, the translated texts can be too long that they won't fit. In any case, // Be careful when using fixedWidthMode, the translated texts can be too long that they won't fit. In any case,
@ -117,4 +119,17 @@ Button
delay: 500 delay: 500
visible: text != "" && button.hovered visible: text != "" && button.hovered
} }
BusyIndicator {
id: busyIndicator
anchors {
centerIn: parent
}
width: height
height: parent.height
visible: false
}
} }

View file

@ -0,0 +1,61 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7
import QtQuick.Controls 2.1
import UM 1.3 as UM
CheckBox
{
id: checkbox
hoverEnabled: true
property alias tooltip: tooltip.text
indicator: Rectangle {
implicitWidth: UM.Theme.getSize("checkbox").width
implicitHeight: UM.Theme.getSize("checkbox").height
x: 0
y: Math.round(parent.height / 2 - height / 2)
color: UM.Theme.getColor("main_background")
radius: UM.Theme.getSize("checkbox_radius").width
border.width: UM.Theme.getSize("default_lining").width
border.color: checkbox.hovered ? UM.Theme.getColor("checkbox_border_hover") : UM.Theme.getColor("checkbox_border")
UM.RecolorImage
{
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
width: Math.round(parent.width / 2.5)
height: Math.round(parent.height / 2.5)
sourceSize.height: width
color: UM.Theme.getColor("checkbox_mark")
source: UM.Theme.getIcon("check")
opacity: checkbox.checked
Behavior on opacity { NumberAnimation { duration: 100; } }
}
}
contentItem: Label {
anchors
{
left: checkbox.indicator.right
leftMargin: UM.Theme.getSize("narrow_margin").width
}
text: checkbox.text
color: UM.Theme.getColor("checkbox_text")
font: UM.Theme.getFont("default")
renderType: Text.NativeRendering
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
ToolTip
{
id: tooltip
text: ""
delay: 500
visible: text != "" && checkbox.hovered
}
}

View file

@ -123,6 +123,17 @@ UM.MainWindow
} }
} }
} }
// This is a placehoder for adding a pattern in the header
Image
{
id: backgroundPattern
anchors.fill: parent
fillMode: Image.Tile
source: UM.Theme.getImage("header_pattern")
horizontalAlignment: Image.AlignLeft
verticalAlignment: Image.AlignTop
}
} }
MainWindowHeader MainWindowHeader

View file

@ -15,3 +15,4 @@ ViewsSelector 1.0 ViewsSelector.qml
ToolbarButton 1.0 ToolbarButton.qml ToolbarButton 1.0 ToolbarButton.qml
SettingView 1.0 SettingView.qml SettingView 1.0 SettingView.qml
ProfileMenu 1.0 ProfileMenu.qml ProfileMenu 1.0 ProfileMenu.qml
CheckBox 1.0 CheckBox.qml

View file

@ -478,7 +478,7 @@ QtObject
color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : (control.enabled ? Theme.getColor("checkbox") : Theme.getColor("checkbox_disabled")) color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : (control.enabled ? Theme.getColor("checkbox") : Theme.getColor("checkbox_disabled"))
Behavior on color { ColorAnimation { duration: 50; } } Behavior on color { ColorAnimation { duration: 50; } }
radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : UM.Theme.getSize("checkbox_radius").width radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : Theme.getSize("checkbox_radius").width
border.width: Theme.getSize("default_lining").width border.width: Theme.getSize("default_lining").width
border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border") border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border")