diff --git a/lib/l10n b/lib/l10n index f4f7b95c..94daf512 160000 --- a/lib/l10n +++ b/lib/l10n @@ -1 +1 @@ -Subproject commit f4f7b95c28f82bfd4e398ec5bb5e35823102323c +Subproject commit 94daf51226f555c1c3a7ad4893931727d0369dda diff --git a/lib/widget/part_attachments_widget.dart b/lib/widget/part_attachments_widget.dart new file mode 100644 index 00000000..2f90c6ca --- /dev/null +++ b/lib/widget/part_attachments_widget.dart @@ -0,0 +1,75 @@ + + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:inventree/inventree/part.dart'; +import 'package:inventree/widget/refreshable_state.dart'; + +import '../api.dart'; +import '../l10.dart'; + +class PartAttachmentsWidget extends StatefulWidget { + + PartAttachmentsWidget(this.part, {Key? key}) : super(key: key); + + final InvenTreePart part; + + @override + _PartAttachmentDisplayState createState() => _PartAttachmentDisplayState(part); +} + + +class _PartAttachmentDisplayState extends RefreshableState { + + _PartAttachmentDisplayState(this.part); + + final InvenTreePart part; + + @override + String getAppBarTitle(BuildContext context) => L10().attachments; + + @override + List getAppBarActions(BuildContext context) { + + List actions = []; + + if (false && InvenTreeAPI().checkPermission('part', 'change')) { + actions.add( + IconButton( + icon: FaIcon(FontAwesomeIcons.plus), + onPressed: null, + ) + ); + } + + return actions; + } + + @override + Future request() async { + // TODO - Request part attachments from the server + } + + @override + Widget getBody(BuildContext context) { + return Center( + child: ListView( + children: ListTile.divideTiles( + context: context, + tiles: attachmentTiles(context) + ).toList(), + ) + ); + } + + + List attachmentTiles(BuildContext context) { + + List tiles = []; + + return tiles; + + } + +} \ No newline at end of file diff --git a/lib/widget/part_detail.dart b/lib/widget/part_detail.dart index ed2759f5..4748c793 100644 --- a/lib/widget/part_detail.dart +++ b/lib/widget/part_detail.dart @@ -6,6 +6,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:inventree/app_colors.dart'; import 'package:inventree/l10.dart'; +import 'package:inventree/widget/part_attachments_widget.dart'; import 'package:inventree/widget/part_notes.dart'; import 'package:inventree/widget/progress.dart'; import 'package:inventree/inventree/part.dart'; @@ -31,6 +32,10 @@ class PartDetailWidget extends StatefulWidget { class _PartDisplayState extends RefreshableState { + InvenTreePart part; + + _PartDisplayState(this.part); + @override String getAppBarTitle(BuildContext context) => L10().partDetails; @@ -63,16 +68,10 @@ class _PartDisplayState extends RefreshableState { return actions; } - _PartDisplayState(this.part) { - // TODO - } - Future _openInvenTreePage() async { part.goToInvenTreePage(); } - InvenTreePart part; - @override Future onBuild(BuildContext context) async { refresh(); @@ -351,6 +350,22 @@ class _PartDisplayState extends RefreshableState { ) ); + tiles.add( + ListTile( + title: Text(L10().attachments), + leading: FaIcon(FontAwesomeIcons.fileAlt, color: COLOR_CLICK), + trailing: Text(""), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PartAttachmentsWidget(part) + ) + ); + }, + ) + ); + return tiles; }