use super::MenuConfig;
pub struct MenuConfigManager {
config: MenuConfig,
auto_adjust: bool,
}
impl MenuConfigManager {
pub fn new() -> Self {
Self { config: MenuConfig::new(), auto_adjust: true }
}
pub fn config(&self) -> &MenuConfig {
&self.config
}
pub fn config_mut(&mut self) -> &mut MenuConfig {
&mut self.config
}
pub fn set_auto_adjust(&mut self, enabled: bool) {
self.auto_adjust = enabled;
}
pub fn auto_adjust(&self) -> bool {
self.auto_adjust
}
pub fn refresh_hardware_detection(&mut self) {
if self.auto_adjust && !self.config.has_user_overrides() {
self.config = MenuConfig::new();
}
}
pub fn adapt_for_battery_power(&mut self) {
if self.config.hardware_caps().on_battery && self.auto_adjust {
self.config.apply_battery_adaptive_reduction();
}
}
}
impl Default for MenuConfigManager {
fn default() -> Self {
Self::new()
}
}