TF-3410 Update color, dimensions and alignments in EmailView

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-01-08 16:07:00 +07:00
committed by Dat H. Pham
parent d9def92781
commit b3aaef83a5
16 changed files with 92 additions and 58 deletions
@@ -18,7 +18,7 @@ class EmailAvatarBuilder extends StatelessWidget {
Widget build(BuildContext context) {
return (AvatarBuilder()
..text(emailSelected.getAvatarText())
..size(48)
..size(50)
..addTextStyle(const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 21,
@@ -278,10 +278,9 @@ class EmailView extends GetWidget<SingleEmailController> {
: controller.imagePaths.icNewer,
iconColor: controller.emailSupervisorController.nextEmailActivated
? AppColor.primaryColor
: AppColor.colorAttachmentIcon,
: EmailViewStyles.iconColor,
iconSize: EmailViewStyles.pageViewIconSize,
backgroundColor: Colors.transparent,
padding: EmailViewStyles.pageViewButtonPadding,
tooltipMessage: AppLocalizations.of(context).newer,
onTapActionCallback: controller.emailSupervisorController.moveToNextEmail
),
@@ -291,9 +290,8 @@ class EmailView extends GetWidget<SingleEmailController> {
: controller.imagePaths.icOlder,
iconColor: controller.emailSupervisorController.previousEmailActivated
? AppColor.primaryColor
: AppColor.colorAttachmentIcon,
: EmailViewStyles.iconColor,
iconSize: EmailViewStyles.pageViewIconSize,
padding: EmailViewStyles.pageViewButtonPadding,
backgroundColor: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).older,
onTapActionCallback: controller.emailSupervisorController.backToPreviousEmail
@@ -390,7 +388,7 @@ class EmailView extends GetWidget<SingleEmailController> {
if (PlatformInfo.isWeb) {
return Expanded(
child: Padding(
padding: const EdgeInsetsDirectional.only(start: 16, bottom: 16),
padding: EmailViewStyles.emailContentPadding,
child: LayoutBuilder(builder: (context, constraints) {
return Obx(() {
return Stack(
@@ -401,6 +399,8 @@ class EmailView extends GetWidget<SingleEmailController> {
contentHtml: allEmailContents,
mailtoDelegate: controller.openMailToLink,
direction: AppUtils.getCurrentDirection(context),
contentPadding: 0,
useDefaultFont: true,
),
if (controller.mailboxDashBoardController.isAttachmentDraggableAppActive)
PointerInterceptor(
@@ -438,6 +438,8 @@ class EmailView extends GetWidget<SingleEmailController> {
contentHtml: allEmailContents,
initialWidth: constraints.maxWidth,
direction: AppUtils.getCurrentDirection(context),
contentPadding: 0,
useDefaultFont: true,
onMailtoDelegateAction: controller.openMailToLink,
onScrollHorizontalEnd: controller.toggleScrollPhysicsPagerView,
onLoadWidthHtmlViewer: controller.emailSupervisorController.updateScrollPhysicPageView,
@@ -457,6 +459,8 @@ class EmailView extends GetWidget<SingleEmailController> {
contentHtml: allEmailContents,
initialWidth: constraints.maxWidth,
direction: AppUtils.getCurrentDirection(context),
contentPadding: 0,
useDefaultFont: true,
onMailtoDelegateAction: controller.openMailToLink,
onScrollHorizontalEnd: controller.toggleScrollPhysicsPagerView,
onLoadWidthHtmlViewer: controller.emailSupervisorController.updateScrollPhysicPageView,
@@ -10,7 +10,6 @@ class EmailViewAppBarWidgetStyles {
static const double radius = 20;
static double buttonIconSize = IconUtils.defaultIconSize;
static const double deleteButtonIconSize = 20;
static const double space = 5;
static double? heightIOS(BuildContext context, ResponsiveUtils responsiveUtils) {
if (responsiveUtils.isLandscapeMobile(context)) {
return 60;
@@ -24,6 +23,7 @@ class EmailViewAppBarWidgetStyles {
static const Color deletePermanentButtonColor = AppColor.colorDeletePermanentlyButton;
static const Color buttonActivatedColor = AppColor.primaryColor;
static const Color buttonDeactivatedColor = AppColor.colorAttachmentIcon;
static const Color iconColor = AppColor.steelGrayA540;
static EdgeInsetsGeometry paddingIOS(BuildContext context, ResponsiveUtils responsiveUtils) {
if (responsiveUtils.isLandscapeMobile(context)) {
@@ -35,5 +35,4 @@ class EmailViewAppBarWidgetStyles {
}
}
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.symmetric(horizontal: 16);
static const EdgeInsetsGeometry buttonPadding = EdgeInsets.all(5);
}
@@ -5,12 +5,12 @@ import 'package:flutter/material.dart';
class EmailViewBackButtonStyles {
static const double offsetWidth = 270;
static const Color iconColor = AppColor.primaryColor;
static const Color iconColor = AppColor.steelGrayA540;
static const EdgeInsetsGeometry rtlPadding = EdgeInsetsDirectional.symmetric(horizontal: 8);
static const TextStyle labelTextStyle = TextStyle(
fontSize: 17,
color: AppColor.colorTextButton
color: AppColor.steelGrayA540
);
}
@@ -10,6 +10,7 @@ class EmailViewBottomBarWidgetStyles {
static const double buttonIconSize = 20;
static const double radius = 20;
static const Color iconColor = AppColor.steelGrayA540;
static const Color topBorderColor = AppColor.colorDividerHorizontal;
static const Color backgroundColor = Colors.white;
static const Color buttonBackgroundColor = Colors.transparent;
@@ -29,7 +30,7 @@ class EmailViewBottomBarWidgetStyles {
) {
return TextStyle(
fontSize: responsiveUtils.isPortraitMobile(context) ? 12 : 16,
color: AppColor.colorTextButton
color: EmailViewBottomBarWidgetStyles.iconColor,
);
}
}
@@ -1,4 +1,5 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/icon_utils.dart';
import 'package:flutter/material.dart';
@@ -7,5 +8,13 @@ class EmailViewStyles {
static const double mobileContentVerticalMargin = 12;
static double pageViewIconSize = IconUtils.defaultIconSize;
static const EdgeInsetsGeometry pageViewButtonPadding = EdgeInsets.all(5);
static const Color iconColor = AppColor.steelGrayA540;
static const EdgeInsetsGeometry emailContentPadding =
EdgeInsetsDirectional.only(
start: 16,
bottom: 16,
end: 16,
top: 8,
);
}
@@ -236,8 +236,9 @@ class _EmailReceiverWidgetState extends State<EmailReceiverWidget> {
? emailAddress.asString()
: '${emailAddress.asString()},',
textStyle: Theme.of(context).textTheme.labelSmall?.copyWith(
color: Colors.black,
color: AppColor.steelGray400,
fontSize: 16,
fontWeight: FontWeight.w500,
),
padding: const EdgeInsetsDirectional.symmetric(vertical: 5, horizontal: 8),
backgroundColor: Colors.transparent,
@@ -66,6 +66,7 @@ class EmailViewAppBarWidget extends StatelessWidget {
child: Row(children: [
if (_supportDisplayMailboxNameTitle(context))
EmailViewBackButton(
imagePaths: _imagePaths,
onBackAction: onBackAction,
mailboxContain: mailboxContain,
isSearchActivated: isSearchActivated,
@@ -74,23 +75,22 @@ class EmailViewAppBarWidget extends StatelessWidget {
const Spacer(),
Row(
children: [
const SizedBox(width: EmailViewAppBarWidgetStyles.space),
if (optionsWidget != null) ... optionsWidget!,
TMailButtonWidget.fromIcon(
icon: _imagePaths.icMoveEmail,
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
iconColor: EmailViewAppBarWidgetStyles.iconColor,
tooltipMessage: AppLocalizations.of(context).move_message,
backgroundColor: Colors.transparent,
padding: EmailViewAppBarWidgetStyles.buttonPadding,
onTapActionCallback: () => onEmailActionClick?.call(presentationEmail, EmailActionType.moveToMailbox)
),
const SizedBox(width: EmailViewAppBarWidgetStyles.space),
TMailButtonWidget.fromIcon(
icon: presentationEmail.hasStarred
? _imagePaths.icStar
: _imagePaths.icUnStar,
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
iconColor: EmailViewAppBarWidgetStyles.iconColor,
backgroundColor: Colors.transparent,
padding: EmailViewAppBarWidgetStyles.buttonPadding,
tooltipMessage: presentationEmail.hasStarred
? AppLocalizations.of(context).not_starred
: AppLocalizations.of(context).mark_as_starred,
@@ -100,35 +100,30 @@ class EmailViewAppBarWidget extends StatelessWidget {
)
),
Obx(() {
if (_singleEmailController.currentEmailLoaded.value != null
&& PlatformInfo.isWeb
&& PlatformInfo.isCanvasKit
) {
return TMailButtonWidget.fromIcon(
icon: _imagePaths.icPrinter,
margin: const EdgeInsetsDirectional.only(start: EmailViewAppBarWidgetStyles.space),
iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize,
backgroundColor: Colors.transparent,
padding: EmailViewAppBarWidgetStyles.buttonPadding,
tooltipMessage: AppLocalizations.of(context).printAll,
onTapActionCallback: () => onEmailActionClick?.call(
presentationEmail,
EmailActionType.printAll
)
if (PlatformInfo.isWeb && PlatformInfo.isCanvasKit) {
return AbsorbPointer(
absorbing: _singleEmailController.currentEmailLoaded.value == null,
child: TMailButtonWidget.fromIcon(
icon: _imagePaths.icPrinter,
iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize,
iconColor: EmailViewAppBarWidgetStyles.iconColor,
backgroundColor: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).printAll,
onTapActionCallback: () => onEmailActionClick?.call(
presentationEmail,
EmailActionType.printAll,
),
),
);
} else {
return const SizedBox.shrink();
}
}),
const SizedBox(width: EmailViewAppBarWidgetStyles.space),
TMailButtonWidget.fromIcon(
icon: _imagePaths.icDeleteComposer,
iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize,
iconColor: EmailViewAppBarWidgetStyles.iconColor,
backgroundColor: Colors.transparent,
padding: EmailViewAppBarWidgetStyles.buttonPadding,
iconColor: canDeletePermanently
? EmailViewAppBarWidgetStyles.deletePermanentButtonColor
: EmailViewAppBarWidgetStyles.emptyTrashButtonColor,
tooltipMessage: canDeletePermanently
? AppLocalizations.of(context).delete_permanently
: AppLocalizations.of(context).move_to_trash,
@@ -140,12 +135,11 @@ class EmailViewAppBarWidget extends StatelessWidget {
}
}
),
const SizedBox(width: EmailViewAppBarWidgetStyles.space),
TMailButtonWidget.fromIcon(
icon: _imagePaths.icMore,
icon: _imagePaths.icMoreVertical,
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
iconColor: EmailViewAppBarWidgetStyles.iconColor,
backgroundColor: Colors.transparent,
padding: EmailViewAppBarWidgetStyles.buttonPadding,
tooltipMessage: AppLocalizations.of(context).more,
onTapActionCallback: _responsiveUtils.isScreenWithShortestSide(context)
? () => onMoreActionClick?.call(presentationEmail, null)
@@ -154,9 +148,6 @@ class EmailViewAppBarWidget extends StatelessWidget {
? (position) => onMoreActionClick?.call(presentationEmail, position)
: null
),
if(optionsWidget != null)
...optionsWidget!,
const SizedBox(width: EmailViewAppBarWidgetStyles.space),
]
),
])
@@ -3,22 +3,22 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_back_button_styles.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class EmailViewBackButton extends StatelessWidget {
final _imagePaths = Get.find<ImagePaths>();
final ImagePaths imagePaths;
final bool isSearchActivated;
final VoidCallback onBackAction;
final double maxWidth;
final PresentationMailbox? mailboxContain;
EmailViewBackButton({
const EmailViewBackButton({
super.key,
required this.imagePaths,
required this.onBackAction,
required this.isSearchActivated,
required this.maxWidth,
@@ -31,8 +31,8 @@ class EmailViewBackButton extends StatelessWidget {
return TMailButtonWidget(
text: mailboxContain?.getDisplayName(context) ?? '',
icon: DirectionUtils.isDirectionRTLByLanguage(context)
? _imagePaths.icArrowRight
: _imagePaths.icBack,
? imagePaths.icArrowRight
: imagePaths.icBack,
iconColor: EmailViewBackButtonStyles.iconColor,
textStyle: EmailViewBackButtonStyles.labelTextStyle,
backgroundColor: Colors.transparent,
@@ -49,8 +49,8 @@ class EmailViewBackButton extends StatelessWidget {
} else {
return TMailButtonWidget.fromIcon(
icon: DirectionUtils.isDirectionRTLByLanguage(context)
? _imagePaths.icArrowRight
: _imagePaths.icBack,
? imagePaths.icArrowRight
: imagePaths.icBack,
iconColor: EmailViewBackButtonStyles.iconColor,
padding: DirectionUtils.isDirectionRTLByLanguage(context)
? EmailViewBackButtonStyles.rtlPadding
@@ -62,6 +62,7 @@ class EmailViewBottomBarWidget extends StatelessWidget {
icon: _imagePaths.icReplyAll,
borderRadius: EmailViewBottomBarWidgetStyles.buttonRadius,
iconSize: EmailViewBottomBarWidgetStyles.buttonIconSize,
iconColor: EmailViewBottomBarWidgetStyles.iconColor,
textAlign: TextAlign.center,
flexibleText: true,
padding: EmailViewBottomBarWidgetStyles.buttonPadding,
@@ -116,6 +117,7 @@ class EmailViewBottomBarWidget extends StatelessWidget {
icon: _imagePaths.icReply,
borderRadius: EmailViewBottomBarWidgetStyles.buttonRadius,
iconSize: EmailViewBottomBarWidgetStyles.buttonIconSize,
iconColor: EmailViewBottomBarWidgetStyles.iconColor,
textAlign: TextAlign.center,
flexibleText: true,
padding: EmailViewBottomBarWidgetStyles.buttonPadding,
@@ -138,6 +140,7 @@ class EmailViewBottomBarWidget extends StatelessWidget {
icon: _imagePaths.icForward,
borderRadius: EmailViewBottomBarWidgetStyles.buttonRadius,
iconSize: EmailViewBottomBarWidgetStyles.buttonIconSize,
iconColor: EmailViewBottomBarWidgetStyles.iconColor,
textAlign: TextAlign.center,
flexibleText: true,
padding: EmailViewBottomBarWidgetStyles.buttonPadding,
@@ -158,6 +161,7 @@ class EmailViewBottomBarWidget extends StatelessWidget {
icon: _imagePaths.icNewMessage,
borderRadius: EmailViewBottomBarWidgetStyles.buttonRadius,
iconSize: EmailViewBottomBarWidgetStyles.buttonIconSize,
iconColor: EmailViewBottomBarWidgetStyles.iconColor,
textAlign: TextAlign.center,
flexibleText: true,
padding: EmailViewBottomBarWidgetStyles.buttonPadding,
@@ -18,7 +18,7 @@ class PrefixRecipientWidget extends StatelessWidget {
style: Theme.of(context).textTheme.labelMedium?.copyWith(
fontSize: 16,
fontWeight: FontWeight.w500,
color: AppColor.colorEmailAddressFull
color: AppColor.steelGray400
)
),
);