From bc300d111653a39688525460c01e44b1a423506e Mon Sep 17 00:00:00 2001 From: Victor Larchenko Date: Tue, 20 Sep 2016 15:06:28 +0600 Subject: [PATCH] T524: Added theme picker --- resources/qml/Preferences/GeneralPage.qml | 68 +++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 6d3cc9c1e7..1d3d149324 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -162,6 +162,74 @@ UM.PreferencesPage width: UM.Theme.getSize("default_margin").width } + Row + { + spacing: UM.Theme.getSize("default_margin").width + Label + { + id: themeLabel + text: catalog.i18nc("@label","Theme:") + anchors.verticalCenter: themeComboBox.verticalCenter + } + + ComboBox + { + id: themeComboBox + model: ListModel + { + id: themeList + + Component.onCompleted: { + append({ text: catalog.i18nc("@item:inlistbox", "Ultimaker"), code: "cura" }) + } + } + + currentIndex: + { + var code = UM.Preferences.getValue("general/theme"); + for(var i = 0; i < themeList.count; ++i) + { + if(model.get(i).code == code) + { + return i + } + } + } + onActivated: UM.Preferences.setValue("general/theme", model.get(index).code) + + Component.onCompleted: + { + // Because ListModel is stupid and does not allow using qsTr() for values. + for(var i = 0; i < themeList.count; ++i) + { + themeList.setProperty(i, "text", catalog.i18n(themeList.get(i).text)); + } + + // Glorious hack time. ComboBox does not update the text properly after changing the + // model. So change the indices around to force it to update. + currentIndex += 1; + currentIndex -= 1; + } + } + } + + Label + { + id: themeCaption + + //: Theme change warning + text: catalog.i18nc("@label", "You will need to restart the application for theme changes to have effect.") + wrapMode: Text.WordWrap + font.italic: true + } + + Item + { + //: Spacer + height: UM.Theme.getSize("default_margin").height + width: UM.Theme.getSize("default_margin").width + } + Label { font.bold: true