Files
namida/lib/controller/settings.equalizer.dart
2026-02-14 18:40:13 +02:00

75 lines
2.4 KiB
Dart

part of 'settings_controller.dart';
class EqualizerSettings with SettingsFileWriter {
static final EqualizerSettings inst = EqualizerSettings._internal();
EqualizerSettings._internal();
int? preset;
bool equalizerEnabled = false;
final equalizer = <double, double>{};
bool loudnessEnhancerEnabled = false;
double loudnessEnhancer = 0.0;
final uiTapToUpdate = true.obso;
void save({
int? preset,
bool resetPreset = false,
bool? equalizerEnabled,
MapEntry<double, double>? equalizerValue,
bool? loudnessEnhancerEnabled,
double? loudnessEnhancer,
bool? uiTapToUpdate,
}) {
if (preset != null || resetPreset) this.preset = preset;
if (equalizerEnabled != null) this.equalizerEnabled = equalizerEnabled;
if (equalizerValue != null) equalizer[equalizerValue.key] = equalizerValue.value;
if (loudnessEnhancerEnabled != null) this.loudnessEnhancerEnabled = loudnessEnhancerEnabled;
if (loudnessEnhancer != null) this.loudnessEnhancer = loudnessEnhancer;
if (uiTapToUpdate != null) this.uiTapToUpdate.value = uiTapToUpdate;
_writeToStorage();
}
@override
void applyKuruSettings() {
uiTapToUpdate.value = false;
}
Future<void> prepareSettingsFile() async {
final json = await prepareSettingsFile_();
if (json is! Map) return;
try {
preset = json["preset"];
equalizerEnabled = json["equalizerEnabled"] ?? equalizerEnabled;
final eqMap = json['equalizer'];
if (eqMap is Map) {
equalizer.clear();
final m = eqMap.cast<String, double>();
equalizer.addAll(m.map((key, value) => MapEntry(double.parse(key), value)));
}
loudnessEnhancerEnabled = json["loudnessEnhancerEnabled"] ?? loudnessEnhancerEnabled;
loudnessEnhancer = json["loudnessEnhancer"] ?? loudnessEnhancer;
uiTapToUpdate.value = json["uiTapToUpdate"] ?? uiTapToUpdate.value;
} catch (e, st) {
printy(e, isError: true);
logger.report(e, st);
}
}
@override
Object get jsonToWrite => <String, dynamic>{
"preset": preset,
"equalizerEnabled": equalizerEnabled,
"equalizer": equalizer.map((key, value) => MapEntry(key.toString(), value)),
"loudnessEnhancerEnabled": loudnessEnhancerEnabled,
"loudnessEnhancer": loudnessEnhancer,
"uiTapToUpdate": uiTapToUpdate.value,
};
Future<void> _writeToStorage() async => await writeToStorage();
@override
String get filePath => AppPaths.SETTINGS_EQUALIZER;
}