Added open in system viewer, updated translations.

This commit is contained in:
Anton Stubenbord
2023-01-21 01:20:33 +01:00
parent 2e0730ce2f
commit 78aefb05eb
18 changed files with 201 additions and 89 deletions

View File

@@ -1,23 +1,35 @@
import 'package:flutter/material.dart';
///
/// Workaround class to change background color of chips without losing ripple effect.
/// Currently broken in flutter m3.
/// Applies only to light theme if [applyToDarkTheme] is not explicitly set to true.
///
class ColoredChipWrapper extends StatelessWidget {
////
final Color? backgroundColor;
final Widget child;
final bool applyToDarkTheme;
const ColoredChipWrapper({
super.key,
this.backgroundColor,
required this.child,
this.applyToDarkTheme = false,
});
@override
Widget build(BuildContext context) {
Color color = backgroundColor ?? Colors.lightGreen[50]!;
final brightness = Theme.of(context).brightness;
if ((brightness == Brightness.dark && applyToDarkTheme) ||
brightness == Brightness.light) {
return Theme(
data: Theme.of(context).copyWith(
canvasColor: color,
canvasColor: backgroundColor ?? Colors.lightGreen[50]!,
),
child: child,
);
}
return child;
}
}

View File

@@ -7,6 +7,7 @@ import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/service/file_service.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:open_filex/open_filex.dart';
part 'document_details_state.dart';
@@ -47,21 +48,14 @@ class DocumentDetailsCubit extends Cubit<DocumentDetailsState> {
}
}
Future<bool> openDocumentInSystemViewer() async {
Future<ResultType> openDocumentInSystemViewer() async {
final downloadDir = await FileService.temporaryDirectory;
final metaData = await _api.getMetaData(state.document);
final docBytes = await _api.download(state.document);
File f = File('${downloadDir.path}/${metaData.mediaFilename}');
f.writeAsBytes(docBytes);
final url = Uri(
scheme: "file",
path: f.path,
);
log(url.toString());
if (await canLaunchUrl(url)) {
return launchUrl(url);
}
return false;
return OpenFilex.open(f.path, type: "application/pdf")
.then((value) => value.type);
}
void replaceDocument(DocumentModel document) {

View File

@@ -5,12 +5,12 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:intl/intl.dart';
import 'package:open_filex/open_filex.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/bloc/connectivity_cubit.dart';
import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart';
import 'package:paperless_mobile/core/service/file_service.dart';
import 'package:paperless_mobile/core/translation/error_code_localization_mapper.dart';
import 'package:paperless_mobile/core/widgets/highlighted_text.dart';
import 'package:paperless_mobile/core/widgets/hint_card.dart';
import 'package:paperless_mobile/core/widgets/offline_widget.dart';
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/features/document_details/bloc/document_details_cubit.dart';
@@ -20,8 +20,6 @@ import 'package:paperless_mobile/features/documents/view/pages/document_view.dar
import 'package:paperless_mobile/features/documents/view/widgets/delete_document_confirmation_dialog.dart';
import 'package:paperless_mobile/features/documents/view/widgets/document_preview.dart';
import 'package:paperless_mobile/features/edit_document/cubit/edit_document_cubit.dart';
import 'package:paperless_mobile/features/labels/correspondent/view/widgets/correspondent_widget.dart';
import 'package:paperless_mobile/features/labels/document_type/view/widgets/document_type_widget.dart';
import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_widget.dart';
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart';
import 'package:paperless_mobile/features/labels/view/widgets/label_text.dart';
@@ -75,10 +73,16 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
return b.Badge(
position: b.BadgePosition.topEnd(top: -12, end: -6),
showBadge: _filteredSuggestions.hasSuggestions,
child: Tooltip(
message:
S.of(context).documentDetailsPageEditTooltip,
preferBelow: false,
verticalOffset: 40,
child: FloatingActionButton(
child: const Icon(Icons.edit),
onPressed: () => _onEdit(state.document),
),
),
badgeContent: Text(
'${_filteredSuggestions.suggestionsCount}',
style: const TextStyle(
@@ -86,7 +90,6 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
),
),
badgeColor: Colors.red,
//TODO: Wait for stable version of m3, then use AlignmentDirectional.topEnd
);
},
);
@@ -104,33 +107,40 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
mainAxisAlignment: MainAxisAlignment.start,
children: [
IconButton(
tooltip:
S.of(context).documentDetailsPageDeleteTooltip,
icon: const Icon(Icons.delete),
onPressed: widget.allowEdit && isConnected
? () => _onDelete(state.document)
: null,
).paddedSymmetrically(horizontal: 4),
Tooltip(
message: "Download",
message:
S.of(context).documentDetailsPageDownloadTooltip,
child: DocumentDownloadButton(
document: state.document,
enabled: isConnected,
),
),
IconButton(
tooltip:
S.of(context).documentDetailsPagePreviewTooltip,
icon: const Icon(Icons.visibility),
onPressed: isConnected
? () => _onOpen(state.document)
: null,
).paddedOnly(right: 4.0),
// IconButton(
// icon: const Icon(Icons.open_in_new),
// onPressed: isConnected
// ? context
// .read<DocumentDetailsCubit>()
// .openDocumentInSystemViewer
// : null,
// ).paddedOnly(right: 4.0),
IconButton(
tooltip: S
.of(context)
.documentDetailsPageOpenInSystemViewerTooltip,
icon: const Icon(Icons.open_in_new),
onPressed:
isConnected ? _onOpenFileInSystemViewer : null,
).paddedOnly(right: 4.0),
IconButton(
tooltip:
S.of(context).documentDetailsPageShareTooltip,
icon: const Icon(Icons.share),
onPressed: isConnected
? () => _onShare(state.document)
@@ -270,6 +280,23 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
}
}
void _onOpenFileInSystemViewer() async {
final status =
await context.read<DocumentDetailsCubit>().openDocumentInSystemViewer();
if (status == ResultType.done) return;
if (status == ResultType.noAppToOpen) {
showGenericError(context,
S.of(context).documentDetailsPageNoPdfViewerFoundErrorMessage);
}
if (status == ResultType.fileNotFound) {
showGenericError(context, translateError(context, ErrorCode.unknown));
}
if (status == ResultType.permissionDenied) {
showGenericError(context,
S.of(context).documentDetailsPageOpenPdfPermissionDeniedErrorMessage);
}
}
Widget _buildDocumentMetaDataView(DocumentModel document) {
return BlocBuilder<ConnectivityCubit, ConnectivityState>(
builder: (context, state) {

View File

@@ -84,8 +84,8 @@ class AdaptiveDocumentsView extends StatelessWidget {
Widget _buildGridView() {
return SliverGrid.builder(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 178,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisSpacing: 4,
crossAxisSpacing: 4,
childAspectRatio: 1 / 2,

View File

@@ -102,7 +102,7 @@ class _HomePageState extends State<HomePage> {
final filename = extractFilenameFromPath(mediaFile.path);
final extension = p.extension(mediaFile.path);
try {
if (File(mediaFile.path).existsSync()) {
if (await File(mediaFile.path).exists()) {
final bytes = File(mediaFile.path).readAsBytesSync();
final success = await Navigator.push<bool>(
context,

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/bloc/paperless_server_information_cubit.dart';
@@ -280,22 +281,23 @@ class _AppDrawerState extends State<AppDrawer> {
);
}
void _onLogout() {
void _onLogout() async {
try {
context.read<AuthenticationCubit>().logout();
context.read<LocalVault>().clear();
context.read<ApplicationSettingsCubit>().clear();
context.read<LabelRepository<Tag, TagRepositoryState>>().clear();
context
await context.read<AuthenticationCubit>().logout();
await context.read<LocalVault>().clear();
await context.read<ApplicationSettingsCubit>().clear();
await context.read<LabelRepository<Tag, TagRepositoryState>>().clear();
await context
.read<LabelRepository<Correspondent, CorrespondentRepositoryState>>()
.clear();
context
await context
.read<LabelRepository<DocumentType, DocumentTypeRepositoryState>>()
.clear();
context
await context
.read<LabelRepository<StoragePath, StoragePathRepositoryState>>()
.clear();
context.read<SavedViewRepository>().clear();
await context.read<SavedViewRepository>().clear();
await HydratedBloc.storage.clear();
} on PaperlessServerException catch (error, stackTrace) {
showErrorMessage(context, error, stackTrace);
}

View File

@@ -15,7 +15,7 @@ class TagWidget extends StatelessWidget {
this.isClickable = true,
required this.onSelected,
this.showShortName = false,
this.dense = false,
this.dense = true,
});
@override

View File

@@ -45,7 +45,7 @@ class TagsWidget extends StatelessWidget {
return Wrap(
runAlignment: WrapAlignment.start,
children: children,
runSpacing: 8,
runSpacing: 4,
spacing: 4,
);
} else {

View File

@@ -82,7 +82,7 @@ class _ScannerPageState extends State<ScannerPage>
),
)
: null,
icon: const Icon(Icons.preview),
icon: const Icon(Icons.visibility),
tooltip: S.of(context).documentScannerPageResetButtonTooltipText,
);
},

View File

@@ -1,4 +1,5 @@
import 'dart:collection';
import 'dart:developer';
import 'package:flutter/widgets.dart';
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
@@ -11,11 +12,14 @@ class ShareIntentQueue extends ChangeNotifier {
static final instance = ShareIntentQueue._();
void add(SharedMediaFile file) {
debugPrint("Adding received file to queue: ${file.path}");
_queue.add(file);
notifyListeners();
}
void addAll(Iterable<SharedMediaFile> files) {
debugPrint(
"Adding received files to queue: ${files.map((e) => e.path).join(",")}");
_queue.addAll(files);
notifyListeners();
}

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Přiřadit",
"@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageLoadFullContentLabel": "",
"documentDetailsPageDeleteTooltip": "",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Načíst celý obsah",
"@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Podobné dokumenty",
"@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "Obsah",
@@ -78,7 +94,7 @@
"@documentDocumentTypePropertyLabel": {},
"documentDownloadSuccessMessage": "Dokument úspěšně stažen.",
"@documentDownloadSuccessMessage": {},
"documentEditPageSuggestionsLabel": "",
"documentEditPageSuggestionsLabel": "Návrhy:",
"@documentEditPageSuggestionsLabel": {},
"documentEditPageTitle": "Upravit dokument",
"@documentEditPageTitle": {},
@@ -158,7 +174,7 @@
"@documentsPageEmptyStateNothingHereText": {},
"documentsPageEmptyStateOopsText": "Ajaj.",
"@documentsPageEmptyStateOopsText": {},
"documentsPageNewDocumentAvailableText": "",
"documentsPageNewDocumentAvailableText": "Dostupný nový dokument!",
"@documentsPageNewDocumentAvailableText": {},
"documentsPageOrderByLabel": "Řadit dle",
"@documentsPageOrderByLabel": {},
@@ -258,7 +274,7 @@
"@errorMessageStoragePathCreateFailed": {},
"errorMessageStoragePathLoadFailed": "Nelze načíst cestu k úložišti.",
"@errorMessageStoragePathLoadFailed": {},
"errorMessageSuggestionsQueryError": "",
"errorMessageSuggestionsQueryError": "Návrhy se nepodařilo načíst.",
"@errorMessageSuggestionsQueryError": {},
"errorMessageTagCreateFailed": "Nelze vytvořit tag, zkuste to znovu.",
"@errorMessageTagCreateFailed": {},
@@ -270,25 +286,25 @@
"@errorMessageUnsupportedFileFormat": {},
"errorReportLabel": "NAHLÁSIT",
"@errorReportLabel": {},
"extendedDateRangeDialogAbsoluteLabel": "",
"extendedDateRangeDialogAbsoluteLabel": "Absolutní",
"@extendedDateRangeDialogAbsoluteLabel": {},
"extendedDateRangeDialogHintText": "",
"extendedDateRangeDialogHintText": "Tip: Kromě konkrétního data lze také specifikovat relativní časovou odchylku k aktuálnímu datu.",
"@extendedDateRangeDialogHintText": {},
"extendedDateRangeDialogRelativeAmountLabel": "",
"extendedDateRangeDialogRelativeAmountLabel": "Počet",
"@extendedDateRangeDialogRelativeAmountLabel": {},
"extendedDateRangeDialogRelativeLabel": "",
"extendedDateRangeDialogRelativeLabel": "Relativní",
"@extendedDateRangeDialogRelativeLabel": {},
"extendedDateRangeDialogRelativeLastLabel": "",
"extendedDateRangeDialogRelativeLastLabel": "Poslední",
"@extendedDateRangeDialogRelativeLastLabel": {},
"extendedDateRangeDialogRelativeTimeUnitLabel": "",
"extendedDateRangeDialogRelativeTimeUnitLabel": "Časové jednotky",
"@extendedDateRangeDialogRelativeTimeUnitLabel": {},
"extendedDateRangeDialogTitle": "",
"extendedDateRangeDialogTitle": "Vybrat časové rozmezí",
"@extendedDateRangeDialogTitle": {},
"extendedDateRangePickerAfterLabel": "",
"extendedDateRangePickerAfterLabel": "Po",
"@extendedDateRangePickerAfterLabel": {},
"extendedDateRangePickerBeforeLabel": "",
"extendedDateRangePickerBeforeLabel": "Před",
"@extendedDateRangePickerBeforeLabel": {},
"extendedDateRangePickerDayText": "{count, plural, other{}}",
"extendedDateRangePickerDayText": "{count, plural, zero{} one{den} few{dny} many{dnů} other{}}",
"@extendedDateRangePickerDayText": {
"placeholders": {
"count": {}
@@ -306,9 +322,9 @@
"count": {}
}
},
"extendedDateRangePickerLastText": "",
"extendedDateRangePickerLastText": "Poslední",
"@extendedDateRangePickerLastText": {},
"extendedDateRangePickerLastWeeksLabel": "{count, plural, other{}}",
"extendedDateRangePickerLastWeeksLabel": "{count, plural, zero{} one{minulý týden} few{poslední {count} týdny} many{posledních {count} týdnů} other{}}",
"@extendedDateRangePickerLastWeeksLabel": {
"placeholders": {
"count": {}
@@ -320,25 +336,25 @@
"count": {}
}
},
"extendedDateRangePickerMonthText": "{count, plural, other{}}",
"extendedDateRangePickerMonthText": "{count, plural, zero{} one{měsíc} few{mesíce} many{měsíců} other{}}",
"@extendedDateRangePickerMonthText": {
"placeholders": {
"count": {}
}
},
"extendedDateRangePickerWeekText": "{count, plural, other{}}",
"extendedDateRangePickerWeekText": "{count, plural, zero{} one{týden} few{týdny} many{týdnů} other{}}",
"@extendedDateRangePickerWeekText": {
"placeholders": {
"count": {}
}
},
"extendedDateRangePickerYearText": "{count, plural, other{}}",
"extendedDateRangePickerYearText": "{count, plural, zero{} one{rok} few{roky} many{let} other{}}",
"@extendedDateRangePickerYearText": {
"placeholders": {
"count": {}
}
},
"genericAcknowledgeLabel": "",
"genericAcknowledgeLabel": "Rozumím!",
"@genericAcknowledgeLabel": {},
"genericActionCancelLabel": "Zrušit",
"@genericActionCancelLabel": {},
@@ -442,7 +458,7 @@
"@loginPageClientCertificateSettingLabel": {},
"loginPageClientCertificateSettingSelectFileText": "Vybrat soubor...",
"@loginPageClientCertificateSettingSelectFileText": {},
"loginPageContinueLabel": "",
"loginPageContinueLabel": "Pokračovat",
"@loginPageContinueLabel": {},
"loginPageIncorrectOrMissingCertificatePassphraseErrorMessageText": "Chybná nebo chybějící heslová fráze certifikátu.",
"@loginPageIncorrectOrMissingCertificatePassphraseErrorMessageText": {},
@@ -452,31 +468,31 @@
"@loginPagePasswordFieldLabel": {},
"loginPagePasswordValidatorMessageText": "Heslo nesmí být prázdné.",
"@loginPagePasswordValidatorMessageText": {},
"loginPageReachabilityConnectionTimeoutText": "",
"loginPageReachabilityConnectionTimeoutText": "Čas spojení vypršel.",
"@loginPageReachabilityConnectionTimeoutText": {},
"loginPageReachabilityInvalidClientCertificateConfigurationText": "",
"loginPageReachabilityInvalidClientCertificateConfigurationText": "Špatné nebo chybějící heslo certifikátu.",
"@loginPageReachabilityInvalidClientCertificateConfigurationText": {},
"loginPageReachabilityMissingClientCertificateText": "",
"@loginPageReachabilityMissingClientCertificateText": {},
"loginPageReachabilityNotReachableText": "",
"@loginPageReachabilityNotReachableText": {},
"loginPageReachabilitySuccessText": "",
"loginPageReachabilitySuccessText": "Připojení úspěšně vytvořeno.",
"@loginPageReachabilitySuccessText": {},
"loginPageReachabilityUnresolvedHostText": "",
"@loginPageReachabilityUnresolvedHostText": {},
"loginPageServerUrlFieldLabel": "'Adresa serveru",
"@loginPageServerUrlFieldLabel": {},
"loginPageServerUrlValidatorMessageInvalidAddressText": "",
"loginPageServerUrlValidatorMessageInvalidAddressText": "Neplatná adresa",
"@loginPageServerUrlValidatorMessageInvalidAddressText": {},
"loginPageServerUrlValidatorMessageMissingSchemeText": "",
"@loginPageServerUrlValidatorMessageMissingSchemeText": {},
"loginPageServerUrlValidatorMessageRequiredText": "Adresa serveru nesmí být prázdná.",
"@loginPageServerUrlValidatorMessageRequiredText": {},
"loginPageSignInButtonLabel": "",
"loginPageSignInButtonLabel": "Přihlásit",
"@loginPageSignInButtonLabel": {},
"loginPageSignInTitle": "",
"loginPageSignInTitle": "Přihlásit",
"@loginPageSignInTitle": {},
"loginPageSignInToPrefixText": "",
"loginPageSignInToPrefixText": "Přihlásit k {serverAddress}",
"@loginPageSignInToPrefixText": {
"placeholders": {
"serverAddress": {}
@@ -490,11 +506,11 @@
"@loginPageUsernameValidatorMessageText": {},
"matchingAlgorithmAllDescription": "",
"@matchingAlgorithmAllDescription": {},
"matchingAlgorithmAllName": "",
"matchingAlgorithmAllName": "Vše",
"@matchingAlgorithmAllName": {},
"matchingAlgorithmAnyDescription": "",
"@matchingAlgorithmAnyDescription": {},
"matchingAlgorithmAnyName": "",
"matchingAlgorithmAnyName": "Jakékoliv slovo",
"@matchingAlgorithmAnyName": {},
"matchingAlgorithmAutoDescription": "",
"@matchingAlgorithmAutoDescription": {},
@@ -518,7 +534,7 @@
"@onboardingDoneButtonLabel": {},
"onboardingNextButtonLabel": "Další",
"@onboardingNextButtonLabel": {},
"receiveSharedFilePermissionDeniedMessage": "",
"receiveSharedFilePermissionDeniedMessage": "Přístup k obdrženému souboru zamítnut. Než budeš sdílet, zkus nejdříve otevřít aplikaci.",
"@receiveSharedFilePermissionDeniedMessage": {},
"referencedDocumentsReadOnlyHintText": "Tento náhled nelze upravovat! Nelze upravovat nebo odstraňovat dokumenty. Bude načteno maximálně 100 odkazovaných dokumentů.",
"@referencedDocumentsReadOnlyHintText": {},
@@ -584,10 +600,10 @@
"@uploadPageAutomaticallInferredFieldsHintText": {},
"verifyIdentityPageDescriptionText": "",
"@verifyIdentityPageDescriptionText": {},
"verifyIdentityPageLogoutButtonLabel": "",
"verifyIdentityPageLogoutButtonLabel": "Odpojit",
"@verifyIdentityPageLogoutButtonLabel": {},
"verifyIdentityPageTitle": "",
"verifyIdentityPageTitle": "Ověř svou identitu",
"@verifyIdentityPageTitle": {},
"verifyIdentityPageVerifyIdentityButtonLabel": "",
"verifyIdentityPageVerifyIdentityButtonLabel": "Ověřit identitu",
"@verifyIdentityPageVerifyIdentityButtonLabel": {}
}

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Zuweisen",
"@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageDeleteTooltip": "Löschen",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "Herunterladen",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "Bearbeiten",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Lade gesamten Inhalt",
"@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "Es wurde keine App zum Anzeigen von PDF Dateien gefunden!",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "In System-Viewer öffnen",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "Datei konnte nicht geöffnet werden: Zugriff verweigert.",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "Vorschau",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "Teilen",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Similar Documents",
"@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "Inhalt",

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Assign",
"@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageDeleteTooltip": "Delete",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "Download",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "Edit",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Load full content",
"@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "No app to display PDF files found!",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "Open in system viewer",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "Could not open file: Permission denied.",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "Preview",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "Share",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Similar Documents",
"@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "Content",
@@ -288,7 +304,7 @@
"@extendedDateRangePickerAfterLabel": {},
"extendedDateRangePickerBeforeLabel": "Before",
"@extendedDateRangePickerBeforeLabel": {},
"extendedDateRangePickerDayText": "{count, plural, zero{} one{day} other{days}}",
"extendedDateRangePickerDayText": "{count, plural, zero{days} one{day} other{days}}",
"@extendedDateRangePickerDayText": {
"placeholders": {
"count": {}

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Ata",
"@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageDeleteTooltip": "",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Tüm içeriği yükle",
"@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Benzer Belgeler",
"@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "İçerik",

View File

@@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:encrypted_shared_preferences/encrypted_shared_preferences.dart';
import 'package:flutter/material.dart';
@@ -132,6 +134,7 @@ void main() async {
//Update language header in interceptor on language change.
appSettingsCubit.stream.listen((event) => languageHeaderInterceptor
.preferredLocaleSubtag = event.preferredLocaleSubtag);
runApp(
MultiProvider(
providers: [
@@ -261,9 +264,6 @@ class _PaperlessMobileEntrypointState extends State<PaperlessMobileEntrypoint> {
),
),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
chipTheme: ChipThemeData(
backgroundColor: Colors.lightGreen[50],
),
listTileTheme: const ListTileThemeData(
tileColor: Colors.transparent,
),

View File

@@ -981,6 +981,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.2"
open_filex:
dependency: "direct main"
description:
name: open_filex
sha256: "854aefd72dfd74219dc8c8d1767c34ec1eae64b8399a5be317bddb1ec2108915"
url: "https://pub.dev"
source: hosted
version: "4.3.2"
package_config:
dependency: transitive
description:

View File

@@ -86,6 +86,7 @@ dependencies:
flutter_local_notifications: ^13.0.0
flutter_staggered_grid_view: ^0.6.2
responsive_builder: ^0.4.3
open_filex: ^4.3.2
dev_dependencies:
integration_test: