From 8fad10a2d1abd9cc379c092444d13dce0ddc9c91 Mon Sep 17 00:00:00 2001 From: Anton Thomasson Date: Sun, 21 Mar 2021 13:09:38 +0100 Subject: [PATCH] Rework applying initial settings --- qml/pages/PrinterPage.qml | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/qml/pages/PrinterPage.qml b/qml/pages/PrinterPage.qml index 1487518..1aa6f29 100644 --- a/qml/pages/PrinterPage.qml +++ b/qml/pages/PrinterPage.qml @@ -64,7 +64,7 @@ Page { visible: printer.attrs.hasOwnProperty("printer-uuid") onClicked: { var tmp = jobParams; - // Support varies between formats and values varies between documents, would be confusing to save + // Varies between documents, would be confusing to save tmp["page-ranges"] = undefined; db.setJobSettings(printer.attrs["printer-uuid"].value, selectedFileType, JSON.stringify(tmp)) } @@ -101,8 +101,18 @@ Page { function isValid(name) { return printer.attrs.hasOwnProperty(name+"-supported"); } - function getInitialChoice(name) { - return jobParams.hasOwnProperty(name) ? jobParams[name].value : undefined + function setInitialChoice(setting) { + if(jobParams.hasOwnProperty(setting.name)) + { + if(setting.valid) + { + setting.choice = jobParams[setting.name].value; + } + else + { // Clear jobParams of invalid settings + jobParams[setting.name] = undefined; + } + } } function getChoices(name) { return isValid(name) ? printer.attrs[name+"-supported"].value : []; @@ -117,48 +127,48 @@ Page { name: "sides" prettyName: qsTr("Sides") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.Keyword name: "media" prettyName: qsTr("Print media") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } IntegerSetting { tag: IppMsg.Integer name: "copies" prettyName: qsTr("Copies") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) low: valid ? printer.attrs[name+"-supported"].value.low : 0 high: valid ? printer.attrs[name+"-supported"].value.high : 0 default_choice: utils.getDefaultChoice(name) onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.Keyword name: "multiple-document-handling" prettyName: qsTr("Collated copies") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } RangeSetting { tag: IppMsg.IntegerRange @@ -166,82 +176,82 @@ Page { prettyName: qsTr("Page range") valid: (utils.isValid(name) || ConvertChecker.pdf) && (selectedFileType == "application/pdf" || Mimer.isOffice(selectedFileType)) - choice: utils.getInitialChoice(name) property var pdfpages: ConvertChecker.pdfPages(selectedFile) high: pdfpages == 0 ? 65535 : pdfpages onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.Keyword name: "print-color-mode" prettyName: qsTr("Color mode") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.Enum name: "print-quality" prettyName: qsTr("Quality") - choice: utils.getInitialChoice(name) valid: utils.isValid(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.Resolution name: "printer-resolution" prettyName: qsTr("Resolution") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.MimeMediaType name: "document-format" prettyName: qsTr("Transfer format") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } ChoiceSetting { tag: IppMsg.Keyword name: "media-source" prettyName: qsTr("Media source") valid: utils.isValid(name) - choice: utils.getInitialChoice(name) choices: utils.getChoices(name) default_choice: utils.getDefaultChoice(name) mime_type: selectedFileType onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } MediaColSetting { tag: IppMsg.BeginCollection name: "media-col" prettyName: qsTr("Zero margins") valid: false - choice: utils.getInitialChoice(name) printer: page.printer onChoiceChanged: page.choiceMade(this) + Component.onCompleted: utils.setInitialChoice(this) } } }