Task item details

This commit is contained in:
Hillel Coren 2023-03-22 17:54:52 +02:00
parent c6906de123
commit 42d26a26de
1 changed files with 35 additions and 19 deletions

View File

@ -27,6 +27,7 @@ import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_items_desktop.
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details_vm.dart'; import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details_vm.dart';
import 'package:invoiceninja_flutter/utils/colors.dart'; import 'package:invoiceninja_flutter/utils/colors.dart';
import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -482,26 +483,41 @@ class _TaskEditDesktopState extends State<TaskEditDesktop> {
], ],
), ),
), ),
Padding( if (settings.allowBillableTaskItems)
padding: const EdgeInsets.only(top: 4), Padding(
child: IconButton( padding: const EdgeInsets.only(right: 8, left: 4),
icon: Icon( child: IconButton(
Icons.clear, onPressed: taskTimes[index].isEmpty
color: overlapping.contains(index) ? Colors.red : null, ? null
), : () => viewModel.onUpdatedTaskTime(
tooltip: overlapping.contains(index) taskTime.rebuild((b) =>
? localization.invalidTime b..isBillable = !taskTime.isBillable),
: localization.remove, index),
onPressed: taskTimes[index].isEmpty icon: Icon(taskTime.isBillable
? null ? Icons.check_box_outlined
: () { : Icons.check_box_outline_blank)),
viewModel.onRemoveTaskTime(index);
setState(() {
_updatedAt =
DateTime.now().millisecondsSinceEpoch;
});
},
), ),
IconButton(
icon: Icon(
Icons.clear,
color: overlapping.contains(index) ? Colors.red : null,
),
tooltip: overlapping.contains(index)
? localization.invalidTime
: localization.remove,
onPressed: taskTimes[index].isEmpty
? null
: () {
confirmCallback(
context: context,
callback: (_) {
viewModel.onRemoveTaskTime(index);
setState(() {
_updatedAt =
DateTime.now().millisecondsSinceEpoch;
});
});
},
), ),
], ],
); );