TF-1083: add drag single mail
This commit is contained in:
@@ -281,10 +281,11 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
controller.openMailbox(context, mailboxNode.item))
|
||||
..addOnExpandFolderActionClick((mailboxNode) =>
|
||||
controller.toggleMailboxFolder(mailboxNode))
|
||||
..adOnMenuActionClick((position, mailboxNode) =>
|
||||
..addOnMenuActionClick((position, mailboxNode) =>
|
||||
_openMailboxMenuAction(context, position, mailboxNode.item))
|
||||
..addOnSelectMailboxFolderClick((mailboxNode) =>
|
||||
controller.selectMailboxNode(mailboxNode)))
|
||||
controller.selectMailboxNode(mailboxNode))
|
||||
..addOnDragItemAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailbox))
|
||||
.build()),
|
||||
children: _buildListChildTileWidget(context, mailboxNode)
|
||||
).build()
|
||||
@@ -292,10 +293,11 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value)
|
||||
..addOnOpenMailboxFolderClick((mailboxNode) =>
|
||||
controller.openMailbox(context, mailboxNode.item))
|
||||
..adOnMenuActionClick((position, mailboxNode) =>
|
||||
..addOnMenuActionClick((position, mailboxNode) =>
|
||||
_openMailboxMenuAction(context, position, mailboxNode.item))
|
||||
..addOnSelectMailboxFolderClick((mailboxNode) =>
|
||||
controller.selectMailboxNode(mailboxNode)))
|
||||
controller.selectMailboxNode(mailboxNode))
|
||||
..addOnDragItemAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailbox))
|
||||
.build())
|
||||
).toList() ?? <Widget>[];
|
||||
}
|
||||
@@ -361,6 +363,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
_responsiveUtils,
|
||||
listMailbox[index],
|
||||
lastMailbox: controller.listMailboxSearched.last)
|
||||
..addOnDragItemAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailbox)
|
||||
..addOnOpenMailboxAction((mailbox) => controller.openMailbox(context, mailbox))
|
||||
..addOnMenuActionClick((position, mailbox) => _openMailboxMenuAction(context, position, mailbox))
|
||||
..addOnSelectMailboxActionClick((mailbox) => controller.selectMailboxSearched(context, mailbox)))
|
||||
|
||||
@@ -14,6 +14,7 @@ typedef OnExpandFolderActionClick = void Function(MailboxNode);
|
||||
typedef OnOpenMailboxFolderClick = void Function(MailboxNode);
|
||||
typedef OnSelectMailboxFolderClick = void Function(MailboxNode);
|
||||
typedef OnMenuActionClick = void Function(RelativeRect, MailboxNode);
|
||||
typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox);
|
||||
|
||||
class MailBoxFolderTileBuilder {
|
||||
|
||||
@@ -33,6 +34,7 @@ class MailBoxFolderTileBuilder {
|
||||
OnOpenMailboxFolderClick? _onOpenMailboxFolderClick;
|
||||
OnSelectMailboxFolderClick? _onSelectMailboxFolderClick;
|
||||
OnMenuActionClick? _onMenuActionClick;
|
||||
OnDragItemAccepted? _onDragItemAccepted;
|
||||
|
||||
bool isHoverItem = false;
|
||||
|
||||
@@ -62,11 +64,23 @@ class MailBoxFolderTileBuilder {
|
||||
_onSelectMailboxFolderClick = onSelectMailboxFolderClick;
|
||||
}
|
||||
|
||||
void adOnMenuActionClick(OnMenuActionClick onMenuActionClick) {
|
||||
void addOnMenuActionClick(OnMenuActionClick onMenuActionClick) {
|
||||
_onMenuActionClick = onMenuActionClick;
|
||||
}
|
||||
|
||||
Widget build() => _buildMailboxItem();
|
||||
void addOnDragItemAccepted(OnDragItemAccepted onDragItemAccepted) {
|
||||
_onDragItemAccepted = onDragItemAccepted;
|
||||
}
|
||||
|
||||
Widget build() => DragTarget<List<PresentationEmail>>(
|
||||
builder: (context, _, __,) {
|
||||
return _buildMailboxItem();
|
||||
},
|
||||
onAccept: (emails) {
|
||||
_onDragItemAccepted?.call(emails, _mailboxNode.item);
|
||||
print(emails);
|
||||
},
|
||||
);
|
||||
|
||||
Widget _buildMailboxItem() {
|
||||
if (mailboxDisplayed == MailboxDisplayed.mailbox) {
|
||||
|
||||
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displa
|
||||
typedef OnOpenMailboxActionClick = void Function(PresentationMailbox);
|
||||
typedef OnSelectMailboxActionClick = void Function(PresentationMailbox);
|
||||
typedef OnOpenMenuActionClick = void Function(RelativeRect, PresentationMailbox);
|
||||
typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox);
|
||||
|
||||
class MailboxSearchTileBuilder {
|
||||
|
||||
@@ -28,6 +29,7 @@ class MailboxSearchTileBuilder {
|
||||
OnOpenMailboxActionClick? _onOpenMailboxActionClick;
|
||||
OnSelectMailboxActionClick? _onSelectMailboxActionClick;
|
||||
OnOpenMenuActionClick? _onMenuActionClick;
|
||||
OnDragItemAccepted? _onDragItemAccepted;
|
||||
|
||||
MailboxSearchTileBuilder(
|
||||
this._context,
|
||||
@@ -55,12 +57,24 @@ class MailboxSearchTileBuilder {
|
||||
_onMenuActionClick = onOpenMenuActionClick;
|
||||
}
|
||||
|
||||
void addOnDragItemAccepted(OnDragItemAccepted onDragItemAccepted) {
|
||||
_onDragItemAccepted = onDragItemAccepted;
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
return Theme(
|
||||
data: ThemeData(
|
||||
splashColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent),
|
||||
child: _buildMailboxItem()
|
||||
child: DragTarget<List<PresentationEmail>>(
|
||||
builder: (context, _, __,) {
|
||||
return _buildMailboxItem();
|
||||
},
|
||||
onAccept: (emails) {
|
||||
_onDragItemAccepted?.call(emails, _presentationMailbox);
|
||||
print(emails.first.preview);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -73,21 +87,21 @@ class MailboxSearchTileBuilder {
|
||||
child: Opacity(
|
||||
opacity: _presentationMailbox.isActivated ? 1.0 : 0.3,
|
||||
child: InkWell(
|
||||
onTap: () {},
|
||||
onHover: (value) => setState(() => isHoverItem = value),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: backgroundColorItem),
|
||||
child: ListTile(
|
||||
contentPadding: const EdgeInsets.only(left: 8),
|
||||
onTap: () => _onOpenMailboxActionClick?.call(_presentationMailbox),
|
||||
leading: _buildLeadingIcon(),
|
||||
title: _buildTitleItem(),
|
||||
subtitle: _buildSubtitleItem(),
|
||||
trailing: _buildMenuIcon(),
|
||||
),
|
||||
)
|
||||
onTap: () {},
|
||||
onHover: (value) => setState(() => isHoverItem = value),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: backgroundColorItem),
|
||||
child: ListTile(
|
||||
contentPadding: const EdgeInsets.only(left: 8),
|
||||
onTap: () => _onOpenMailboxActionClick?.call(_presentationMailbox),
|
||||
leading: _buildLeadingIcon(),
|
||||
title: _buildTitleItem(),
|
||||
subtitle: _buildSubtitleItem(),
|
||||
trailing: _buildMenuIcon(),
|
||||
),
|
||||
)
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user