diff --git a/lib/ui/credit/edit/credit_edit.dart b/lib/ui/credit/edit/credit_edit.dart index ae1909326..81d93cda6 100644 --- a/lib/ui/credit/edit/credit_edit.dart +++ b/lib/ui/credit/edit/credit_edit.dart @@ -1,5 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/data/models/entities.dart'; +import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart'; @@ -41,7 +43,7 @@ class _CreditEditState extends State final index = viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen; - _controller = TabController(vsync: this, length: 3, initialIndex: index); + _controller = TabController(vsync: this, length: 4, initialIndex: index); } @override @@ -65,8 +67,11 @@ class _CreditEditState extends State final viewModel = widget.viewModel; final invoice = viewModel.invoice; final state = viewModel.state; + final prefState = state.prefState; + final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); return EditScaffold( + isFullscreen: isFullscreen, entity: invoice, title: invoice.isNew ? localization.newCredit : localization.editCredit, onCancelPressed: (context) => viewModel.onCancelPressed(context), @@ -85,7 +90,7 @@ class _CreditEditState extends State viewModel.onSavePressed(context); }, - appBarBottom: state.prefState.isDesktop + appBarBottom: isFullscreen ? null : TabBar( controller: _controller, @@ -94,6 +99,9 @@ class _CreditEditState extends State Tab( text: localization.details, ), + Tab( + text: localization.contacts, + ), Tab( text: localization.items, ), @@ -104,7 +112,7 @@ class _CreditEditState extends State ), body: Form( key: _formKey, - child: state.prefState.isDesktop + child: isFullscreen ? CreditEditDetailsScreen( viewModel: widget.viewModel, ) @@ -115,6 +123,9 @@ class _CreditEditState extends State CreditEditDetailsScreen( viewModel: widget.viewModel, ), + InvoiceEditContactsScreen( + entityType: invoice.entityType, + ), CreditEditItemsScreen( viewModel: widget.viewModel, ), @@ -141,7 +152,9 @@ class _CreditEditState extends State clientId: invoice.clientId, onItemsSelected: (items, [clientId]) { viewModel.onItemsAdded(items, clientId); - _controller.animateTo(kItemScreen); + if (!isFullscreen) { + _controller.animateTo(kItemScreen); + } }, ); }); diff --git a/lib/ui/quote/quote_edit.dart b/lib/ui/quote/quote_edit.dart index bf3c1f40b..4d36be7bb 100644 --- a/lib/ui/quote/quote_edit.dart +++ b/lib/ui/quote/quote_edit.dart @@ -1,5 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart'; @@ -41,7 +43,7 @@ class _QuoteEditState extends State final index = viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen; - _controller = TabController(vsync: this, length: 3, initialIndex: index); + _controller = TabController(vsync: this, length: 4, initialIndex: index); } @override @@ -65,8 +67,11 @@ class _QuoteEditState extends State final viewModel = widget.viewModel; final invoice = viewModel.invoice; final state = viewModel.state; + final prefState = state.prefState; + final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); return EditScaffold( + isFullscreen: isFullscreen, entity: invoice, title: invoice.isNew ? localization.newQuote : localization.editQuote, onCancelPressed: (context) => viewModel.onCancelPressed(context), @@ -85,7 +90,7 @@ class _QuoteEditState extends State viewModel.onSavePressed(context); }, - appBarBottom: state.prefState.isDesktop + appBarBottom: isFullscreen ? null : TabBar( controller: _controller, @@ -94,6 +99,9 @@ class _QuoteEditState extends State Tab( text: localization.details, ), + Tab( + text: localization.contacts, + ), Tab( text: localization.items, ), @@ -104,7 +112,7 @@ class _QuoteEditState extends State ), body: Form( key: _formKey, - child: state.prefState.isDesktop + child: isFullscreen ? QuoteEditDetailsScreen( viewModel: widget.viewModel, ) @@ -115,6 +123,9 @@ class _QuoteEditState extends State QuoteEditDetailsScreen( viewModel: widget.viewModel, ), + InvoiceEditContactsScreen( + entityType: invoice.entityType, + ), QuoteEditItemsScreen( viewModel: widget.viewModel, ), @@ -141,7 +152,9 @@ class _QuoteEditState extends State clientId: invoice.clientId, onItemsSelected: (items, [clientId]) { viewModel.onItemsAdded(items, clientId); - _controller.animateTo(kItemScreen); + if (!isFullscreen) { + _controller.animateTo(kItemScreen); + } }, ); }); diff --git a/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart b/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart index 50af03aef..b77f86814 100644 --- a/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart +++ b/lib/ui/recurring_invoice/edit/recurring_invoice_edit.dart @@ -1,6 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart'; +import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart'; @@ -40,7 +42,7 @@ class _RecurringInvoiceEditState extends State final index = viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen; - _controller = TabController(vsync: this, length: 3, initialIndex: index); + _controller = TabController(vsync: this, length: 4, initialIndex: index); } @override @@ -65,8 +67,11 @@ class _RecurringInvoiceEditState extends State final recurringInvoice = viewModel.invoice; final state = viewModel.state; final invoice = viewModel.invoice; + final prefState = state.prefState; + final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice); return EditScaffold( + isFullscreen: isFullscreen, title: recurringInvoice.isNew ? localization.newRecurringInvoice : localization.editRecurringInvoice, @@ -86,7 +91,7 @@ class _RecurringInvoiceEditState extends State viewModel.onSavePressed(context); }, - appBarBottom: state.prefState.isDesktop + appBarBottom: isFullscreen ? null : TabBar( controller: _controller, @@ -95,6 +100,9 @@ class _RecurringInvoiceEditState extends State Tab( text: localization.details, ), + Tab( + text: localization.contacts, + ), Tab( text: localization.items, ), @@ -105,7 +113,7 @@ class _RecurringInvoiceEditState extends State ), body: Form( key: _formKey, - child: state.prefState.isDesktop + child: isFullscreen ? RecurringInvoiceEditDetailsScreen( viewModel: widget.viewModel, ) @@ -116,6 +124,9 @@ class _RecurringInvoiceEditState extends State RecurringInvoiceEditDetailsScreen( viewModel: widget.viewModel, ), + InvoiceEditContactsScreen( + entityType: invoice.entityType, + ), RecurringInvoiceEditItemsScreen( viewModel: widget.viewModel, ), @@ -142,7 +153,9 @@ class _RecurringInvoiceEditState extends State clientId: invoice.clientId, onItemsSelected: (items, [clientId]) { viewModel.onItemsAdded(items, clientId); - _controller.animateTo(kItemScreen); + if (!isFullscreen) { + _controller.animateTo(kItemScreen); + } }, ); });