Skip to content

Commit

Permalink
Allow individual settings to be blacklisted
Browse files Browse the repository at this point in the history
This can be used to prevent any setting from being edited for any
reason. Currently the dict is empty, but adding any of the
settings keys to it will cause the settings control to be disabled
or greyed out (if it's a text field)
  • Loading branch information
steveatinfincia committed Oct 31, 2019
1 parent 4593c3b commit 93f8ce8
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 9 deletions.
4 changes: 4 additions & 0 deletions qml/ui/SettingsMap.qml
Original file line number Diff line number Diff line change
Expand Up @@ -213,4 +213,8 @@ Item {
{title: "5 minutes", value: 300},
{title: "30 minutes", value: 1800}]},
})

property var blacklistMap: ({
})

}
26 changes: 17 additions & 9 deletions qml/ui/SettingsPopup.qml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ SettingsPopupForm {
* side of things.
*
*/
function _process(setting, initialValue, model, mapping) {
function _process(setting, initialValue, model, mapping, blacklisted) {
var itemTitle = mapping[setting]["title"];
var itemType = mapping[setting]["itemType"];

Expand Down Expand Up @@ -136,7 +136,8 @@ SettingsPopupForm {
"itemType": itemType,
"value": finalValue,
"unit": unit,
"modified": false});
"modified": false,
"blacklisted": blacklisted});
}

/*
Expand All @@ -153,26 +154,33 @@ SettingsPopupForm {
* in a particular tab on the settings panel for organization and ease of use.
*
*/

var blacklisted = false;
if (settingsMap.blacklistMap[setting] !== undefined) {
blacklisted = true;
}

var initialValue = openHDSettings.allSettings[setting];
if (settingsMap.generalSettingsMap[setting] !== undefined) {
_process(setting, initialValue, generalSettingsModel, settingsMap.generalSettingsMap);
_process(setting, initialValue, generalSettingsModel, settingsMap.generalSettingsMap, blacklisted);
} else if (settingsMap.radioSettingsMap[setting] !== undefined) {
_process(setting, initialValue, radioSettingsModel, settingsMap.radioSettingsMap);
_process(setting, initialValue, radioSettingsModel, settingsMap.radioSettingsMap, blacklisted);
} else if (settingsMap.videoSettingsMap[setting] !== undefined) {
_process(setting, initialValue, videoSettingsModel, settingsMap.videoSettingsMap);
_process(setting, initialValue, videoSettingsModel, settingsMap.videoSettingsMap, blacklisted);
} else if (settingsMap.rcSettingsMap[setting] !== undefined) {
_process(setting, initialValue, rcSettingsModel, settingsMap.rcSettingsMap);
_process(setting, initialValue, rcSettingsModel, settingsMap.rcSettingsMap, blacklisted);
} else if (settingsMap.hotspotSettingsMap[setting] !== undefined) {
_process(setting, initialValue, hotspotSettingsModel, settingsMap.hotspotSettingsMap);
_process(setting, initialValue, hotspotSettingsModel, settingsMap.hotspotSettingsMap, blacklisted);
} else if (settingsMap.smartSyncSettingsMap[setting] !== undefined) {
_process(setting, initialValue, smartSyncSettingsModel, settingsMap.smartSyncSettingsMap);
_process(setting, initialValue, smartSyncSettingsModel, settingsMap.smartSyncSettingsMap, blacklisted);
} else {
// setting not found in any mapping so add it to the "other" tab as-is, no processing
// of any kind. This guarantees that newly added settings are never missing from the app.
otherSettingsModel.append({"title": setting,
"setting": setting,
"itemType": "string",
"value": String(openHDSettings.allSettings[setting])});
"value": String(openHDSettings.allSettings[setting]),
"blacklisted": blacklisted});
}
}
}
Expand Down
1 change: 1 addition & 0 deletions qml/ui/delegates/ChoiceSettingDelegate.ui.qml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ Rectangle {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 8
enabled: !itemModel.blacklisted


// @disable-check M223
Expand Down
1 change: 1 addition & 0 deletions qml/ui/delegates/NumberSettingDelegate.ui.qml
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,6 @@ Rectangle {
model.value = value
model.modified = true
}
enabled: !model.blacklisted
}
}
1 change: 1 addition & 0 deletions qml/ui/delegates/RangeSettingDelegate.ui.qml
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ Rectangle {
// @disable-check M222
text: "%1%2".arg(slider.value).arg(model.unit)
}
enabled: !model.blacklisted
}
}
1 change: 1 addition & 0 deletions qml/ui/delegates/SwitchSettingDelegate.ui.qml
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@ Rectangle {
model.value = checked
model.modified = true
}
enabled: !model.blacklisted
}
}
1 change: 1 addition & 0 deletions qml/ui/delegates/TextSettingDelegate.ui.qml
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,6 @@ Rectangle {
model.value = text;
model.modified = true;
}
enabled: !model.blacklisted
}
}

0 comments on commit 93f8ce8

Please sign in to comment.