mirror of
https://github.com/DungeonPaper/dungeon-paper-app.git
synced 2026-05-17 17:58:11 +00:00
* feat: intl poc * refactor: more translation migrations * refactor: move `tr` export to nicer path * refactor: more translation updates * feat: intl on many more files * feat: more i18n replacements * feat: more translation updates * feat: replace all left usages of S.current * chore: last forgotten cleanups * refactor: remove old intl files * chore: format all files * docs: update docs chore: use git version of i18n
87 lines
2.8 KiB
Dart
87 lines
2.8 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:dungeon_paper/app/data/services/character_service.dart';
|
|
import 'package:dungeon_paper/app/themes/themes.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:wakelock/wakelock.dart';
|
|
|
|
class UserSettings with CharacterServiceMixin {
|
|
final bool keepScreenAwake;
|
|
final int defaultLightTheme;
|
|
final int defaultDarkTheme;
|
|
final Brightness? brightnessOverride;
|
|
|
|
UserSettings({
|
|
this.keepScreenAwake = true,
|
|
this.defaultLightTheme = AppThemes.parchment,
|
|
this.defaultDarkTheme = AppThemes.dark,
|
|
this.brightnessOverride,
|
|
});
|
|
|
|
UserSettings copyWith({
|
|
bool? keepScreenAwake,
|
|
int? defaultLightTheme,
|
|
int? defaultDarkTheme,
|
|
Brightness? brightnessOverride,
|
|
}) =>
|
|
UserSettings(
|
|
keepScreenAwake: keepScreenAwake ?? this.keepScreenAwake,
|
|
defaultLightTheme: defaultLightTheme ?? this.defaultLightTheme,
|
|
defaultDarkTheme: defaultDarkTheme ?? this.defaultDarkTheme,
|
|
brightnessOverride: brightnessOverride ?? this.brightnessOverride,
|
|
);
|
|
|
|
factory UserSettings.fromRawJson(String str) =>
|
|
UserSettings.fromJson(json.decode(str));
|
|
|
|
factory UserSettings.fromJson(Map<String, dynamic> json) => UserSettings(
|
|
keepScreenAwake: json['keepScreenAwake'],
|
|
defaultLightTheme: json['defaultLightTheme'],
|
|
defaultDarkTheme: json['defaultDarkTheme'],
|
|
brightnessOverride:
|
|
Brightness.values.cast<Brightness?>().firstWhereOrNull(
|
|
(element) => element!.name == json['brightnessOverride'],
|
|
),
|
|
);
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
'keepScreenAwake': keepScreenAwake,
|
|
'defaultLightTheme': defaultLightTheme,
|
|
'defaultDarkTheme': defaultDarkTheme,
|
|
'brightnessOverride': brightnessOverride?.name,
|
|
};
|
|
|
|
@override
|
|
bool operator ==(Object other) =>
|
|
identical(this, other) ||
|
|
other is UserSettings &&
|
|
runtimeType == other.runtimeType &&
|
|
keepScreenAwake == other.keepScreenAwake &&
|
|
defaultLightTheme == other.defaultLightTheme &&
|
|
defaultDarkTheme == other.defaultDarkTheme &&
|
|
brightnessOverride == other.brightnessOverride;
|
|
|
|
@override
|
|
int get hashCode => Object.hashAll([
|
|
keepScreenAwake,
|
|
defaultLightTheme,
|
|
defaultDarkTheme,
|
|
brightnessOverride
|
|
]);
|
|
|
|
String get debugProperties =>
|
|
'keepScreenAwake: $keepScreenAwake, defaultLightTheme: $defaultLightTheme, defaultDarkTheme: $defaultDarkTheme, brightnessOverride: $brightnessOverride';
|
|
|
|
@override
|
|
String toString() => 'UserSettings($debugProperties)';
|
|
|
|
void apply() {
|
|
Wakelock.toggle(enable: keepScreenAwake);
|
|
|
|
if (maybeChar != null) {
|
|
charService.switchToCharacterTheme(char);
|
|
} else {}
|
|
}
|
|
}
|