TF-3766 Change context menu style for other widgets on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/context_item_filter_message_option_action.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
extension HandleSelectMessageFilterExtension on ThreadController {
|
||||
void handleSelectMessageFilter(
|
||||
BuildContext context,
|
||||
FilterMessageOption selectedOption,
|
||||
) {
|
||||
final contextMenuActions = [
|
||||
FilterMessageOption.attachments,
|
||||
FilterMessageOption.unread,
|
||||
FilterMessageOption.starred,
|
||||
].map((filter) {
|
||||
return ContextItemFilterMessageOptionAction(
|
||||
filter,
|
||||
selectedOption,
|
||||
AppLocalizations.of(context),
|
||||
imagePaths,
|
||||
);
|
||||
}).toList();
|
||||
|
||||
openBottomSheetContextMenuAction(
|
||||
context: context,
|
||||
itemActions: contextMenuActions,
|
||||
onContextMenuActionClick: (action) => filterMessagesAction(action.action),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/context_menu/context_menu_item_action.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class ContextItemFilterMessageOptionAction
|
||||
extends ContextMenuItemActionRequiredFull<FilterMessageOption> {
|
||||
final AppLocalizations appLocalizations;
|
||||
final ImagePaths imagePaths;
|
||||
|
||||
ContextItemFilterMessageOptionAction(
|
||||
super.action,
|
||||
super.selectedAction,
|
||||
this.appLocalizations,
|
||||
this.imagePaths,
|
||||
);
|
||||
|
||||
@override
|
||||
String get actionIcon => action.getContextMenuIcon(imagePaths);
|
||||
|
||||
@override
|
||||
String get actionName => action.getName(appLocalizations);
|
||||
|
||||
@override
|
||||
String get selectedIcon => imagePaths.icFilterSelected;
|
||||
}
|
||||
@@ -28,6 +28,7 @@ import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_st
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/extensions/handle_pull_to_refresh_list_email_extension.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/extensions/handle_select_message_filter_extension.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/loading_more_status.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/item_email_tile_styles.dart';
|
||||
@@ -39,7 +40,6 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/bottom_bar_th
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
|
||||
if (dart.library.html) 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_web_builder.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/empty_emails_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/filter_message_cupertino_action_sheet_action_builder.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/scroll_to_top_button_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/thread_view_loading_bar_widget.dart';
|
||||
@@ -84,10 +84,7 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
cancelEditThreadAction: controller.cancelSelectEmail,
|
||||
emailSelectionAction: controller.pressEmailSelectionAction,
|
||||
onContextMenuFilterEmailAction: controller.responsiveUtils.isScreenWithShortestSide(context)
|
||||
? (filterOption) => controller.openContextMenuAction(
|
||||
context,
|
||||
_filterMessagesCupertinoActionTile(context, filterOption)
|
||||
)
|
||||
? (filterOption) => controller.handleSelectMessageFilter(context, filterOption)
|
||||
: null,
|
||||
onPopupMenuFilterEmailAction: !controller.responsiveUtils.isScreenWithShortestSide(context)
|
||||
? (filterOption, position) => controller.openPopupMenuAction(
|
||||
@@ -342,41 +339,6 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
});
|
||||
}
|
||||
|
||||
List<Widget> _filterMessagesCupertinoActionTile(BuildContext context, FilterMessageOption optionCurrent) {
|
||||
final listFilter = [
|
||||
FilterMessageOption.attachments,
|
||||
FilterMessageOption.unread,
|
||||
FilterMessageOption.starred,
|
||||
];
|
||||
|
||||
return listFilter.map((filter) => (FilterMessageCupertinoActionSheetActionBuilder(
|
||||
Key('filter_email_${filter.name}'),
|
||||
SvgPicture.asset(
|
||||
filter.getContextMenuIcon(controller.imagePaths),
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill,
|
||||
colorFilter: filter == FilterMessageOption.attachments
|
||||
? AppColor.colorTextButton.asFilter()
|
||||
: null),
|
||||
filter.getName(context),
|
||||
filter,
|
||||
optionCurrent: optionCurrent,
|
||||
iconLeftPadding: controller.responsiveUtils.isMobile(context)
|
||||
? const EdgeInsets.only(left: 12, right: 16)
|
||||
: const EdgeInsets.only(right: 12),
|
||||
iconRightPadding: controller.responsiveUtils.isMobile(context)
|
||||
? const EdgeInsets.only(right: 12)
|
||||
: EdgeInsets.zero,
|
||||
actionSelected: SvgPicture.asset(
|
||||
controller.imagePaths.icFilterSelected,
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill))
|
||||
..onActionClick(controller.filterMessagesAction))
|
||||
.build()).toList();
|
||||
}
|
||||
|
||||
Widget _buildResultListEmail(BuildContext context, List<PresentationEmail> listPresentationEmail) {
|
||||
return listPresentationEmail.isNotEmpty
|
||||
? _buildListEmailBody(context, listPresentationEmail)
|
||||
@@ -685,9 +647,8 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
))
|
||||
.toList();
|
||||
|
||||
controller.openContextMenuAction(
|
||||
context,
|
||||
[],
|
||||
controller.openBottomSheetContextMenuAction(
|
||||
context: context,
|
||||
itemActions: contextMenuActions,
|
||||
onContextMenuActionClick: (menuAction) {
|
||||
controller.handleEmailActionType(
|
||||
|
||||
@@ -52,7 +52,7 @@ class EmptyEmailsWidget extends StatelessWidget {
|
||||
Text(
|
||||
key: const Key('empty_email_sub_message'),
|
||||
AppLocalizations.of(context).startToComposeEmails,
|
||||
style: ThemeUtils.textStyleInter400().copyWith(
|
||||
style: ThemeUtils.textStyleInter400.copyWith(
|
||||
letterSpacing: -0.15,
|
||||
fontSize: 16,
|
||||
height: 21.01 / 16,
|
||||
|
||||
Reference in New Issue
Block a user