TF-1083: add drag multiple mail
This commit is contained in:
@@ -95,6 +95,7 @@ class ThreadController extends BaseController {
|
||||
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
||||
|
||||
final emailList = <PresentationEmail>[].obs;
|
||||
final listEmailDrag = <PresentationEmail>[].obs;
|
||||
|
||||
bool canLoadMore = true;
|
||||
bool canSearchMore = true;
|
||||
@@ -1390,4 +1391,16 @@ class ThreadController extends BaseController {
|
||||
SearchEmailBindings().dependencies();
|
||||
mailboxDashBoardController.dispatchRoute(AppRoutes.SEARCH_EMAIL);
|
||||
}
|
||||
|
||||
void calculateDragValue(PresentationEmail? currentPresentationEmail) {
|
||||
if(currentPresentationEmail != null) {
|
||||
if(mailboxDashBoardController.listEmailSelected.contains(currentPresentationEmail)){
|
||||
listEmailDrag.clear();
|
||||
listEmailDrag.addAll(mailboxDashBoardController.listEmailSelected);
|
||||
} else {
|
||||
listEmailDrag.clear();
|
||||
listEmailDrag.add(currentPresentationEmail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -332,52 +332,55 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
||||
key: const PageStorageKey('list_presentation_email_in_threads'),
|
||||
itemExtent: _getItemExtent(context),
|
||||
itemCount: listPresentationEmail.length,
|
||||
itemBuilder: (context, index) =>
|
||||
Draggable<List<PresentationEmail>>(
|
||||
data: [listPresentationEmail[index]],
|
||||
child: Obx(() => (EmailTileBuilder(
|
||||
itemBuilder: (context, index) {
|
||||
return Draggable<List<PresentationEmail>>(
|
||||
data: controller.listEmailDrag,
|
||||
child: (EmailTileBuilder(
|
||||
context,
|
||||
listPresentationEmail[index],
|
||||
controller.mailboxDashBoardController.currentSelectMode.value,
|
||||
controller.searchController.searchState.value.searchStatus,
|
||||
controller.searchQuery,
|
||||
mailboxCurrent: controller.searchController.isSearchEmailRunning
|
||||
? listPresentationEmail[index].findMailboxContain(
|
||||
controller.mailboxDashBoardController.mapMailboxById)
|
||||
: controller.currentMailbox,
|
||||
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue)
|
||||
..addOnPressEmailActionClick((action, email) =>
|
||||
controller.pressEmailAction(
|
||||
context,
|
||||
action,
|
||||
email,
|
||||
mailboxContain: controller.searchController.isSearchEmailRunning
|
||||
? email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById)
|
||||
: controller.currentMailbox))
|
||||
..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context)
|
||||
? controller.openContextMenuAction(context, _contextMenuActionTile(context, email))
|
||||
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email))))
|
||||
.build(),
|
||||
feedback: _buildFeedBackWidget(context),
|
||||
childWhenDragging: (EmailTileBuilder(
|
||||
context,
|
||||
listPresentationEmail[index],
|
||||
controller.mailboxDashBoardController.currentSelectMode.value,
|
||||
controller.searchController.searchState.value.searchStatus,
|
||||
controller.searchQuery,
|
||||
mailboxCurrent: controller.searchController.isSearchEmailRunning
|
||||
? listPresentationEmail[index].findMailboxContain(
|
||||
controller.mailboxDashBoardController.mapMailboxById)
|
||||
: controller.currentMailbox,
|
||||
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue)
|
||||
..addOnPressEmailActionClick((action, email) =>
|
||||
controller.pressEmailAction(
|
||||
context,
|
||||
action,
|
||||
email,
|
||||
mailboxContain: controller.searchController.isSearchEmailRunning
|
||||
? email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById)
|
||||
: controller.currentMailbox))
|
||||
..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context)
|
||||
? controller.openContextMenuAction(context, _contextMenuActionTile(context, email))
|
||||
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email))))
|
||||
.build()),
|
||||
feedback: _buildFeedBackWidget(),
|
||||
childWhenDragging: (EmailTileBuilder(
|
||||
context,
|
||||
listPresentationEmail[index],
|
||||
controller.mailboxDashBoardController.currentSelectMode.value,
|
||||
controller.searchController.searchState.value.searchStatus,
|
||||
controller.searchQuery,
|
||||
mailboxCurrent: controller.searchController.isSearchEmailRunning
|
||||
? listPresentationEmail[index].findMailboxContain(
|
||||
controller.mailboxDashBoardController.mapMailboxById)
|
||||
: controller.currentMailbox,
|
||||
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue,
|
||||
isDrag: true))
|
||||
.build(),
|
||||
dragAnchorStrategy: pointerDragAnchorStrategy,
|
||||
))
|
||||
? listPresentationEmail[index].findMailboxContain(
|
||||
controller.mailboxDashBoardController.mapMailboxById)
|
||||
: controller.currentMailbox,
|
||||
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue, isDrag: true))
|
||||
.build(),
|
||||
dragAnchorStrategy: pointerDragAnchorStrategy,
|
||||
onDragStarted: () {
|
||||
controller.calculateDragValue(listPresentationEmail[index]);
|
||||
},
|
||||
);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildFeedBackWidget() {
|
||||
Widget _buildFeedBackWidget(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: 60,
|
||||
child: Material(
|
||||
@@ -395,14 +398,16 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
||||
color: Colors.white,
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
const Text(
|
||||
'Move 1 conversation',
|
||||
overflow: TextOverflow.clip,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.bold,
|
||||
Obx(
|
||||
() => Text(
|
||||
AppLocalizations.of(context).moveConversation(controller.listEmailDrag.length),
|
||||
overflow: TextOverflow.clip,
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
maxLines: 1,
|
||||
),
|
||||
maxLines: 1,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user