From 64c431286e78e04a9e62a01eb3cab4f52547ebfb Mon Sep 17 00:00:00 2001 From: Anton Stubenbord Date: Tue, 13 Dec 2022 01:17:53 +0100 Subject: [PATCH] Some visual updates, bugfixes, finished major refactoring! --- .../cubit/document_upload_cubit.dart | 2 +- .../cubit/document_upload_state.dart | 6 +- .../documents/view/pages/documents_page.dart | 2 +- .../view/widgets/documents_empty_state.dart | 4 +- .../widgets/search/document_filter_panel.dart | 130 +++++++++--------- .../widgets/search/query_type_form_field.dart | 12 +- .../sort_field_selection_bottom_sheet.dart | 2 +- .../edit_label/view/impl/add_tag_page.dart | 5 +- .../home/view/widget/info_drawer.dart | 3 + .../tags/view/widgets/tags_form_field.dart | 14 +- .../labels/view/widgets/label_form_field.dart | 26 +++- .../labels/view/widgets/label_tab_view.dart | 20 +-- .../bloc/application_settings_cubit.dart | 4 + lib/l10n/intl_cs.arb | 44 +++++- lib/l10n/intl_de.arb | 42 +++++- lib/l10n/intl_en.arb | 38 ++++- lib/main.dart | 28 ++-- 17 files changed, 256 insertions(+), 126 deletions(-) diff --git a/lib/features/document_upload/cubit/document_upload_cubit.dart b/lib/features/document_upload/cubit/document_upload_cubit.dart index e870a21..8ea94a4 100644 --- a/lib/features/document_upload/cubit/document_upload_cubit.dart +++ b/lib/features/document_upload/cubit/document_upload_cubit.dart @@ -17,7 +17,7 @@ class DocumentUploadCubit extends Cubit { final LabelRepository _correspondentRepository; final LabelRepository _documentTypeRepository; - final List _subs = const []; + final List _subs = []; DocumentUploadCubit({ required LocalVault localVault, diff --git a/lib/features/document_upload/cubit/document_upload_state.dart b/lib/features/document_upload/cubit/document_upload_state.dart index 189369e..8a1b78f 100644 --- a/lib/features/document_upload/cubit/document_upload_state.dart +++ b/lib/features/document_upload/cubit/document_upload_state.dart @@ -13,7 +13,11 @@ class DocumentUploadState extends Equatable { }); @override - List get props => []; + List get props => [ + tags, + correspondents, + documentTypes, + ]; DocumentUploadState copyWith({ Map? tags, diff --git a/lib/features/documents/view/pages/documents_page.dart b/lib/features/documents/view/pages/documents_page.dart index 7890922..aa17b9f 100644 --- a/lib/features/documents/view/pages/documents_page.dart +++ b/lib/features/documents/view/pages/documents_page.dart @@ -156,7 +156,7 @@ class _DocumentsPageState extends State { pagingController: _pagingController, hasInternetConnection: connectivityState == ConnectivityState.connected, - onTagSelected: (int tagId) => _addTagToFilter, + onTagSelected: _addTagToFilter, ); break; } diff --git a/lib/features/documents/view/widgets/documents_empty_state.dart b/lib/features/documents/view/widgets/documents_empty_state.dart index a075337..7c87d06 100644 --- a/lib/features/documents/view/widgets/documents_empty_state.dart +++ b/lib/features/documents/view/widgets/documents_empty_state.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:paperless_api/paperless_api.dart'; import 'package:paperless_mobile/core/widgets/empty_state.dart'; import 'package:paperless_mobile/extensions/flutter_extensions.dart'; import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart'; -import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart'; import 'package:paperless_mobile/generated/l10n.dart'; class DocumentsEmptyState extends StatelessWidget { @@ -26,7 +24,7 @@ class DocumentsEmptyState extends StatelessWidget { ? TextButton( onPressed: onReset, child: Text( - S.of(context).documentsFilterPageResetFilterLabel, + S.of(context).documentsEmptyStateResetFilterLabel, ), ).padded() : null, diff --git a/lib/features/documents/view/widgets/search/document_filter_panel.dart b/lib/features/documents/view/widgets/search/document_filter_panel.dart index d2a619a..73ce03c 100644 --- a/lib/features/documents/view/widgets/search/document_filter_panel.dart +++ b/lib/features/documents/view/widgets/search/document_filter_panel.dart @@ -56,59 +56,60 @@ class _DocumentFilterPanelState extends State { topLeft: radius, topRight: radius, ), - child: FormBuilder( - key: _formKey, - child: Column( - children: [ - _buildDraggableResetHeader(), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - S.of(context).documentsFilterPageTitle, - style: Theme.of(context).textTheme.titleLarge, - ), - TextButton( - onPressed: _onApplyFilter, - child: - Text(S.of(context).documentsFilterPageApplyFilterLabel), - ), - ], - ).padded(), - Expanded( - child: ClipRRect( - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(16.0), - topRight: Radius.circular(16.0), - ), - child: ListView( - children: [ - Align( - alignment: Alignment.centerLeft, - child: Text(S.of(context).documentsFilterPageSearchLabel), - ).paddedOnly(left: 8.0), - _buildQueryFormField().padded(), - Align( - alignment: Alignment.centerLeft, - child: - Text(S.of(context).documentsFilterPageAdvancedLabel), - ).padded(), - _buildCreatedDateRangePickerFormField(), - _buildAddedDateRangePickerFormField(), - _buildCorrespondentFormField().padded(), - _buildDocumentTypeFormField().padded(), - _buildStoragePathFormField().padded(), - _buildTagsFormField() - .paddedSymmetrically(horizontal: 8, vertical: 4.0), - // Required in order for the storage path field to be visible when typing - const SizedBox( - height: 150, - ), - ], + child: Scaffold( + resizeToAvoidBottomInset: true, + body: FormBuilder( + key: _formKey, + child: Column( + children: [ + _buildDraggableResetHeader(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + S.of(context).documentFilterTitle, + style: Theme.of(context).textTheme.titleLarge, + ), + TextButton( + onPressed: _onApplyFilter, + child: Text(S.of(context).documentFilterApplyFilterLabel), + ), + ], + ).padded(), + Expanded( + child: ClipRRect( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + child: SingleChildScrollView( + child: Column( + children: [ + Align( + alignment: Alignment.centerLeft, + child: Text(S.of(context).documentFilterSearchLabel), + ).paddedOnly(left: 8.0), + _buildQueryFormField().padded(), + Align( + alignment: Alignment.centerLeft, + child: Text( + S.of(context).documentFilterAdvancedLabel, + ), + ).padded(), + _buildCreatedDateRangePickerFormField(), + _buildAddedDateRangePickerFormField(), + _buildCorrespondentFormField().padded(), + _buildDocumentTypeFormField().padded(), + _buildStoragePathFormField().padded(), + _buildTagsFormField() + .paddedSymmetrically(horizontal: 8, vertical: 4.0), + ], + ).paddedOnly(bottom: 16), + ), ), ), - ), - ], + ], + ), ), ), ); @@ -136,7 +137,7 @@ class _DocumentFilterPanelState extends State { alignment: Alignment.topRight, child: TextButton.icon( icon: const Icon(Icons.refresh), - label: Text(S.of(context).documentsFilterPageResetFilterLabel), + label: Text(S.of(context).documentFilterResetLabel), onPressed: () => _resetFilter(context), ), ), @@ -208,14 +209,13 @@ class _DocumentFilterPanelState extends State { late String label; switch (queryType) { case QueryType.title: - label = S.of(context).documentsFilterPageQueryOptionsTitleLabel; + label = S.of(context).documentFilterQueryOptionsTitleLabel; break; case QueryType.titleAndContent: - label = - S.of(context).documentsFilterPageQueryOptionsTitleAndContentLabel; + label = S.of(context).documentFilterQueryOptionsTitleAndContentLabel; break; case QueryType.extended: - label = S.of(context).documentsFilterPageQueryOptionsExtendedLabel; + label = S.of(context).documentFilterQueryOptionsExtendedLabel; break; } @@ -244,7 +244,7 @@ class _DocumentFilterPanelState extends State { spacer, ActionChip( label: Text( - S.of(context).documentsFilterPageDateRangeLastSevenDaysLabel, + S.of(context).documentFilterDateRangeLastSevenDaysLabel, ), onPressed: () { _formKey.currentState?.fields[formFieldKey]?.didChange( @@ -258,7 +258,7 @@ class _DocumentFilterPanelState extends State { spacer, ActionChip( label: Text( - S.of(context).documentsFilterPageDateRangeLastMonthLabel, + S.of(context).documentFilterDateRangeLastMonthLabel, ), onPressed: () { final now = DateTime.now(); @@ -276,7 +276,7 @@ class _DocumentFilterPanelState extends State { spacer, ActionChip( label: Text( - S.of(context).documentsFilterPageDateRangeLastThreeMonthsLabel, + S.of(context).documentFilterDateRangeLastThreeMonthsLabel, ), onPressed: () { final now = DateTime.now(); @@ -297,7 +297,7 @@ class _DocumentFilterPanelState extends State { spacer, ActionChip( label: Text( - S.of(context).documentsFilterPageDateRangeLastYearLabel, + S.of(context).documentFilterDateRangeLastYearLabel, ), onPressed: () { final now = DateTime.now(); @@ -347,9 +347,8 @@ class _DocumentFilterPanelState extends State { ), format: DateFormat.yMMMd(Localizations.localeOf(context).toString()), fieldStartLabelText: - S.of(context).documentsFilterPageDateRangeFieldStartLabel, - fieldEndLabelText: - S.of(context).documentsFilterPageDateRangeFieldEndLabel, + S.of(context).documentFilterDateRangeFieldStartLabel, + fieldEndLabelText: S.of(context).documentFilterDateRangeFieldEndLabel, firstDate: DateTime.fromMicrosecondsSinceEpoch(0), lastDate: DateTime.now(), name: fkCreatedAt, @@ -395,9 +394,8 @@ class _DocumentFilterPanelState extends State { ), format: DateFormat.yMMMd(), fieldStartLabelText: - S.of(context).documentsFilterPageDateRangeFieldStartLabel, - fieldEndLabelText: - S.of(context).documentsFilterPageDateRangeFieldEndLabel, + S.of(context).documentFilterDateRangeFieldStartLabel, + fieldEndLabelText: S.of(context).documentFilterDateRangeFieldEndLabel, firstDate: DateTime.fromMicrosecondsSinceEpoch(0), lastDate: DateTime.now(), name: fkAddedAt, diff --git a/lib/features/documents/view/widgets/search/query_type_form_field.dart b/lib/features/documents/view/widgets/search/query_type_form_field.dart index d32123f..47c34fe 100644 --- a/lib/features/documents/view/widgets/search/query_type_form_field.dart +++ b/lib/features/documents/view/widgets/search/query_type_form_field.dart @@ -20,23 +20,21 @@ class QueryTypeFormField extends StatelessWidget { itemBuilder: (context) => [ PopupMenuItem( child: ListTile( - title: Text(S - .of(context) - .documentsFilterPageQueryOptionsTitleAndContentLabel), + title: Text( + S.of(context).documentFilterQueryOptionsTitleAndContentLabel), ), value: QueryType.titleAndContent, ), PopupMenuItem( child: ListTile( - title: - Text(S.of(context).documentsFilterPageQueryOptionsTitleLabel), + title: Text(S.of(context).documentFilterQueryOptionsTitleLabel), ), value: QueryType.title, ), PopupMenuItem( child: ListTile( - title: Text( - S.of(context).documentsFilterPageQueryOptionsExtendedLabel), + title: + Text(S.of(context).documentFilterQueryOptionsExtendedLabel), ), value: QueryType.extended, ), diff --git a/lib/features/documents/view/widgets/search/sort_field_selection_bottom_sheet.dart b/lib/features/documents/view/widgets/search/sort_field_selection_bottom_sheet.dart index c64055e..ac8f780 100644 --- a/lib/features/documents/view/widgets/search/sort_field_selection_bottom_sheet.dart +++ b/lib/features/documents/view/widgets/search/sort_field_selection_bottom_sheet.dart @@ -51,7 +51,7 @@ class _SortFieldSelectionBottomSheetState textAlign: TextAlign.start, ), TextButton( - child: Text(S.of(context).documentsFilterPageApplyFilterLabel), + child: Text(S.of(context).documentFilterApplyFilterLabel), onPressed: () { widget.onSubmit( _currentSortField, diff --git a/lib/features/edit_label/view/impl/add_tag_page.dart b/lib/features/edit_label/view/impl/add_tag_page.dart index bd26dc4..a3d9274 100644 --- a/lib/features/edit_label/view/impl/add_tag_page.dart +++ b/lib/features/edit_label/view/impl/add_tag_page.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart'; @@ -30,7 +32,8 @@ class AddTagPage extends StatelessWidget { label: Text(S.of(context).tagColorPropertyLabel), ), colorPickerType: ColorPickerType.materialPicker, - initialValue: null, + initialValue: Color((Random().nextDouble() * 0xFFFFFF).toInt()) + .withOpacity(1.0), ), FormBuilderCheckbox( name: Tag.isInboxTagKey, diff --git a/lib/features/home/view/widget/info_drawer.dart b/lib/features/home/view/widget/info_drawer.dart index f8ae721..ae1cbbc 100644 --- a/lib/features/home/view/widget/info_drawer.dart +++ b/lib/features/home/view/widget/info_drawer.dart @@ -6,6 +6,7 @@ import 'package:paperless_mobile/core/bloc/paperless_server_information_state.da import 'package:paperless_mobile/core/repository/label_repository.dart'; import 'package:paperless_mobile/core/repository/provider/label_repositories_provider.dart'; import 'package:paperless_mobile/core/repository/saved_view_repository.dart'; +import 'package:paperless_mobile/core/store/local_vault.dart'; import 'package:paperless_mobile/di_initializer.dart'; import 'package:paperless_mobile/extensions/flutter_extensions.dart'; import 'package:paperless_mobile/features/inbox/bloc/inbox_cubit.dart'; @@ -185,6 +186,8 @@ class InfoDrawer extends StatelessWidget { onTap: () { try { BlocProvider.of(context).logout(); + getIt().clear(); + BlocProvider.of(context).clear(); RepositoryProvider.of>(context).clear(); RepositoryProvider.of>(context) .clear(); diff --git a/lib/features/labels/tags/view/widgets/tags_form_field.dart b/lib/features/labels/tags/view/widgets/tags_form_field.dart index a2d8bcf..c16cf67 100644 --- a/lib/features/labels/tags/view/widgets/tags_form_field.dart +++ b/lib/features/labels/tags/view/widgets/tags_form_field.dart @@ -54,8 +54,9 @@ class _TagFormFieldState extends State { .isEmpty || _textEditingController.text.isEmpty; }); - setState(() => - _showClearSuffixIcon = _textEditingController.text.isNotEmpty); + setState( + () => _showClearSuffixIcon = _textEditingController.text.isNotEmpty, + ); }); } @@ -86,6 +87,15 @@ class _TagFormFieldState extends State { ), controller: _textEditingController, ), + suggestionsBoxDecoration: SuggestionsBoxDecoration( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + side: BorderSide( + color: Theme.of(context).colorScheme.primary, + width: 2.0, + ), + ), + ), suggestionsCallback: (query) { final suggestions = widget.selectableOptions.entries .where( diff --git a/lib/features/labels/view/widgets/label_form_field.dart b/lib/features/labels/view/widgets/label_form_field.dart index 76d5273..0e62bd5 100644 --- a/lib/features/labels/view/widgets/label_form_field.dart +++ b/lib/features/labels/view/widgets/label_form_field.dart @@ -1,10 +1,9 @@ -import 'dart:developer'; - import 'package:flutter/material.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:form_builder_extra_fields/form_builder_extra_fields.dart'; import 'package:paperless_api/paperless_api.dart'; import 'package:paperless_mobile/generated/l10n.dart'; -import 'package:form_builder_extra_fields/form_builder_extra_fields.dart'; /// /// Form field allowing to select labels (i.e. correspondent, documentType) @@ -83,7 +82,7 @@ class _LabelFormFieldState return FormBuilderTypeAhead( enabled: isEnabled, noItemsFoundBuilder: (context) => Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), + padding: const EdgeInsets.symmetric(vertical: 8), child: Text( S.of(context).labelFormFieldNoItemsFoundText, textAlign: TextAlign.center, @@ -93,9 +92,24 @@ class _LabelFormFieldState ), initialValue: widget.initialValue ?? widget.queryParameterIdBuilder(null), name: widget.name, + suggestionsBoxDecoration: SuggestionsBoxDecoration( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + side: BorderSide( + color: Theme.of(context).colorScheme.primary, + width: 2.0, + ), + ), + ), itemBuilder: (context, suggestion) => ListTile( - title: Text(widget.state[suggestion.id]?.name ?? - S.of(context).labelNotAssignedText), + title: Text( + widget.state[suggestion.id]?.name ?? + S.of(context).labelNotAssignedText, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + dense: true, + style: ListTileStyle.list, ), suggestionsCallback: (pattern) { final List suggestions = widget.state.entries diff --git a/lib/features/labels/view/widgets/label_tab_view.dart b/lib/features/labels/view/widgets/label_tab_view.dart index 1212a02..a63d233 100644 --- a/lib/features/labels/view/widgets/label_tab_view.dart +++ b/lib/features/labels/view/widgets/label_tab_view.dart @@ -66,15 +66,17 @@ class LabelTabView extends StatelessWidget { onRefresh: BlocProvider.of>(context).reload, child: ListView( children: labels - .map((l) => LabelItem( - name: l.name, - content: - contentBuilder?.call(l) ?? Text(l.match ?? '-'), - onOpenEditPage: onEdit, - filterBuilder: filterBuilder, - leading: leadingBuilder?.call(l), - label: l, - )) + .map( + (l) => LabelItem( + name: l.name, + content: + contentBuilder?.call(l) ?? Text(l.match ?? '-'), + onOpenEditPage: onEdit, + filterBuilder: filterBuilder, + leading: leadingBuilder?.call(l), + label: l, + ), + ) .toList(), ), ); diff --git a/lib/features/settings/bloc/application_settings_cubit.dart b/lib/features/settings/bloc/application_settings_cubit.dart index ae96a6b..0b1021b 100644 --- a/lib/features/settings/bloc/application_settings_cubit.dart +++ b/lib/features/settings/bloc/application_settings_cubit.dart @@ -45,4 +45,8 @@ class ApplicationSettingsCubit extends Cubit { await localVault.storeApplicationSettings(settings); emit(settings); } + + void clear() { + emit(ApplicationSettingsState.defaultSettings); + } } diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index 3202d9a..25acae5 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -70,10 +70,40 @@ "@documentDetailsPageTabOverviewLabel": {}, "documentDocumentTypePropertyLabel": "Typ dokumentu", "@documentDocumentTypePropertyLabel": {}, - "documentDownloadSuccessMessage": "Document successfully downloaded.", + "documentDownloadSuccessMessage": "Dokument úspěšně stažen.", "@documentDownloadSuccessMessage": {}, "documentEditPageTitle": "Upravit dokument", "@documentEditPageTitle": {}, + "documentFilterAdvancedLabel": "Rozšířené", + "@documentFilterAdvancedLabel": {}, + "documentFilterApplyFilterLabel": "Použít", + "@documentFilterApplyFilterLabel": {}, + "documentFilterDateRangeFieldEndLabel": "Do", + "@documentFilterDateRangeFieldEndLabel": {}, + "documentFilterDateRangeFieldStartLabel": "Od", + "@documentFilterDateRangeFieldStartLabel": {}, + "documentFilterDateRangeLastMonthLabel": "Minulý měsíc", + "@documentFilterDateRangeLastMonthLabel": {}, + "documentFilterDateRangeLastSevenDaysLabel": "Posledních 7 dní", + "@documentFilterDateRangeLastSevenDaysLabel": {}, + "documentFilterDateRangeLastThreeMonthsLabel": "Poslední 3 měsíce", + "@documentFilterDateRangeLastThreeMonthsLabel": {}, + "documentFilterDateRangeLastYearLabel": "Minulý rok", + "@documentFilterDateRangeLastYearLabel": {}, + "documentFilterQueryOptionsAsnLabel": "ASČ", + "@documentFilterQueryOptionsAsnLabel": {}, + "documentFilterQueryOptionsExtendedLabel": "Prodloužené", + "@documentFilterQueryOptionsExtendedLabel": {}, + "documentFilterQueryOptionsTitleAndContentLabel": "Název & Obsah", + "@documentFilterQueryOptionsTitleAndContentLabel": {}, + "documentFilterQueryOptionsTitleLabel": "Název", + "@documentFilterQueryOptionsTitleLabel": {}, + "documentFilterResetLabel": "Zrušit", + "@documentFilterResetLabel": {}, + "documentFilterSearchLabel": "Hledat", + "@documentFilterSearchLabel": {}, + "documentFilterTitle": "Filtrovat dokumenty", + "@documentFilterTitle": {}, "documentMetaDataChecksumLabel": "MD5 součet originálu", "@documentMetaDataChecksumLabel": {}, "documentMetaDataMediaFilenamePropertyLabel": "Jméno souboru média", @@ -100,6 +130,8 @@ "@documentScannerPageUploadButtonTooltip": {}, "documentScannerPageUploadFromThisDeviceButtonLabel": "Nahrát jeden dokument z tohoto zařízení", "@documentScannerPageUploadFromThisDeviceButtonLabel": {}, + "documentsEmptyStateResetFilterLabel": "Zrušit", + "@documentsEmptyStateResetFilterLabel": {}, "documentsFilterPageAdvancedLabel": "Rozšířené", "@documentsFilterPageAdvancedLabel": {}, "documentsFilterPageApplyFilterLabel": "Použít", @@ -124,8 +156,6 @@ "@documentsFilterPageQueryOptionsTitleAndContentLabel": {}, "documentsFilterPageQueryOptionsTitleLabel": "Název", "@documentsFilterPageQueryOptionsTitleLabel": {}, - "documentsFilterPageResetFilterLabel": "Zrušit", - "@documentsFilterPageResetFilterLabel": {}, "documentsFilterPageSearchLabel": "Hledat", "@documentsFilterPageSearchLabel": {}, "documentsFilterPageTitle": "Filtrovat dokumenty", @@ -216,7 +246,7 @@ "@errorMessageInvalidClientCertificateConfiguration": {}, "errorMessageLoadSavedViewsError": "Nezdařilo se načíst uložené náhledy.", "@errorMessageLoadSavedViewsError": {}, - "errorMessageMissingClientCertificate": "Byl očekáván certifikát klienta, ale nebyl zaslán. Dodejte prosím platný certifikát klienta.", + "errorMessageMissingClientCertificate": "Byl očekáván certifikát klienta, který ale nebyl zaslán. Dodejte prosím platný certifikát klienta.", "@errorMessageMissingClientCertificate": {}, "errorMessageNotAuthenticated": "Uživatel není přihlášen.", "@errorMessageNotAuthenticated": {}, @@ -272,9 +302,9 @@ "@inboxPageMarkAllAsSeenLabel": {}, "inboxPageMarkAsSeenText": "Označit jako shlédnuté", "@inboxPageMarkAsSeenText": {}, - "inboxPageNoNewDocumentsRefreshLabel": "Refresh", + "inboxPageNoNewDocumentsRefreshLabel": "Obnovit", "@inboxPageNoNewDocumentsRefreshLabel": {}, - "inboxPageNoNewDocumentsText": "You do not have unseen documents.", + "inboxPageNoNewDocumentsText": "Nemáte neshlédnuté dokumenty.", "@inboxPageNoNewDocumentsText": {}, "inboxPageTodayText": "Dnes", "@inboxPageTodayText": {}, @@ -314,7 +344,7 @@ "@labelsPageDocumentTypesTitleText": {}, "labelsPageStoragePathEmptyStateAddNewLabel": "Vytvořit novou cestu k úložišti", "@labelsPageStoragePathEmptyStateAddNewLabel": {}, - "labelsPageStoragePathEmptyStateDescriptionText": "Zdá se že zatím nebyla vytvořena žádné cesty k úložišti.", + "labelsPageStoragePathEmptyStateDescriptionText": "Zdá se že zatím nebyly vytvořeny žádné cesty k úložištím.", "@labelsPageStoragePathEmptyStateDescriptionText": {}, "labelsPageStoragePathTitleText": "Cesty k úložišti", "@labelsPageStoragePathTitleText": {}, diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 2b11d27..59f6c6d 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -74,6 +74,36 @@ "@documentDownloadSuccessMessage": {}, "documentEditPageTitle": "Dokument Bearbeiten", "@documentEditPageTitle": {}, + "documentFilterAdvancedLabel": "Erweitert", + "@documentFilterAdvancedLabel": {}, + "documentFilterApplyFilterLabel": "Anwenden", + "@documentFilterApplyFilterLabel": {}, + "documentFilterDateRangeFieldEndLabel": "Bis", + "@documentFilterDateRangeFieldEndLabel": {}, + "documentFilterDateRangeFieldStartLabel": "Von", + "@documentFilterDateRangeFieldStartLabel": {}, + "documentFilterDateRangeLastMonthLabel": "Letzter Monat", + "@documentFilterDateRangeLastMonthLabel": {}, + "documentFilterDateRangeLastSevenDaysLabel": "Letzte 7 Tage", + "@documentFilterDateRangeLastSevenDaysLabel": {}, + "documentFilterDateRangeLastThreeMonthsLabel": "Letzte 3 Monate", + "@documentFilterDateRangeLastThreeMonthsLabel": {}, + "documentFilterDateRangeLastYearLabel": "Letztes Jahr", + "@documentFilterDateRangeLastYearLabel": {}, + "documentFilterQueryOptionsAsnLabel": "ASN", + "@documentFilterQueryOptionsAsnLabel": {}, + "documentFilterQueryOptionsExtendedLabel": "Erweitert", + "@documentFilterQueryOptionsExtendedLabel": {}, + "documentFilterQueryOptionsTitleAndContentLabel": "Titel & Inhalt", + "@documentFilterQueryOptionsTitleAndContentLabel": {}, + "documentFilterQueryOptionsTitleLabel": "Titel", + "@documentFilterQueryOptionsTitleLabel": {}, + "documentFilterResetLabel": "Zurücksetzen", + "@documentFilterResetLabel": {}, + "documentFilterSearchLabel": "Suche", + "@documentFilterSearchLabel": {}, + "documentFilterTitle": "Dokumente filtern", + "@documentFilterTitle": {}, "documentMetaDataChecksumLabel": "MD5-Prüfsumme Original", "@documentMetaDataChecksumLabel": {}, "documentMetaDataMediaFilenamePropertyLabel": "Media-Dateiname", @@ -100,6 +130,8 @@ "@documentScannerPageUploadButtonTooltip": {}, "documentScannerPageUploadFromThisDeviceButtonLabel": "Lade ein Dokument von diesem Gerät hoch", "@documentScannerPageUploadFromThisDeviceButtonLabel": {}, + "documentsEmptyStateResetFilterLabel": "Filter zurücksetzen", + "@documentsEmptyStateResetFilterLabel": {}, "documentsFilterPageAdvancedLabel": "Erweitert", "@documentsFilterPageAdvancedLabel": {}, "documentsFilterPageApplyFilterLabel": "Anwenden", @@ -124,11 +156,9 @@ "@documentsFilterPageQueryOptionsTitleAndContentLabel": {}, "documentsFilterPageQueryOptionsTitleLabel": "Titel", "@documentsFilterPageQueryOptionsTitleLabel": {}, - "documentsFilterPageResetFilterLabel": "Zurücksetzen", - "@documentsFilterPageResetFilterLabel": {}, "documentsFilterPageSearchLabel": "Suche", "@documentsFilterPageSearchLabel": {}, - "documentsFilterPageTitle": "Dokumente Filtern", + "documentsFilterPageTitle": "Dokumente filtern", "@documentsFilterPageTitle": {}, "documentsPageBulkDeleteSuccessfulText": "Das massenhafte Löschen der Dokumente war erfolgreich.", "@documentsPageBulkDeleteSuccessfulText": {}, @@ -256,7 +286,7 @@ "@genericActionSaveLabel": {}, "genericActionSelectText": "Auswählen", "@genericActionSelectText": {}, - "genericActionUpdateLabel": "Aktualisieren", + "genericActionUpdateLabel": "Änderungen speichern", "@genericActionUpdateLabel": {}, "genericActionUploadLabel": "Hochladen", "@genericActionUploadLabel": {}, @@ -266,9 +296,9 @@ "@inboxPageDocumentRemovedMessageText": {}, "inboxPageMarkAllAsSeenConfirmationDialogText": "Bist Du sicher, dass Du alle Dokumente als gesehen markieren möchtest? Dadurch wird eine Massenbearbeitung durchgeführt, bei der alle Posteingangs-Tags von den Dokumenten entfernt werden.\\nDiese Aktion kann nicht rückgängig gemacht werden! Möchtest Du trotzdem fortfahren?", "@inboxPageMarkAllAsSeenConfirmationDialogText": {}, - "inboxPageMarkAllAsSeenConfirmationDialogTitleText": "Alle als gelesen markieren?", + "inboxPageMarkAllAsSeenConfirmationDialogTitleText": "Alle als gesehen markieren?", "@inboxPageMarkAllAsSeenConfirmationDialogTitleText": {}, - "inboxPageMarkAllAsSeenLabel": "Alle als gelesen markieren", + "inboxPageMarkAllAsSeenLabel": "Alle gesehen", "@inboxPageMarkAllAsSeenLabel": {}, "inboxPageMarkAsSeenText": "Als gelesen markieren", "@inboxPageMarkAsSeenText": {}, diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 12178ef..1a6b1f5 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -74,6 +74,36 @@ "@documentDownloadSuccessMessage": {}, "documentEditPageTitle": "Edit Document", "@documentEditPageTitle": {}, + "documentFilterAdvancedLabel": "Advanced", + "@documentFilterAdvancedLabel": {}, + "documentFilterApplyFilterLabel": "Apply", + "@documentFilterApplyFilterLabel": {}, + "documentFilterDateRangeFieldEndLabel": "To", + "@documentFilterDateRangeFieldEndLabel": {}, + "documentFilterDateRangeFieldStartLabel": "From", + "@documentFilterDateRangeFieldStartLabel": {}, + "documentFilterDateRangeLastMonthLabel": "Last Month", + "@documentFilterDateRangeLastMonthLabel": {}, + "documentFilterDateRangeLastSevenDaysLabel": "Last 7 Days", + "@documentFilterDateRangeLastSevenDaysLabel": {}, + "documentFilterDateRangeLastThreeMonthsLabel": "Last 3 Months", + "@documentFilterDateRangeLastThreeMonthsLabel": {}, + "documentFilterDateRangeLastYearLabel": "Last Year", + "@documentFilterDateRangeLastYearLabel": {}, + "documentFilterQueryOptionsAsnLabel": "ASN", + "@documentFilterQueryOptionsAsnLabel": {}, + "documentFilterQueryOptionsExtendedLabel": "Extended", + "@documentFilterQueryOptionsExtendedLabel": {}, + "documentFilterQueryOptionsTitleAndContentLabel": "Title & Content", + "@documentFilterQueryOptionsTitleAndContentLabel": {}, + "documentFilterQueryOptionsTitleLabel": "Title", + "@documentFilterQueryOptionsTitleLabel": {}, + "documentFilterResetLabel": "Reset", + "@documentFilterResetLabel": {}, + "documentFilterSearchLabel": "Search", + "@documentFilterSearchLabel": {}, + "documentFilterTitle": "Filter Documents", + "@documentFilterTitle": {}, "documentMetaDataChecksumLabel": "Original MD5-Checksum", "@documentMetaDataChecksumLabel": {}, "documentMetaDataMediaFilenamePropertyLabel": "Media Filename", @@ -100,6 +130,8 @@ "@documentScannerPageUploadButtonTooltip": {}, "documentScannerPageUploadFromThisDeviceButtonLabel": "Upload a document from this device", "@documentScannerPageUploadFromThisDeviceButtonLabel": {}, + "documentsEmptyStateResetFilterLabel": "Reset filter", + "@documentsEmptyStateResetFilterLabel": {}, "documentsFilterPageAdvancedLabel": "Advanced", "@documentsFilterPageAdvancedLabel": {}, "documentsFilterPageApplyFilterLabel": "Apply", @@ -124,8 +156,6 @@ "@documentsFilterPageQueryOptionsTitleAndContentLabel": {}, "documentsFilterPageQueryOptionsTitleLabel": "Title", "@documentsFilterPageQueryOptionsTitleLabel": {}, - "documentsFilterPageResetFilterLabel": "Reset", - "@documentsFilterPageResetFilterLabel": {}, "documentsFilterPageSearchLabel": "Search", "@documentsFilterPageSearchLabel": {}, "documentsFilterPageTitle": "Filter Documents", @@ -256,7 +286,7 @@ "@genericActionSaveLabel": {}, "genericActionSelectText": "Select", "@genericActionSelectText": {}, - "genericActionUpdateLabel": "Update", + "genericActionUpdateLabel": "Save changes", "@genericActionUpdateLabel": {}, "genericActionUploadLabel": "Upload", "@genericActionUploadLabel": {}, @@ -268,7 +298,7 @@ "@inboxPageMarkAllAsSeenConfirmationDialogText": {}, "inboxPageMarkAllAsSeenConfirmationDialogTitleText": "Mark all as seen?", "@inboxPageMarkAllAsSeenConfirmationDialogTitleText": {}, - "inboxPageMarkAllAsSeenLabel": "Mark all as seen", + "inboxPageMarkAllAsSeenLabel": "All seen", "@inboxPageMarkAllAsSeenLabel": {}, "inboxPageMarkAsSeenText": "Mark as seen", "@inboxPageMarkAsSeenText": {}, diff --git a/lib/main.dart b/lib/main.dart index bbd6ccc..c273089 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -114,12 +114,15 @@ class _PaperlessMobileEntrypointState extends State { theme: ThemeData( brightness: Brightness.light, useMaterial3: true, - colorSchemeSeed: Colors.lightGreen, + colorScheme: + ColorScheme.fromSeed(seedColor: Colors.lightGreen).copyWith(), appBarTheme: const AppBarTheme( scrolledUnderElevation: 0.0, ), - inputDecorationTheme: const InputDecorationTheme( - border: OutlineInputBorder(), + inputDecorationTheme: InputDecorationTheme( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + ), contentPadding: EdgeInsets.symmetric( horizontal: 16.0, vertical: 16.0, @@ -133,16 +136,18 @@ class _PaperlessMobileEntrypointState extends State { brightness: Brightness.dark, useMaterial3: true, colorSchemeSeed: Colors.lightGreen, - //primarySwatch: Colors.green, appBarTheme: const AppBarTheme( scrolledUnderElevation: 0.0, ), - inputDecorationTheme: const InputDecorationTheme( - border: OutlineInputBorder(), - contentPadding: EdgeInsets.symmetric( - horizontal: 16.0, - vertical: 16.0, - )), + inputDecorationTheme: InputDecorationTheme( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + ), + contentPadding: EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 16.0, + ), + ), chipTheme: ChipThemeData( backgroundColor: Colors.green[900], ), @@ -150,7 +155,8 @@ class _PaperlessMobileEntrypointState extends State { themeMode: settings.preferredThemeMode, supportedLocales: S.delegate.supportedLocales, locale: Locale.fromSubtags( - languageCode: settings.preferredLocaleSubtag), + languageCode: settings.preferredLocaleSubtag, + ), localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate,