TF-3936 Thread Detail Hide app bar icon when disabled
This commit is contained in:
@@ -44,6 +44,7 @@ class ThreadDetailView extends GetWidget<ThreadDetailController> {
|
|||||||
closeThreadDetailAction: controller.closeThreadDetailAction,
|
closeThreadDetailAction: controller.closeThreadDetailAction,
|
||||||
lastEmailOfThread: controller.emailIdsPresentation.values.lastOrNull,
|
lastEmailOfThread: controller.emailIdsPresentation.values.lastOrNull,
|
||||||
ownUserName: controller.session?.getOwnEmailAddress() ?? '',
|
ownUserName: controller.session?.getOwnEmailAddress() ?? '',
|
||||||
|
isThreadDetailEnabled: controller.isThreadDetailEnabled,
|
||||||
mailboxContain: _getMailboxContain(),
|
mailboxContain: _getMailboxContain(),
|
||||||
onEmailActionClick: isLoading
|
onEmailActionClick: isLoading
|
||||||
? null
|
? null
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class ThreadDetailAppBar extends StatelessWidget {
|
|||||||
required this.closeThreadDetailAction,
|
required this.closeThreadDetailAction,
|
||||||
required this.lastEmailOfThread,
|
required this.lastEmailOfThread,
|
||||||
required this.ownUserName,
|
required this.ownUserName,
|
||||||
|
required this.isThreadDetailEnabled,
|
||||||
this.mailboxContain,
|
this.mailboxContain,
|
||||||
this.optionWidgets = const [],
|
this.optionWidgets = const [],
|
||||||
this.onEmailActionClick,
|
this.onEmailActionClick,
|
||||||
@@ -35,6 +36,7 @@ class ThreadDetailAppBar extends StatelessWidget {
|
|||||||
final void Function(BuildContext context) closeThreadDetailAction;
|
final void Function(BuildContext context) closeThreadDetailAction;
|
||||||
final PresentationEmail? lastEmailOfThread;
|
final PresentationEmail? lastEmailOfThread;
|
||||||
final String ownUserName;
|
final String ownUserName;
|
||||||
|
final bool isThreadDetailEnabled;
|
||||||
final PresentationMailbox? mailboxContain;
|
final PresentationMailbox? mailboxContain;
|
||||||
final List<Widget> optionWidgets;
|
final List<Widget> optionWidgets;
|
||||||
final OnEmailActionClick? onEmailActionClick;
|
final OnEmailActionClick? onEmailActionClick;
|
||||||
@@ -84,50 +86,42 @@ class ThreadDetailAppBar extends StatelessWidget {
|
|||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: [
|
children: [
|
||||||
if (_supportDisplayMailboxNameTitle(context)) backButton,
|
if (_supportDisplayMailboxNameTitle(context)) backButton,
|
||||||
if (lastEmailOfThread != null) ...[
|
if (lastEmailOfThread != null && isThreadDetailEnabled) ...[
|
||||||
TMailButtonWidget.fromIcon(
|
_ThreadDetailAppBarButton(
|
||||||
icon: imagePaths.icReply,
|
icon: imagePaths.icReply,
|
||||||
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
|
|
||||||
iconColor: EmailViewAppBarWidgetStyles.iconColor,
|
|
||||||
tooltipMessage: AppLocalizations.of(context).reply,
|
tooltipMessage: AppLocalizations.of(context).reply,
|
||||||
backgroundColor: Colors.transparent,
|
responsiveUtils: responsiveUtils,
|
||||||
onTapActionCallback: () => onEmailActionClick?.call(
|
onTapActionCallback: (_) => onEmailActionClick?.call(
|
||||||
lastEmailOfThread!,
|
lastEmailOfThread!,
|
||||||
EmailActionType.reply,
|
EmailActionType.reply,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (!responsiveUtils.isMobile(context)) ...[
|
if (!responsiveUtils.isMobile(context)) ...[
|
||||||
if (lastEmailOfThread!.getCountMailAddressWithoutMe(ownUserName) > 1)
|
if (lastEmailOfThread!.getCountMailAddressWithoutMe(ownUserName) > 1)
|
||||||
TMailButtonWidget.fromIcon(
|
_ThreadDetailAppBarButton(
|
||||||
icon: imagePaths.icReplyAll,
|
icon: imagePaths.icReplyAll,
|
||||||
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
|
|
||||||
iconColor: EmailViewAppBarWidgetStyles.iconColor,
|
|
||||||
tooltipMessage: AppLocalizations.of(context).reply_all,
|
tooltipMessage: AppLocalizations.of(context).reply_all,
|
||||||
backgroundColor: Colors.transparent,
|
responsiveUtils: responsiveUtils,
|
||||||
onTapActionCallback: () => onEmailActionClick?.call(
|
onTapActionCallback: (_) => onEmailActionClick?.call(
|
||||||
lastEmailOfThread!,
|
lastEmailOfThread!,
|
||||||
EmailActionType.replyAll,
|
EmailActionType.replyAll,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (isReplyToListEnabled)
|
if (isReplyToListEnabled)
|
||||||
TMailButtonWidget.fromIcon(
|
_ThreadDetailAppBarButton(
|
||||||
icon: imagePaths.icReply,
|
icon: imagePaths.icReply,
|
||||||
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
|
|
||||||
iconColor: EmailViewAppBarWidgetStyles.iconColor,
|
|
||||||
tooltipMessage: AppLocalizations.of(context).replyToList,
|
tooltipMessage: AppLocalizations.of(context).replyToList,
|
||||||
backgroundColor: Colors.transparent,
|
responsiveUtils: responsiveUtils,
|
||||||
onTapActionCallback: () => onEmailActionClick?.call(
|
onTapActionCallback: (_) => onEmailActionClick?.call(
|
||||||
lastEmailOfThread!,
|
lastEmailOfThread!,
|
||||||
EmailActionType.replyToList,
|
EmailActionType.replyToList,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
TMailButtonWidget.fromIcon(
|
_ThreadDetailAppBarButton(
|
||||||
icon: imagePaths.icForward,
|
icon: imagePaths.icForward,
|
||||||
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
|
|
||||||
iconColor: EmailViewAppBarWidgetStyles.iconColor,
|
|
||||||
tooltipMessage: AppLocalizations.of(context).forward,
|
tooltipMessage: AppLocalizations.of(context).forward,
|
||||||
backgroundColor: Colors.transparent,
|
responsiveUtils: responsiveUtils,
|
||||||
onTapActionCallback: () => onEmailActionClick?.call(
|
onTapActionCallback: (_) => onEmailActionClick?.call(
|
||||||
lastEmailOfThread!,
|
lastEmailOfThread!,
|
||||||
EmailActionType.forward,
|
EmailActionType.forward,
|
||||||
),
|
),
|
||||||
@@ -140,18 +134,11 @@ class ThreadDetailAppBar extends StatelessWidget {
|
|||||||
else
|
else
|
||||||
...optionWidgets,
|
...optionWidgets,
|
||||||
if (lastEmailOfThread != null)
|
if (lastEmailOfThread != null)
|
||||||
TMailButtonWidget.fromIcon(
|
_ThreadDetailAppBarButton(
|
||||||
icon: imagePaths.icMoreVertical,
|
icon: imagePaths.icMoreVertical,
|
||||||
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
|
|
||||||
iconColor: EmailViewAppBarWidgetStyles.iconColor,
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
tooltipMessage: AppLocalizations.of(context).more,
|
tooltipMessage: AppLocalizations.of(context).more,
|
||||||
onTapActionCallback: responsiveUtils.isScreenWithShortestSide(context) &&
|
responsiveUtils: responsiveUtils,
|
||||||
lastEmailOfThread != null
|
onTapActionCallback: lastEmailOfThread != null
|
||||||
? () => onMoreActionClick?.call(lastEmailOfThread!, null)
|
|
||||||
: null,
|
|
||||||
onTapActionAtPositionCallback: !responsiveUtils.isScreenWithShortestSide(context) &&
|
|
||||||
lastEmailOfThread != null
|
|
||||||
? (position) => onMoreActionClick?.call(lastEmailOfThread!, position)
|
? (position) => onMoreActionClick?.call(lastEmailOfThread!, position)
|
||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
@@ -181,3 +168,34 @@ class ThreadDetailAppBar extends StatelessWidget {
|
|||||||
return isSupportedDevice || isSearchRunning;
|
return isSupportedDevice || isSearchRunning;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _ThreadDetailAppBarButton extends StatelessWidget {
|
||||||
|
const _ThreadDetailAppBarButton({
|
||||||
|
required this.icon,
|
||||||
|
required this.tooltipMessage,
|
||||||
|
required this.onTapActionCallback,
|
||||||
|
required this.responsiveUtils,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String icon;
|
||||||
|
final String tooltipMessage;
|
||||||
|
final void Function(RelativeRect? position)? onTapActionCallback;
|
||||||
|
final ResponsiveUtils responsiveUtils;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final smallScreen = responsiveUtils.isScreenWithShortestSide(context);
|
||||||
|
return TMailButtonWidget.fromIcon(
|
||||||
|
icon: icon,
|
||||||
|
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
|
||||||
|
iconColor: EmailViewAppBarWidgetStyles.iconColor,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
tooltipMessage: AppLocalizations.of(context).more,
|
||||||
|
onTapActionCallback:
|
||||||
|
smallScreen ? () => onTapActionCallback?.call(null) : null,
|
||||||
|
onTapActionAtPositionCallback: !smallScreen
|
||||||
|
? (position) => onTapActionCallback?.call(position)
|
||||||
|
: null,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user