mirror of
https://github.com/Ultimaker/Cura.git
synced 2026-02-15 17:09:33 -07:00
Change Preferences dialog creation and destruction
CURA-11810
This commit is contained in:
parent
890543b7de
commit
376d18c7ee
3 changed files with 161 additions and 34 deletions
|
|
@ -456,45 +456,32 @@ UM.MainWindow
|
|||
}
|
||||
}
|
||||
|
||||
UM.PreferencesDialog
|
||||
Component
|
||||
{
|
||||
id: preferences
|
||||
|
||||
Component.onCompleted:
|
||||
id: preferencesDialogComponent
|
||||
Cura.PreferencesDialog
|
||||
{
|
||||
//; Remove & re-add the general page as we want to use our own instead of uranium standard.
|
||||
removePage(0);
|
||||
insertPage(0, catalog.i18nc("@title:tab","General"), Qt.resolvedUrl("Preferences/GeneralPage.qml"));
|
||||
|
||||
removePage(1);
|
||||
insertPage(1, catalog.i18nc("@title:tab","Settings"), Qt.resolvedUrl("Preferences/SettingVisibilityPage.qml"));
|
||||
|
||||
insertPage(2, catalog.i18nc("@title:tab", "Printers"), Qt.resolvedUrl("Preferences/MachinesPage.qml"));
|
||||
|
||||
insertPage(3, catalog.i18nc("@title:tab", "Materials"), Qt.resolvedUrl("Preferences/Materials/MaterialsPage.qml"));
|
||||
|
||||
insertPage(4, catalog.i18nc("@title:tab", "Profiles"), Qt.resolvedUrl("Preferences/ProfilesPage.qml"));
|
||||
currentPage = 0;
|
||||
selfDestroy: true
|
||||
}
|
||||
}
|
||||
|
||||
onVisibleChanged:
|
||||
{
|
||||
// When the dialog closes, switch to the General page.
|
||||
// This prevents us from having a heavy page like Setting Visibility active in the background.
|
||||
setPage(0);
|
||||
}
|
||||
function showPreferencesDialog()
|
||||
{
|
||||
var dialog = preferencesDialogComponent.createObject(base)
|
||||
dialog.show()
|
||||
return dialog
|
||||
}
|
||||
|
||||
Connections
|
||||
{
|
||||
target: Cura.Actions.preferences
|
||||
function onTriggered() { preferences.visible = true }
|
||||
function onTriggered() { showPreferencesDialog() }
|
||||
}
|
||||
|
||||
Connections
|
||||
{
|
||||
target: CuraApplication
|
||||
function onShowPreferencesWindow() { preferences.visible = true }
|
||||
function onShowPreferencesWindow() { showPreferencesDialog() }
|
||||
}
|
||||
|
||||
Connections
|
||||
|
|
@ -511,8 +498,8 @@ UM.MainWindow
|
|||
target: Cura.Actions.configureMachines
|
||||
function onTriggered()
|
||||
{
|
||||
preferences.visible = true;
|
||||
preferences.setPage(2);
|
||||
var dialog = showPreferencesDialog()
|
||||
dialog.currentPage = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -521,8 +508,8 @@ UM.MainWindow
|
|||
target: Cura.Actions.manageProfiles
|
||||
function onTriggered()
|
||||
{
|
||||
preferences.visible = true;
|
||||
preferences.setPage(4);
|
||||
var dialog = showPreferencesDialog()
|
||||
dialog.currentPage = 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -531,8 +518,8 @@ UM.MainWindow
|
|||
target: Cura.Actions.manageMaterials
|
||||
function onTriggered()
|
||||
{
|
||||
preferences.visible = true;
|
||||
preferences.setPage(3)
|
||||
var dialog = showPreferencesDialog()
|
||||
dialog.currentPage = 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -541,11 +528,11 @@ UM.MainWindow
|
|||
target: Cura.Actions.configureSettingVisibility
|
||||
function onTriggered(source)
|
||||
{
|
||||
preferences.visible = true;
|
||||
preferences.setPage(1);
|
||||
var dialog = showPreferencesDialog()
|
||||
dialog.currentPage = 1;
|
||||
if(source && source.key)
|
||||
{
|
||||
preferences.getCurrentItem().scrollToSection(source.key);
|
||||
dialog.currentItem.scrollToSection(source.key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
136
resources/qml/Preferences/PreferencesDialog.qml
Normal file
136
resources/qml/Preferences/PreferencesDialog.qml
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
// Copyright (c) 2022 Ultimaker B.V.
|
||||
// Uranium is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.1
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
|
||||
import ".."
|
||||
|
||||
import UM 1.6 as UM
|
||||
|
||||
UM.Dialog
|
||||
{
|
||||
id: base
|
||||
|
||||
title: catalog.i18nc("@title:window", "Preferences")
|
||||
minimumWidth: UM.Theme.getSize("modal_window_minimum").width
|
||||
minimumHeight: UM.Theme.getSize("modal_window_minimum").height
|
||||
width: minimumWidth
|
||||
height: minimumHeight
|
||||
|
||||
property alias currentPage: pagesList.currentIndex
|
||||
property alias currentItem: pagesList.currentItem
|
||||
|
||||
Rectangle
|
||||
{
|
||||
anchors.fill: parent
|
||||
color: UM.Theme.getColor("background_2")
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: test
|
||||
anchors.fill: parent
|
||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||
|
||||
ListView
|
||||
{
|
||||
id: pagesList
|
||||
width: UM.Theme.getSize("preferences_page_list_item").width
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
ScrollBar.vertical: UM.ScrollBar {}
|
||||
clip: true
|
||||
model: [
|
||||
{
|
||||
name: catalog.i18nc("@title:tab","General"),
|
||||
item: Qt.resolvedUrl("GeneralPage.qml")
|
||||
},
|
||||
{
|
||||
name: catalog.i18nc("@title:tab","Settings"),
|
||||
item: Qt.resolvedUrl("SettingVisibilityPage.qml")
|
||||
},
|
||||
{
|
||||
name: catalog.i18nc("@title:tab","Printers"),
|
||||
item: Qt.resolvedUrl("MachinesPage.qml")
|
||||
},
|
||||
{
|
||||
name: catalog.i18nc("@title:tab","Materials"),
|
||||
item: Qt.resolvedUrl("Materials/MaterialsPage.qml")
|
||||
},
|
||||
{
|
||||
name: catalog.i18nc("@title:tab","Profiles"),
|
||||
item: Qt.resolvedUrl("ProfilesPage.qml")
|
||||
}
|
||||
]
|
||||
|
||||
delegate: Rectangle
|
||||
{
|
||||
width: parent ? parent.width : 0
|
||||
height: pageLabel.height
|
||||
|
||||
color: ListView.isCurrentItem ? UM.Theme.getColor("background_3") : UM.Theme.getColor("main_background")
|
||||
|
||||
UM.Label
|
||||
{
|
||||
id: pageLabel
|
||||
anchors.centerIn: parent
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
width: parent.width
|
||||
height: UM.Theme.getSize("preferences_page_list_item").height
|
||||
color: UM.Theme.getColor("text_default")
|
||||
text: modelData.name
|
||||
}
|
||||
MouseArea
|
||||
{
|
||||
anchors.fill: parent
|
||||
onClicked: pagesList.currentIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
onCurrentIndexChanged: stackView.replace(model[currentIndex].item)
|
||||
}
|
||||
|
||||
StackView
|
||||
{
|
||||
id: stackView
|
||||
anchors
|
||||
{
|
||||
left: pagesList.right
|
||||
leftMargin: UM.Theme.getSize("narrow_margin").width
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
initialItem: Item { property bool resetEnabled: false }
|
||||
|
||||
replaceEnter: Transition
|
||||
{
|
||||
NumberAnimation
|
||||
{
|
||||
properties: "opacity"
|
||||
from: 0
|
||||
to: 1
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
replaceExit: Transition
|
||||
{
|
||||
NumberAnimation
|
||||
{
|
||||
properties: "opacity"
|
||||
from: 1
|
||||
to: 0
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "uranium"; }
|
||||
}
|
||||
}
|
||||
|
|
@ -52,3 +52,7 @@ NumericTextFieldWithUnit 1.0 NumericTextFieldWithUnit.qml
|
|||
PrintHeadMinMaxTextField 1.0 PrintHeadMinMaxTextField.qml
|
||||
SimpleCheckBox 1.0 SimpleCheckBox.qml
|
||||
RenameDialog 1.0 RenameDialog.qml
|
||||
|
||||
# Cura/Preferences
|
||||
|
||||
PreferencesDialog 1.0 PreferencesDialog.qml
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue