mirror of
https://github.com/namidaco/namida.git
synced 2026-03-13 08:12:29 +08:00
75 lines
2.4 KiB
Dart
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;
|
|
}
|