feat: Add notes

This commit is contained in:
Anton Stubenbord
2023-12-12 23:00:12 +01:00
parent a4fb72fdfc
commit aa05f9432a
20 changed files with 254 additions and 59 deletions

View File

@@ -0,0 +1,37 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
class AddNotePage extends StatefulWidget {
final DocumentModel document;
const AddNotePage({super.key, required this.document});
@override
State<AddNotePage> createState() => _AddNotePageState();
}
class _AddNotePageState extends State<AddNotePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(S.of(context)!.addNote),
),
body: Column(
children: [
TextField(
decoration: InputDecoration(
labelText: S.of(context)!.content,
),
),
ElevatedButton(
onPressed: () {},
child: Text(S.of(context)!.save),
),
],
),
);
}
}

View File

@@ -25,54 +25,51 @@ class DocumentMetaDataWidget extends StatelessWidget {
Widget build(BuildContext context) {
final currentUser = context.watch<LocalUserAccount>().paperlessUser;
return SliverList(
delegate: SliverChildListDelegate(
[
if (currentUser.canEditDocuments)
ArchiveSerialNumberField(
document: document,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
DateFormat.yMMMMd(Localizations.localeOf(context).toString())
.format(document.modified),
context: context,
label: S.of(context)!.modifiedAt,
return SliverList.list(
children: [
if (currentUser.canEditDocuments)
ArchiveSerialNumberField(
document: document,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
DateFormat.yMMMMd(Localizations.localeOf(context).toString())
.format(document.modified),
context: context,
label: S.of(context)!.modifiedAt,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
DateFormat.yMMMMd(Localizations.localeOf(context).toString())
.format(document.added),
context: context,
label: S.of(context)!.addedAt,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
metaData.mediaFilename,
context: context,
label: S.of(context)!.mediaFilename,
).paddedOnly(bottom: itemSpacing),
if (document.originalFileName != null)
DetailsItem.text(
DateFormat.yMMMMd(Localizations.localeOf(context).toString())
.format(document.added),
context: context,
label: S.of(context)!.addedAt,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
metaData.mediaFilename,
context: context,
label: S.of(context)!.mediaFilename,
).paddedOnly(bottom: itemSpacing),
if (document.originalFileName != null)
DetailsItem.text(
document.originalFileName!,
context: context,
label: S.of(context)!.originalMD5Checksum,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
metaData.originalChecksum,
document.originalFileName!,
context: context,
label: S.of(context)!.originalMD5Checksum,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
formatBytes(metaData.originalSize, 2),
context: context,
label: S.of(context)!.originalFileSize,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
metaData.originalMimeType,
context: context,
label: S.of(context)!.originalMIMEType,
).paddedOnly(bottom: itemSpacing),
],
),
DetailsItem.text(
metaData.originalChecksum,
context: context,
label: S.of(context)!.originalMD5Checksum,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
formatBytes(metaData.originalSize, 2),
context: context,
label: S.of(context)!.originalFileSize,
).paddedOnly(bottom: itemSpacing),
DetailsItem.text(
metaData.originalMimeType,
context: context,
label: S.of(context)!.originalMIMEType,
).paddedOnly(bottom: itemSpacing),
],
);
}
}

View File

@@ -0,0 +1,38 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:paperless_api/paperless_api.dart';
class DocumentNotesWidget extends StatelessWidget {
final DocumentModel document;
const DocumentNotesWidget({super.key, required this.document});
@override
Widget build(BuildContext context) {
return SliverList.builder(
itemBuilder: (context, index) {
final note = document.notes.elementAt(index);
return ListTile(
title: Text(note.note),
subtitle: Text(
DateFormat.yMMMd(Localizations.localeOf(context).toString())
.format(note.created)),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
onPressed: () {},
icon: Icon(Icons.edit),
),
IconButton(
onPressed: () {},
icon: Icon(Icons.delete),
),
],
),
);
},
itemCount: document.notes.length,
);
}
}