TF-933 Add search filter by mailbox in new search view for mobile/tablet
This commit is contained in:
@@ -2,8 +2,10 @@ import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
@@ -24,6 +26,8 @@ class MailBoxFolderTileBuilder {
|
||||
final MailboxDisplayed mailboxDisplayed;
|
||||
final MailboxNode? lastNode;
|
||||
final PresentationMailbox? mailboxNodeSelected;
|
||||
final MailboxActions? mailboxActions;
|
||||
final MailboxId? mailboxIdSelected;
|
||||
|
||||
OnExpandFolderActionClick? _onExpandFolderActionClick;
|
||||
OnOpenMailboxFolderClick? _onOpenMailboxFolderClick;
|
||||
@@ -41,6 +45,8 @@ class MailBoxFolderTileBuilder {
|
||||
this.mailboxDisplayed = MailboxDisplayed.mailbox,
|
||||
this.lastNode,
|
||||
this.mailboxNodeSelected,
|
||||
this.mailboxActions,
|
||||
this.mailboxIdSelected,
|
||||
}
|
||||
);
|
||||
|
||||
@@ -105,6 +111,7 @@ class MailBoxFolderTileBuilder {
|
||||
_buildLeadingMailboxItem(),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(child: _buildTitleFolderItem()),
|
||||
_buildSelectedIcon(),
|
||||
const SizedBox(width: 8),
|
||||
_buildTrailingMailboxItem()
|
||||
])
|
||||
@@ -132,6 +139,7 @@ class MailBoxFolderTileBuilder {
|
||||
_buildLeadingMailboxItem(),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(child: _buildTitleFolderItem()),
|
||||
_buildSelectedIcon(),
|
||||
const SizedBox(width: 8),
|
||||
_buildTrailingMailboxItem()
|
||||
]),
|
||||
@@ -365,4 +373,18 @@ class MailBoxFolderTileBuilder {
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
Widget _buildSelectedIcon() {
|
||||
if (_mailboxNode.item.id == mailboxIdSelected &&
|
||||
mailboxDisplayed == MailboxDisplayed.destinationPicker &&
|
||||
mailboxActions == MailboxActions.select) {
|
||||
return SvgPicture.asset(
|
||||
_imagePaths.icFilterSelected,
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart';
|
||||
|
||||
typedef OnOpenMailboxActionClick = void Function(PresentationMailbox);
|
||||
@@ -18,6 +20,8 @@ class MailboxSearchTileBuilder {
|
||||
final ResponsiveUtils _responsiveUtils;
|
||||
final BuildContext _context;
|
||||
final MailboxDisplayed mailboxDisplayed;
|
||||
final MailboxActions? mailboxActions;
|
||||
final MailboxId? mailboxIdSelected;
|
||||
|
||||
bool isHoverItem = false;
|
||||
|
||||
@@ -34,6 +38,8 @@ class MailboxSearchTileBuilder {
|
||||
this.allSelectMode = SelectMode.INACTIVE,
|
||||
this.lastMailbox,
|
||||
this.mailboxDisplayed = MailboxDisplayed.mailbox,
|
||||
this.mailboxActions,
|
||||
this.mailboxIdSelected,
|
||||
}
|
||||
);
|
||||
|
||||
@@ -90,6 +96,7 @@ class MailboxSearchTileBuilder {
|
||||
leading: _buildLeadingIcon(),
|
||||
title: _buildTitleItem(),
|
||||
subtitle: _buildSubtitleItem(),
|
||||
trailing: _buildSelectedIcon(),
|
||||
),
|
||||
if (lastMailbox?.id != _presentationMailbox.id)
|
||||
Padding(
|
||||
@@ -183,8 +190,9 @@ class MailboxSearchTileBuilder {
|
||||
height: 20,
|
||||
fit: BoxFit.fill)),
|
||||
);
|
||||
} else {
|
||||
return _buildSelectedIcon();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Color get backgroundColorItem {
|
||||
@@ -200,4 +208,21 @@ class MailboxSearchTileBuilder {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Widget? _buildSelectedIcon() {
|
||||
if (_presentationMailbox.id == mailboxIdSelected &&
|
||||
mailboxDisplayed == MailboxDisplayed.destinationPicker &&
|
||||
mailboxActions == MailboxActions.select) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(right: 8),
|
||||
child: SvgPicture.asset(
|
||||
_imagePaths.icFilterSelected,
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill),
|
||||
);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user