Add contacts edit screen to quote/credits

This commit is contained in:
Hillel Coren 2020-12-17 22:04:47 +02:00
parent 294702a2c1
commit 8195a4729a
3 changed files with 51 additions and 12 deletions

View File

@ -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<CreditEdit>
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<CreditEdit>
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<CreditEdit>
viewModel.onSavePressed(context);
},
appBarBottom: state.prefState.isDesktop
appBarBottom: isFullscreen
? null
: TabBar(
controller: _controller,
@ -94,6 +99,9 @@ class _CreditEditState extends State<CreditEdit>
Tab(
text: localization.details,
),
Tab(
text: localization.contacts,
),
Tab(
text: localization.items,
),
@ -104,7 +112,7 @@ class _CreditEditState extends State<CreditEdit>
),
body: Form(
key: _formKey,
child: state.prefState.isDesktop
child: isFullscreen
? CreditEditDetailsScreen(
viewModel: widget.viewModel,
)
@ -115,6 +123,9 @@ class _CreditEditState extends State<CreditEdit>
CreditEditDetailsScreen(
viewModel: widget.viewModel,
),
InvoiceEditContactsScreen(
entityType: invoice.entityType,
),
CreditEditItemsScreen(
viewModel: widget.viewModel,
),
@ -141,7 +152,9 @@ class _CreditEditState extends State<CreditEdit>
clientId: invoice.clientId,
onItemsSelected: (items, [clientId]) {
viewModel.onItemsAdded(items, clientId);
_controller.animateTo(kItemScreen);
if (!isFullscreen) {
_controller.animateTo(kItemScreen);
}
},
);
});

View File

@ -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<QuoteEdit>
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<QuoteEdit>
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<QuoteEdit>
viewModel.onSavePressed(context);
},
appBarBottom: state.prefState.isDesktop
appBarBottom: isFullscreen
? null
: TabBar(
controller: _controller,
@ -94,6 +99,9 @@ class _QuoteEditState extends State<QuoteEdit>
Tab(
text: localization.details,
),
Tab(
text: localization.contacts,
),
Tab(
text: localization.items,
),
@ -104,7 +112,7 @@ class _QuoteEditState extends State<QuoteEdit>
),
body: Form(
key: _formKey,
child: state.prefState.isDesktop
child: isFullscreen
? QuoteEditDetailsScreen(
viewModel: widget.viewModel,
)
@ -115,6 +123,9 @@ class _QuoteEditState extends State<QuoteEdit>
QuoteEditDetailsScreen(
viewModel: widget.viewModel,
),
InvoiceEditContactsScreen(
entityType: invoice.entityType,
),
QuoteEditItemsScreen(
viewModel: widget.viewModel,
),
@ -141,7 +152,9 @@ class _QuoteEditState extends State<QuoteEdit>
clientId: invoice.clientId,
onItemsSelected: (items, [clientId]) {
viewModel.onItemsAdded(items, clientId);
_controller.animateTo(kItemScreen);
if (!isFullscreen) {
_controller.animateTo(kItemScreen);
}
},
);
});

View File

@ -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<RecurringInvoiceEdit>
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<RecurringInvoiceEdit>
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<RecurringInvoiceEdit>
viewModel.onSavePressed(context);
},
appBarBottom: state.prefState.isDesktop
appBarBottom: isFullscreen
? null
: TabBar(
controller: _controller,
@ -95,6 +100,9 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
Tab(
text: localization.details,
),
Tab(
text: localization.contacts,
),
Tab(
text: localization.items,
),
@ -105,7 +113,7 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
),
body: Form(
key: _formKey,
child: state.prefState.isDesktop
child: isFullscreen
? RecurringInvoiceEditDetailsScreen(
viewModel: widget.viewModel,
)
@ -116,6 +124,9 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
RecurringInvoiceEditDetailsScreen(
viewModel: widget.viewModel,
),
InvoiceEditContactsScreen(
entityType: invoice.entityType,
),
RecurringInvoiceEditItemsScreen(
viewModel: widget.viewModel,
),
@ -142,7 +153,9 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
clientId: invoice.clientId,
onItemsSelected: (items, [clientId]) {
viewModel.onItemsAdded(items, clientId);
_controller.animateTo(kItemScreen);
if (!isFullscreen) {
_controller.animateTo(kItemScreen);
}
},
);
});