feat(color): keep screen options when changing layout (#5530)
This commit is contained in:
@@ -231,7 +231,33 @@ void ScreenSetupPage::build(Window* window)
|
|||||||
// delete any options potentially accessing
|
// delete any options potentially accessing
|
||||||
// the old custom screen before re-creating it
|
// the old custom screen before re-creating it
|
||||||
clearLayoutOptions();
|
clearLayoutOptions();
|
||||||
|
|
||||||
|
// If screen is not App Mode then save option values
|
||||||
|
auto layoutData = &g_model.screenData[customScreenIndex].layoutData;
|
||||||
|
auto layout = (Layout*)customScreens[customScreenIndex];
|
||||||
|
bool restoreOptions = false;
|
||||||
|
bool hasTopbar = true, hasFM = true, hasSliders = true, hasTrims = true, isMirrored = false;
|
||||||
|
if (!layout->isAppMode()) {
|
||||||
|
hasTopbar = layoutData->options[LAYOUT_OPTION_TOPBAR].value.boolValue;
|
||||||
|
hasFM = layoutData->options[LAYOUT_OPTION_FM].value.boolValue;
|
||||||
|
hasSliders = layoutData->options[LAYOUT_OPTION_SLIDERS].value.boolValue;
|
||||||
|
hasTrims = layoutData->options[LAYOUT_OPTION_TRIMS].value.boolValue;
|
||||||
|
isMirrored = layoutData->options[LAYOUT_OPTION_MIRRORED].value.boolValue;
|
||||||
|
restoreOptions = true;
|
||||||
|
}
|
||||||
|
|
||||||
factory->createCustomScreen(customScreenIndex);
|
factory->createCustomScreen(customScreenIndex);
|
||||||
|
|
||||||
|
// If new screen is not App Mode then restore saved option values
|
||||||
|
layout = (Layout*)customScreens[customScreenIndex];
|
||||||
|
if (restoreOptions && !layout->isAppMode()) {
|
||||||
|
layoutData->options[LAYOUT_OPTION_TOPBAR].value.boolValue = hasTopbar;
|
||||||
|
layoutData->options[LAYOUT_OPTION_FM].value.boolValue = hasFM;
|
||||||
|
layoutData->options[LAYOUT_OPTION_SLIDERS].value.boolValue = hasSliders;
|
||||||
|
layoutData->options[LAYOUT_OPTION_TRIMS].value.boolValue = hasTrims;
|
||||||
|
layoutData->options[LAYOUT_OPTION_MIRRORED].value.boolValue = isMirrored;
|
||||||
|
}
|
||||||
|
|
||||||
buildLayoutOptions();
|
buildLayoutOptions();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user