mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-14 22:12:18 -06:00
WIP - started implementing quick search
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hydrated_bloc/hydrated_bloc.dart';
|
||||
import 'package:paperless_mobile/features/login/services/authentication_service.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/application_settings_state.dart';
|
||||
import 'package:paperless_mobile/features/settings/bloc/application_settings_state.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
||||
|
||||
class ApplicationSettingsCubit extends HydratedCubit<ApplicationSettingsState> {
|
||||
@@ -27,17 +28,23 @@ class ApplicationSettingsCubit extends HydratedCubit<ApplicationSettingsState> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> setThemeMode(ThemeMode? selectedMode) async {
|
||||
void setThemeMode(ThemeMode? selectedMode) {
|
||||
final updatedSettings = state.copyWith(preferredThemeMode: selectedMode);
|
||||
_updateSettings(updatedSettings);
|
||||
}
|
||||
|
||||
Future<void> setViewType(ViewType viewType) async {
|
||||
void setViewType(ViewType viewType) {
|
||||
final updatedSettings = state.copyWith(preferredViewType: viewType);
|
||||
_updateSettings(updatedSettings);
|
||||
}
|
||||
|
||||
Future<void> _updateSettings(ApplicationSettingsState settings) async {
|
||||
void setColorSchemeOption(ColorSchemeOption schemeOption) {
|
||||
final updatedSettings =
|
||||
state.copyWith(preferredColorSchemeOption: schemeOption);
|
||||
_updateSettings(updatedSettings);
|
||||
}
|
||||
|
||||
void _updateSettings(ApplicationSettingsState settings) async {
|
||||
emit(settings);
|
||||
}
|
||||
|
||||
|
||||
55
lib/features/settings/bloc/application_settings_state.dart
Normal file
55
lib/features/settings/bloc/application_settings_state.dart
Normal file
@@ -0,0 +1,55 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/color_scheme_option.dart';
|
||||
import 'package:paperless_mobile/features/settings/model/view_type.dart';
|
||||
|
||||
part 'application_settings_state.g.dart';
|
||||
|
||||
///
|
||||
/// State holding the current application settings such as selected language, theme mode and more.
|
||||
///
|
||||
@JsonSerializable()
|
||||
class ApplicationSettingsState {
|
||||
static final defaultSettings = ApplicationSettingsState(
|
||||
preferredLocaleSubtag: Platform.localeName.split('_').first,
|
||||
);
|
||||
|
||||
final bool isLocalAuthenticationEnabled;
|
||||
final String preferredLocaleSubtag;
|
||||
final ThemeMode preferredThemeMode;
|
||||
final ViewType preferredViewType;
|
||||
final ColorSchemeOption preferredColorSchemeOption;
|
||||
|
||||
ApplicationSettingsState({
|
||||
required this.preferredLocaleSubtag,
|
||||
this.preferredThemeMode = ThemeMode.system,
|
||||
this.isLocalAuthenticationEnabled = false,
|
||||
this.preferredViewType = ViewType.list,
|
||||
this.preferredColorSchemeOption = ColorSchemeOption.dynamic,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toJson() => _$ApplicationSettingsStateToJson(this);
|
||||
factory ApplicationSettingsState.fromJson(Map<String, dynamic> json) =>
|
||||
_$ApplicationSettingsStateFromJson(json);
|
||||
|
||||
ApplicationSettingsState copyWith({
|
||||
bool? isLocalAuthenticationEnabled,
|
||||
String? preferredLocaleSubtag,
|
||||
ThemeMode? preferredThemeMode,
|
||||
ViewType? preferredViewType,
|
||||
ColorSchemeOption? preferredColorSchemeOption,
|
||||
}) {
|
||||
return ApplicationSettingsState(
|
||||
isLocalAuthenticationEnabled:
|
||||
isLocalAuthenticationEnabled ?? this.isLocalAuthenticationEnabled,
|
||||
preferredLocaleSubtag:
|
||||
preferredLocaleSubtag ?? this.preferredLocaleSubtag,
|
||||
preferredThemeMode: preferredThemeMode ?? this.preferredThemeMode,
|
||||
preferredViewType: preferredViewType ?? this.preferredViewType,
|
||||
preferredColorSchemeOption:
|
||||
preferredColorSchemeOption ?? this.preferredColorSchemeOption,
|
||||
);
|
||||
}
|
||||
}
|
||||
51
lib/features/settings/bloc/application_settings_state.g.dart
Normal file
51
lib/features/settings/bloc/application_settings_state.g.dart
Normal file
@@ -0,0 +1,51 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'application_settings_state.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
ApplicationSettingsState _$ApplicationSettingsStateFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
ApplicationSettingsState(
|
||||
preferredLocaleSubtag: json['preferredLocaleSubtag'] as String,
|
||||
preferredThemeMode:
|
||||
$enumDecodeNullable(_$ThemeModeEnumMap, json['preferredThemeMode']) ??
|
||||
ThemeMode.system,
|
||||
isLocalAuthenticationEnabled:
|
||||
json['isLocalAuthenticationEnabled'] as bool? ?? false,
|
||||
preferredViewType:
|
||||
$enumDecodeNullable(_$ViewTypeEnumMap, json['preferredViewType']) ??
|
||||
ViewType.list,
|
||||
preferredColorSchemeOption: $enumDecodeNullable(
|
||||
_$ColorSchemeOptionEnumMap, json['preferredColorSchemeOption']) ??
|
||||
ColorSchemeOption.dynamic,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$ApplicationSettingsStateToJson(
|
||||
ApplicationSettingsState instance) =>
|
||||
<String, dynamic>{
|
||||
'isLocalAuthenticationEnabled': instance.isLocalAuthenticationEnabled,
|
||||
'preferredLocaleSubtag': instance.preferredLocaleSubtag,
|
||||
'preferredThemeMode': _$ThemeModeEnumMap[instance.preferredThemeMode]!,
|
||||
'preferredViewType': _$ViewTypeEnumMap[instance.preferredViewType]!,
|
||||
'preferredColorSchemeOption':
|
||||
_$ColorSchemeOptionEnumMap[instance.preferredColorSchemeOption]!,
|
||||
};
|
||||
|
||||
const _$ThemeModeEnumMap = {
|
||||
ThemeMode.system: 'system',
|
||||
ThemeMode.light: 'light',
|
||||
ThemeMode.dark: 'dark',
|
||||
};
|
||||
|
||||
const _$ViewTypeEnumMap = {
|
||||
ViewType.grid: 'grid',
|
||||
ViewType.list: 'list',
|
||||
};
|
||||
|
||||
const _$ColorSchemeOptionEnumMap = {
|
||||
ColorSchemeOption.classic: 'classic',
|
||||
ColorSchemeOption.dynamic: 'dynamic',
|
||||
};
|
||||
Reference in New Issue
Block a user