TF-1311: [Presentation] Implement hide mailbox in presentation

This commit is contained in:
HuyNguyen
2023-02-07 13:23:33 +07:00
committed by Dat Vu
parent 2f3b1b6a87
commit 6f32bf4ba3
11 changed files with 102 additions and 43 deletions
@@ -15,7 +15,7 @@ typedef OnOpenMailboxFolderClick = void Function(MailboxNode);
typedef OnSelectMailboxFolderClick = void Function(MailboxNode);
typedef OnMenuActionClick = void Function(RelativeRect, MailboxNode);
typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox);
typedef OnLongPressSpamReport = void Function(MailboxNode);
typedef OnLongPressMailboxFolderClick = void Function(MailboxNode);
class MailBoxFolderTileBuilder {
@@ -36,7 +36,7 @@ class MailBoxFolderTileBuilder {
OnSelectMailboxFolderClick? _onSelectMailboxFolderClick;
OnMenuActionClick? _onMenuActionClick;
OnDragItemAccepted? _onDragItemAccepted;
OnLongPressSpamReport? _onLongPressSpamReport;
OnLongPressMailboxFolderClick? _onLongPressMailboxFolderClick;
bool isHoverItem = false;
@@ -74,8 +74,8 @@ class MailBoxFolderTileBuilder {
_onDragItemAccepted = onDragItemAccepted;
}
void addOnLongPressSpamReport(OnLongPressSpamReport onLongPressSpamReport) {
_onLongPressSpamReport = onLongPressSpamReport;
void addOnLongPressMailboxFolderClick(OnLongPressMailboxFolderClick onLongPressMailboxFolderClick) {
_onLongPressMailboxFolderClick = onLongPressMailboxFolderClick;
}
Widget build() => DragTarget<List<PresentationEmail>>(
@@ -127,9 +127,11 @@ class MailBoxFolderTileBuilder {
child: Opacity(
opacity: _mailboxNode.isActivated ? 1.0 : 0.3,
child: InkWell(
onLongPress: _mailboxNode.item.isSpam ? () {
_onLongPressSpamReport?.call(_mailboxNode);
} : null,
onLongPress: () {
if(_mailboxNode.item.isShowDisableMailbox || _mailboxNode.item.isSpam) {
_onLongPressMailboxFolderClick?.call(_mailboxNode);
}
},
onTap: () => allSelectMode == SelectMode.ACTIVE
? _onSelectMailboxFolderClick?.call(_mailboxNode)
: _onOpenMailboxFolderClick?.call(_mailboxNode),
@@ -170,6 +172,7 @@ class MailBoxFolderTileBuilder {
child: Material(
color: Colors.transparent,
child: InkWell(
onLongPress: () => print('123'),
onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode),
child: Container(
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 24),
@@ -199,7 +202,7 @@ class MailBoxFolderTileBuilder {
if (_mailboxNode.hasChildren())
Row(
children: [
const SizedBox(width: 8),
SizedBox(width: _mailboxNode.item.hasRole() ? 0 : 8),
buildIconWeb(
icon: SvgPicture.asset(
_mailboxNode.expandMode == ExpandMode.EXPAND
@@ -216,11 +219,10 @@ class MailBoxFolderTileBuilder {
? AppLocalizations.of(_context).collapse
: AppLocalizations.of(_context).expand,
onTap: () => _onExpandFolderActionClick?.call(_mailboxNode)),
const SizedBox(width: 4),
],
)
else
SizedBox(width:_mailboxNode.item.hasRole() ? 0 : 24),
SizedBox(width: !_mailboxNode.item.hasRole() ? 32 : 24),
Transform(
transform: Matrix4.translationValues(-4.0, 0.0, 0.0),
child: _buildLeadingIcon()),
@@ -254,7 +256,7 @@ class MailBoxFolderTileBuilder {
],
)
else
SizedBox(width: _mailboxNode.item.hasRole() ? 0 : 36),
const SizedBox(width: 36),
_buildLeadingIcon(),
]);
} else {