New style more info dialog for SliceInfo

CURA-6057
This commit is contained in:
Lipu Fei 2019-04-08 14:12:03 +02:00
parent ac1b1a9902
commit 3bf8a1f257
3 changed files with 99 additions and 94 deletions

View file

@ -1,150 +1,154 @@
// Copyright (c) 2018 Ultimaker B.V. // Copyright (c) 2019 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7 import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Window 2.2 import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import UM 1.3 as UM import UM 1.3 as UM
import Cura 1.0 as Cura import Cura 1.1 as Cura
UM.Dialog Window
{ {
UM.I18nCatalog { id: catalog; name: "cura" }
id: baseDialog id: baseDialog
title: catalog.i18nc("@title:window", "More information on anonymous data collection") title: catalog.i18nc("@title:window", "More information on anonymous data collection")
visible: false visible: false
modality: Qt.ApplicationModal
minimumWidth: 500 * screenScaleFactor minimumWidth: 500 * screenScaleFactor
minimumHeight: 400 * screenScaleFactor minimumHeight: 400 * screenScaleFactor
width: minimumWidth width: minimumWidth
height: minimumHeight height: minimumHeight
property bool allowSendData: true // for saving the user's choice color: UM.Theme.getColor("main_background")
onAccepted: manager.setSendSliceInfo(allowSendData) property bool allowSendData: true // for saving the user's choice
onVisibilityChanged: onVisibilityChanged:
{ {
if (visible) if (visible)
{ {
baseDialog.allowSendData = UM.Preferences.getValue("info/send_slice_info"); baseDialog.allowSendData = UM.Preferences.getValue("info/send_slice_info")
if (baseDialog.allowSendData) if (baseDialog.allowSendData)
{ {
allowSendButton.checked = true; allowSendButton.checked = true
} }
else else
{ {
dontSendButton.checked = true; dontSendButton.checked = true
} }
} }
} }
// Main content area
Item Item
{ {
id: textRow anchors.fill: parent
anchors anchors.margins: UM.Theme.getSize("default_margin").width
{
top: parent.top
bottom: radioButtonsRow.top
bottomMargin: UM.Theme.getSize("default_margin").height
left: parent.left
right: parent.right
}
Label Item // Text part
{ {
id: headerText id: textRow
anchors anchors
{ {
top: parent.top top: parent.top
left: parent.left bottom: radioButtonsRow.top
right: parent.right
}
text: catalog.i18nc("@text:window", "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent.")
wrapMode: Text.WordWrap
}
TextArea
{
id: exampleData
anchors
{
top: headerText.bottom
topMargin: UM.Theme.getSize("default_margin").height
bottom: parent.bottom
bottomMargin: UM.Theme.getSize("default_margin").height bottomMargin: UM.Theme.getSize("default_margin").height
left: parent.left left: parent.left
right: parent.right right: parent.right
} }
text: manager.getExampleData() Label
readOnly: true
textFormat: TextEdit.PlainText
}
}
Column
{
id: radioButtonsRow
width: parent.width
anchors.bottom: buttonRow.top
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
ExclusiveGroup { id: group }
RadioButton
{
id: dontSendButton
text: catalog.i18nc("@text:window", "I don't want to send this data")
exclusiveGroup: group
onClicked:
{ {
baseDialog.allowSendData = !checked; id: headerText
anchors
{
top: parent.top
left: parent.left
right: parent.right
}
text: catalog.i18nc("@text:window", "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent.")
wrapMode: Text.WordWrap
renderType: Text.NativeRendering
} }
}
RadioButton Cura.ScrollableTextArea
{
id: allowSendButton
text: catalog.i18nc("@text:window", "Allow sending this data to Ultimaker and help us improve Cura")
exclusiveGroup: group
onClicked:
{ {
baseDialog.allowSendData = checked; anchors
} {
} top: headerText.bottom
} topMargin: UM.Theme.getSize("default_margin").height
bottom: parent.bottom
bottomMargin: UM.Theme.getSize("default_margin").height
left: parent.left
right: parent.right
}
Item textArea.text: manager.getExampleData()
{ textArea.readOnly: true
id: buttonRow
anchors.bottom: parent.bottom
width: parent.width
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
UM.I18nCatalog { id: catalog; name: "cura" }
Button
{
anchors.right: parent.right
text: catalog.i18nc("@action:button", "OK")
onClicked:
{
baseDialog.accepted()
baseDialog.hide()
} }
} }
Button Column // Radio buttons for agree and disagree
{ {
id: radioButtonsRow
anchors.left: parent.left anchors.left: parent.left
text: catalog.i18nc("@action:button", "Cancel") anchors.right: parent.right
onClicked: anchors.bottom: buttonRow.top
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
Cura.RadioButton
{ {
baseDialog.rejected() id: dontSendButton
baseDialog.hide() text: catalog.i18nc("@text:window", "I don't want to send this data")
onClicked:
{
baseDialog.allowSendData = !checked
}
}
Cura.RadioButton
{
id: allowSendButton
text: catalog.i18nc("@text:window", "Allow sending this data to Ultimaker and help us improve Cura")
onClicked:
{
baseDialog.allowSendData = checked
}
}
}
Item // Bottom buttons
{
id: buttonRow
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
height: childrenRect.height
Cura.PrimaryButton
{
anchors.right: parent.right
text: catalog.i18nc("@action:button", "OK")
onClicked:
{
manager.setSendSliceInfo(allowSendData)
baseDialog.hide()
}
}
Cura.SecondaryButton
{
anchors.left: parent.left
text: catalog.i18nc("@action:button", "Cancel")
onClicked:
{
baseDialog.hide()
}
} }
} }
} }

View file

@ -62,7 +62,7 @@ class SliceInfo(QObject, Extension):
def showMoreInfoDialog(self): def showMoreInfoDialog(self):
if self._more_info_dialog is None: if self._more_info_dialog is None:
self._more_info_dialog = self._createDialog("MoreInfoWindow.qml") self._more_info_dialog = self._createDialog("MoreInfoWindow.qml")
self._more_info_dialog.open() self._more_info_dialog.show()
def _createDialog(self, qml_name): def _createDialog(self, qml_name):
Logger.log("d", "Creating dialog [%s]", qml_name) Logger.log("d", "Creating dialog [%s]", qml_name)

View file

@ -21,6 +21,7 @@ ScrollView
font: UM.Theme.getFont("default") font: UM.Theme.getFont("default")
textFormat: TextEdit.PlainText textFormat: TextEdit.PlainText
renderType: Text.NativeRendering renderType: Text.NativeRendering
selectByMouse: true
background: Rectangle // Border background: Rectangle // Border
{ {