feat: usar a cor escolhida tal e qual e opcao de suavizar
- TatuPalette.scheme aceita softenPrimary e passa a usar a seed como primary, onPrimary por contraste e surfaceTint, em vez da paleta tonal do Material 3 - nova opcao AppSettings.softenThemeColor (default false, ou seja cor exacta) - interruptor 'Suavizar cor do tema' em Configuracoes > Aparencia, com l10n en/pt - a opcao e sincronizada via account data (soften_theme_color) e mantida localmente como fallback, tal como a cor do tema - setApplicationAccountColor e updateApplicationAccountConfig preservam o novo campo - um unico sync de account data actualiza cor e opcao - testes de serializacao e round-trip para o novo campo
This commit is contained in:
@@ -28,6 +28,8 @@ extension ApplicationAccountConfigExtension on Client {
|
||||
config.wallpaperOpacity ?? currentConfig.wallpaperOpacity,
|
||||
wallpaperBlur: config.wallpaperBlur ?? currentConfig.wallpaperBlur,
|
||||
primaryColor: config.primaryColor ?? currentConfig.primaryColor,
|
||||
softenThemeColor:
|
||||
config.softenThemeColor ?? currentConfig.softenThemeColor,
|
||||
).toJson(),
|
||||
);
|
||||
}
|
||||
@@ -40,6 +42,20 @@ extension ApplicationAccountConfigExtension on Client {
|
||||
wallpaperOpacity: currentConfig.wallpaperOpacity,
|
||||
wallpaperBlur: currentConfig.wallpaperBlur,
|
||||
primaryColor: primaryColor,
|
||||
softenThemeColor: currentConfig.softenThemeColor,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> setApplicationAccountSoftenThemeColor(bool soften) {
|
||||
final currentConfig = applicationAccountConfig;
|
||||
return setApplicationAccountConfig(
|
||||
ApplicationAccountConfig(
|
||||
wallpaperUrl: currentConfig.wallpaperUrl,
|
||||
wallpaperOpacity: currentConfig.wallpaperOpacity,
|
||||
wallpaperBlur: currentConfig.wallpaperBlur,
|
||||
primaryColor: currentConfig.primaryColor,
|
||||
softenThemeColor: soften,
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -50,12 +66,14 @@ class ApplicationAccountConfig {
|
||||
final double? wallpaperOpacity;
|
||||
final double? wallpaperBlur;
|
||||
final int? primaryColor;
|
||||
final bool? softenThemeColor;
|
||||
|
||||
const ApplicationAccountConfig({
|
||||
this.wallpaperUrl,
|
||||
this.wallpaperOpacity,
|
||||
this.wallpaperBlur,
|
||||
this.primaryColor,
|
||||
this.softenThemeColor,
|
||||
});
|
||||
|
||||
static double _sanitizedOpacity(double? opacity) {
|
||||
@@ -74,6 +92,7 @@ class ApplicationAccountConfig {
|
||||
),
|
||||
wallpaperBlur: json.tryGet<double>('wallpaper_blur'),
|
||||
primaryColor: json.tryGet<int>('primary_color'),
|
||||
softenThemeColor: json.tryGet<bool>('soften_theme_color'),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
@@ -81,5 +100,6 @@ class ApplicationAccountConfig {
|
||||
'wallpaper_opacity': wallpaperOpacity,
|
||||
'wallpaper_blur': wallpaperBlur,
|
||||
'primary_color': primaryColor,
|
||||
'soften_theme_color': softenThemeColor,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user