TF-3766 Fix Mark as important, Request read receipt not selected after touch in composer
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -56,3 +56,14 @@ abstract class PopupMenuItemActionRequiredFull<T> extends PopupMenuItemAction<T>
|
|||||||
|
|
||||||
PopupMenuItemActionRequiredFull(super.action, this.selectedAction);
|
PopupMenuItemActionRequiredFull(super.action, this.selectedAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract class PopupMenuItemActionRequiredIconWithMultipleSelected<T>
|
||||||
|
extends PopupMenuItemAction<T>
|
||||||
|
with OptionalPopupIcon, OptionalPopupSelectedIcon<T> {
|
||||||
|
final List<T> selectedActions;
|
||||||
|
|
||||||
|
PopupMenuItemActionRequiredIconWithMultipleSelected(
|
||||||
|
super.action,
|
||||||
|
this.selectedActions,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ class PopupMenuItemActionWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else if (menuAction is PopupMenuItemActionRequiredSelectedIcon) {
|
} else if (menuAction is PopupMenuItemActionRequiredSelectedIcon) {
|
||||||
final specificMenuAction = menuAction as PopupMenuItemActionRequiredSelectedIcon;
|
final specificMenuAction =
|
||||||
|
menuAction as PopupMenuItemActionRequiredSelectedIcon;
|
||||||
selectedIconWidget = Padding(
|
selectedIconWidget = Padding(
|
||||||
padding: const EdgeInsetsDirectional.only(start: 16),
|
padding: const EdgeInsetsDirectional.only(start: 16),
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
@@ -69,6 +70,32 @@ class PopupMenuItemActionWidget extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
isSelected = specificMenuAction.selectedAction == menuAction.action;
|
isSelected = specificMenuAction.selectedAction == menuAction.action;
|
||||||
|
} else if (menuAction
|
||||||
|
is PopupMenuItemActionRequiredIconWithMultipleSelected) {
|
||||||
|
final specificMenuAction =
|
||||||
|
menuAction as PopupMenuItemActionRequiredIconWithMultipleSelected;
|
||||||
|
iconWidget = Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.only(end: 16),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
specificMenuAction.actionIcon,
|
||||||
|
width: specificMenuAction.actionIconSize,
|
||||||
|
height: specificMenuAction.actionIconSize,
|
||||||
|
colorFilter: specificMenuAction.actionIconColor.asFilter(),
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
selectedIconWidget = Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.only(start: 16),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
specificMenuAction.selectedIcon,
|
||||||
|
width: specificMenuAction.selectedIconSize,
|
||||||
|
height: specificMenuAction.selectedIconSize,
|
||||||
|
colorFilter: specificMenuAction.selectedIconColor.asFilter(),
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
isSelected =
|
||||||
|
specificMenuAction.selectedActions.contains(menuAction.action);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PointerInterceptor(
|
return PointerInterceptor(
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_menu_item_action_widget.dart';
|
import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_menu_item_action_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/mark_as_important_extension.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/extensions/mark_as_important_extension.dart';
|
||||||
@@ -9,6 +10,13 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|||||||
|
|
||||||
extension HandleOpenContextMenuExtension on ComposerController {
|
extension HandleOpenContextMenuExtension on ComposerController {
|
||||||
void handleOpenContextMenu(BuildContext context, RelativeRect position) {
|
void handleOpenContextMenu(BuildContext context, RelativeRect position) {
|
||||||
|
final listSelectedComposerActionType = [
|
||||||
|
if (isMarkAsImportant.isTrue)
|
||||||
|
ComposerActionType.markAsImportant,
|
||||||
|
if (hasRequestReadReceipt.isTrue)
|
||||||
|
ComposerActionType.requestReadReceipt,
|
||||||
|
];
|
||||||
|
|
||||||
final popupMenuItems = ComposerActionType.values.map((actionType) {
|
final popupMenuItems = ComposerActionType.values.map((actionType) {
|
||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
@@ -16,6 +24,7 @@ extension HandleOpenContextMenuExtension on ComposerController {
|
|||||||
key: actionType.getContextMenuItemKey(),
|
key: actionType.getContextMenuItemKey(),
|
||||||
menuAction: PopupMenuItemComposerTypeAction(
|
menuAction: PopupMenuItemComposerTypeAction(
|
||||||
actionType,
|
actionType,
|
||||||
|
listSelectedComposerActionType,
|
||||||
AppLocalizations.of(context),
|
AppLocalizations.of(context),
|
||||||
imagePaths,
|
imagePaths,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,12 +5,14 @@ import 'package:tmail_ui_user/features/composer/presentation/model/composer_acti
|
|||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class PopupMenuItemComposerTypeAction
|
class PopupMenuItemComposerTypeAction
|
||||||
extends PopupMenuItemActionRequiredIcon<ComposerActionType> {
|
extends PopupMenuItemActionRequiredIconWithMultipleSelected<
|
||||||
|
ComposerActionType> {
|
||||||
final AppLocalizations appLocalizations;
|
final AppLocalizations appLocalizations;
|
||||||
final ImagePaths imagePaths;
|
final ImagePaths imagePaths;
|
||||||
|
|
||||||
PopupMenuItemComposerTypeAction(
|
PopupMenuItemComposerTypeAction(
|
||||||
super.action,
|
super.action,
|
||||||
|
super.selectedActions,
|
||||||
this.appLocalizations,
|
this.appLocalizations,
|
||||||
this.imagePaths,
|
this.imagePaths,
|
||||||
);
|
);
|
||||||
@@ -26,4 +28,7 @@ class PopupMenuItemComposerTypeAction
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Color get actionNameColor => action.getContextMenuTitleColor();
|
Color get actionNameColor => action.getContextMenuTitleColor();
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get selectedIcon => imagePaths.icFilterSelected;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user