TF-3766 Change context menu style for email view on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -155,24 +155,24 @@ extension EmailActionTypeExtension on EmailActionType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String getTitle(BuildContext context) {
|
String getTitle(AppLocalizations appLocalizations) {
|
||||||
switch(this) {
|
switch(this) {
|
||||||
case EmailActionType.markAsUnread:
|
case EmailActionType.markAsUnread:
|
||||||
return AppLocalizations.of(context).mark_as_unread;
|
return appLocalizations.mark_as_unread;
|
||||||
case EmailActionType.unSpam:
|
case EmailActionType.unSpam:
|
||||||
return AppLocalizations.of(context).remove_from_spam;
|
return appLocalizations.remove_from_spam;
|
||||||
case EmailActionType.moveToSpam:
|
case EmailActionType.moveToSpam:
|
||||||
return AppLocalizations.of(context).mark_as_spam;
|
return appLocalizations.mark_as_spam;
|
||||||
case EmailActionType.createRule:
|
case EmailActionType.createRule:
|
||||||
return AppLocalizations.of(context).quickCreatingRule;
|
return appLocalizations.quickCreatingRule;
|
||||||
case EmailActionType.unsubscribe:
|
case EmailActionType.unsubscribe:
|
||||||
return AppLocalizations.of(context).unsubscribe;
|
return appLocalizations.unsubscribe;
|
||||||
case EmailActionType.archiveMessage:
|
case EmailActionType.archiveMessage:
|
||||||
return AppLocalizations.of(context).archiveMessage;
|
return appLocalizations.archiveMessage;
|
||||||
case EmailActionType.downloadMessageAsEML:
|
case EmailActionType.downloadMessageAsEML:
|
||||||
return AppLocalizations.of(context).downloadMessageAsEML;
|
return appLocalizations.downloadMessageAsEML;
|
||||||
case EmailActionType.editAsNewEmail:
|
case EmailActionType.editAsNewEmail:
|
||||||
return AppLocalizations.of(context).editAsNewEmail;
|
return appLocalizations.editAsNewEmail;
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.d
|
|||||||
import 'package:core/utils/direction_utils.dart';
|
import 'package:core/utils/direction_utils.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
|
import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart';
|
||||||
import 'package:model/email/email_action_type.dart';
|
import 'package:model/email/email_action_type.dart';
|
||||||
@@ -20,11 +19,11 @@ import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart';
|
|||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
|
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
|
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/presentation/model/context_item_email_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_styles.dart';
|
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_styles.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_banner_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_banner_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_detail_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_detail_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_attachments_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/email_attachments_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_subject_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/email_subject_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_app_bar_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_app_bar_widget.dart';
|
||||||
@@ -548,10 +547,26 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
EmailActionType.editAsNewEmail,
|
EmailActionType.editAsNewEmail,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
final contextMenuActions = moreActions
|
||||||
|
.map((action) => ContextItemEmailAction(
|
||||||
|
action,
|
||||||
|
AppLocalizations.of(context),
|
||||||
|
controller.imagePaths,
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
|
||||||
if (position == null) {
|
if (position == null) {
|
||||||
controller.openContextMenuAction(
|
controller.openContextMenuAction(
|
||||||
context,
|
context,
|
||||||
_emailActionMoreActionTile(context, presentationEmail, moreActions)
|
[],
|
||||||
|
itemActions: contextMenuActions,
|
||||||
|
onContextMenuActionClick: (menuAction) {
|
||||||
|
controller.handleEmailAction(
|
||||||
|
context,
|
||||||
|
presentationEmail,
|
||||||
|
menuAction.action,
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
controller.openPopupMenuAction(
|
controller.openPopupMenuAction(
|
||||||
@@ -562,37 +577,6 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Widget> _emailActionMoreActionTile(
|
|
||||||
BuildContext context,
|
|
||||||
PresentationEmail presentationEmail,
|
|
||||||
List<EmailActionType> actionTypes,
|
|
||||||
) {
|
|
||||||
return actionTypes.map((action) {
|
|
||||||
return (EmailActionCupertinoActionSheetActionBuilder(
|
|
||||||
Key('${action.name}_action'),
|
|
||||||
SvgPicture.asset(
|
|
||||||
action.getIcon(controller.imagePaths),
|
|
||||||
width: 24,
|
|
||||||
height: 24,
|
|
||||||
fit: BoxFit.fill,
|
|
||||||
colorFilter: AppColor.colorTextButton.asFilter()
|
|
||||||
),
|
|
||||||
action.getTitle(context),
|
|
||||||
presentationEmail,
|
|
||||||
iconLeftPadding: controller.responsiveUtils.isScreenWithShortestSide(context)
|
|
||||||
? const EdgeInsetsDirectional.only(start: 12, end: 16)
|
|
||||||
: const EdgeInsetsDirectional.only(end: 12),
|
|
||||||
iconRightPadding: controller.responsiveUtils.isScreenWithShortestSide(context)
|
|
||||||
? const EdgeInsetsDirectional.only(end: 12)
|
|
||||||
: EdgeInsets.zero
|
|
||||||
)
|
|
||||||
..onActionClick((presentationEmail) {
|
|
||||||
popBack();
|
|
||||||
controller.handleEmailAction(context, presentationEmail, action);
|
|
||||||
})).build();
|
|
||||||
}).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<PopupMenuEntry> _popupMenuEmailActionTile(
|
List<PopupMenuEntry> _popupMenuEmailActionTile(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
PresentationEmail presentationEmail,
|
PresentationEmail presentationEmail,
|
||||||
@@ -604,7 +588,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
child: PopupItemWidget(
|
child: PopupItemWidget(
|
||||||
iconAction: action.getIcon(controller.imagePaths),
|
iconAction: action.getIcon(controller.imagePaths),
|
||||||
nameAction: action.getTitle(context),
|
nameAction: action.getTitle(AppLocalizations.of(context)),
|
||||||
colorIcon: AppColor.colorTextButton,
|
colorIcon: AppColor.colorTextButton,
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.only(start: 12),
|
||||||
styleName: const TextStyle(
|
styleName: const TextStyle(
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
|
import 'package:model/email/email_action_type.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/widget/context_menu/context_menu_item_action.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
|
class ContextItemEmailAction
|
||||||
|
extends ContextMenuItemAction<EmailActionType> {
|
||||||
|
final AppLocalizations appLocalizations;
|
||||||
|
final ImagePaths imagePaths;
|
||||||
|
|
||||||
|
ContextItemEmailAction(
|
||||||
|
super.action,
|
||||||
|
this.appLocalizations,
|
||||||
|
this.imagePaths,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get actionIcon => action.getIcon(imagePaths);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get actionName => action.getTitle(appLocalizations);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user