TF-3410 Sync changes between web and mobile

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-01-09 03:30:08 +07:00
committed by Dat H. Pham
parent 700e8bc479
commit dfd596011b
17 changed files with 167 additions and 126 deletions
@@ -206,7 +206,6 @@ extension AppColor on Color {
static const colorLineComposer = Color(0xFFF4F4F4); static const colorLineComposer = Color(0xFFF4F4F4);
static const colorPrefixButtonComposer = Color(0xFF8B9CAF); static const colorPrefixButtonComposer = Color(0xFF8B9CAF);
static const colorRichButtonComposer = Color(0xFFAEAEC0); static const colorRichButtonComposer = Color(0xFFAEAEC0);
static const colorMobileRichButtonComposer = Color(0xFF8C9CAF);
static const colorSelected = Color(0xFFE3F1FF); static const colorSelected = Color(0xFFE3F1FF);
static const colorAttachmentBorder = Color(0xFFE5ECF3); static const colorAttachmentBorder = Color(0xFFE5ECF3);
static const colorProgressLoadingBackground = Color(0xFFE3F1FF); static const colorProgressLoadingBackground = Color(0xFFE3F1FF);
+3 -1
View File
@@ -125,7 +125,9 @@ class HtmlUtils {
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
${useDefaultFont ? '<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">' : ''} ${useDefaultFont && PlatformInfo.isMobile
? '<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">'
: ''}
<style> <style>
${useDefaultFont ? ''' ${useDefaultFont ? '''
body { body {
@@ -46,7 +46,7 @@ class ComposeFloatingButton extends StatelessWidget {
), ),
onPress: onTap, onPress: onTap,
scrollController: scrollController, scrollController: scrollController,
color: AppColor.primaryColor, color: AppColor.blue700,
width: 154, width: 154,
height: 60, height: 60,
animateIcon: false animateIcon: false
@@ -14,7 +14,7 @@ class BottomBarComposerWidgetStyle {
static const Color backgroundColor = Colors.white; static const Color backgroundColor = Colors.white;
static const Color iconColor = AppColor.steelGrayA540; static const Color iconColor = AppColor.steelGrayA540;
static const Color sendButtonBackgroundColor = AppColor.blue700; static const Color sendButtonBackgroundColor = AppColor.blue700;
static const Color selectedIconColor = AppColor.blue700; static const Color selectedIconColor = AppColor.steelGrayA540;
static const Color disabledIconColor = AppColor.colorRichButtonComposer; static const Color disabledIconColor = AppColor.colorRichButtonComposer;
static const Color selectedBackgroundColor = AppColor.colorSelected; static const Color selectedBackgroundColor = AppColor.colorSelected;
@@ -89,7 +89,9 @@ class EmailViewAppBarWidget extends StatelessWidget {
? _imagePaths.icStar ? _imagePaths.icStar
: _imagePaths.icUnStar, : _imagePaths.icUnStar,
iconSize: EmailViewAppBarWidgetStyles.buttonIconSize, iconSize: EmailViewAppBarWidgetStyles.buttonIconSize,
iconColor: EmailViewAppBarWidgetStyles.iconColor, iconColor: presentationEmail.hasStarred
? null
: EmailViewAppBarWidgetStyles.iconColor,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: presentationEmail.hasStarred tooltipMessage: presentationEmail.hasStarred
? AppLocalizations.of(context).not_starred ? AppLocalizations.of(context).not_starred
@@ -99,26 +101,21 @@ class EmailViewAppBarWidget extends StatelessWidget {
presentationEmail.hasStarred ? EmailActionType.unMarkAsStarred : EmailActionType.markAsStarred presentationEmail.hasStarred ? EmailActionType.unMarkAsStarred : EmailActionType.markAsStarred
) )
), ),
Obx(() { if (PlatformInfo.isWeb && PlatformInfo.isCanvasKit)
if (PlatformInfo.isWeb && PlatformInfo.isCanvasKit) { Obx(() => AbsorbPointer(
return AbsorbPointer( absorbing: _singleEmailController.currentEmailLoaded.value == null,
absorbing: _singleEmailController.currentEmailLoaded.value == null, child: TMailButtonWidget.fromIcon(
child: TMailButtonWidget.fromIcon( icon: _imagePaths.icPrinter,
icon: _imagePaths.icPrinter, iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize,
iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize, iconColor: EmailViewAppBarWidgetStyles.iconColor,
iconColor: EmailViewAppBarWidgetStyles.iconColor, backgroundColor: Colors.transparent,
backgroundColor: Colors.transparent, tooltipMessage: AppLocalizations.of(context).printAll,
tooltipMessage: AppLocalizations.of(context).printAll, onTapActionCallback: () => onEmailActionClick?.call(
onTapActionCallback: () => onEmailActionClick?.call( presentationEmail,
presentationEmail, EmailActionType.printAll,
EmailActionType.printAll,
),
), ),
); ),
} else { )),
return const SizedBox.shrink();
}
}),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
icon: _imagePaths.icDeleteComposer, icon: _imagePaths.icDeleteComposer,
iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize, iconSize: EmailViewAppBarWidgetStyles.deleteButtonIconSize,
@@ -288,31 +288,33 @@ class MailboxView extends BaseMailboxView {
child: Text( child: Text(
AppLocalizations.of(context).folders, AppLocalizations.of(context).folders,
style: const TextStyle( style: const TextStyle(
fontSize: 17, fontSize: 15,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold fontWeight: FontWeight.bold,
) ),
), ),
), ),
Row(children: [ Row(children: [
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
icon: controller.imagePaths.icSearchBar, icon: controller.imagePaths.icSearchBar,
iconColor: AppColor.primaryColor, iconColor: AppColor.steelGrayA540,
iconSize: 20,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).searchForFolders, tooltipMessage: AppLocalizations.of(context).searchForFolders,
onTapActionCallback: () => controller.openSearchViewAction(context) onTapActionCallback: () => controller.openSearchViewAction(context)
), ),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
icon: controller.imagePaths.icAddNewFolder, icon: controller.imagePaths.icAddNewFolder,
iconColor: AppColor.primaryColor, iconColor: AppColor.steelGrayA540,
iconSize: 20,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).newFolder, tooltipMessage: AppLocalizations.of(context).newFolder,
onTapActionCallback: () => controller.goToCreateNewMailboxView(context) onTapActionCallback: () => controller.goToCreateNewMailboxView(context)
), ),
]), ]),
]), ],
), ),
const SizedBox(height: 8), ),
Obx(() { Obx(() {
if (controller.personalMailboxIsNotEmpty) { if (controller.personalMailboxIsNotEmpty) {
return _buildMailboxCategory( return _buildMailboxCategory(
@@ -354,8 +356,9 @@ class MailboxView extends BaseMailboxView {
: controller.imagePaths.icArrowRight, : controller.imagePaths.icArrowRight,
tooltipMessage: AppLocalizations.of(context).collapse, tooltipMessage: AppLocalizations.of(context).collapse,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
padding: EdgeInsets.zero, padding: const EdgeInsets.all(5),
iconColor: AppColor.primaryColor, iconColor: Colors.black,
iconSize: 20,
onTapActionCallback: () => controller.toggleMailboxCategories(categories) onTapActionCallback: () => controller.toggleMailboxCategories(categories)
), ),
Expanded( Expanded(
@@ -363,10 +366,10 @@ class MailboxView extends BaseMailboxView {
categories.getTitle(context), categories.getTitle(context),
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: const TextStyle( style: Theme.of(context).textTheme.bodyMedium?.copyWith(
fontSize: 17, fontSize: 14,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold fontWeight: FontWeight.w400,
) )
) )
), ),
@@ -10,7 +10,7 @@ class MobileAppBarThreadWidgetStyle {
static const double minHeight = 56; static const double minHeight = 56;
static const Color backgroundColor = Colors.white; static const Color backgroundColor = Colors.white;
static const Color backButtonColor = AppColor.primaryColor; static const Color backButtonColor = AppColor.steelGrayA540;
static EdgeInsetsGeometry getPadding(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsetsGeometry getPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeTablet(context)) { if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeTablet(context)) {
@@ -23,8 +23,9 @@ class MobileAppBarThreadWidgetStyle {
static const EdgeInsetsGeometry titlePadding = EdgeInsets.symmetric(horizontal: 16); static const EdgeInsetsGeometry titlePadding = EdgeInsets.symmetric(horizontal: 16);
static const TextStyle emailCounterTitleStyle = TextStyle( static const TextStyle emailCounterTitleStyle = TextStyle(
fontSize: 17, fontSize: 15,
color: AppColor.primaryColor fontWeight: FontWeight.w400,
color: AppColor.steelGrayA540,
); );
static const TextStyle titleTextStyle = TextStyle( static const TextStyle titleTextStyle = TextStyle(
fontSize: 21, fontSize: 21,
@@ -6,30 +6,21 @@ import 'package:flutter/material.dart';
class SelectionWebAppBarThreadWidgetStyle { class SelectionWebAppBarThreadWidgetStyle {
static const double minHeight = 56; static const double minHeight = 56;
static const double iconSize = 20; static const double iconSize = 20;
static const double mediumIconSize = 22;
static const double closeButtonIconSize = 28;
static const Color backgroundColor = Colors.white; static const Color backgroundColor = Colors.white;
static const Color cancelButtonColor = AppColor.primaryColor; static const Color iconColor = AppColor.steelGrayA540;
static EdgeInsetsGeometry getPadding(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsetsGeometry getPadding(BuildContext context, ResponsiveUtils responsiveUtils) {
if (responsiveUtils.isMobile(context) || responsiveUtils.isTabletLarge(context)) { if (responsiveUtils.isMobile(context) || responsiveUtils.isTabletLarge(context)) {
return const EdgeInsets.symmetric(horizontal: 12, vertical: 8); return const EdgeInsets.symmetric(horizontal: 16, vertical: 8);
} else { } else {
return const EdgeInsets.symmetric(horizontal: 24, vertical: 8); return const EdgeInsets.symmetric(horizontal: 24, vertical: 8);
} }
} }
static const EdgeInsetsGeometry closeButtonPadding = EdgeInsets.all(3);
static const TextStyle emailCounterStyle = TextStyle( static const TextStyle emailCounterStyle = TextStyle(
fontSize: 17, fontSize: 15,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w400,
color: AppColor.primaryColor color: AppColor.steelGrayA540
); );
static Color getDeleteButtonColor(bool deletePermanentlyValid) {
return deletePermanentlyValid
? AppColor.colorDeletePermanentlyButton
: AppColor.primaryColor;
}
} }
@@ -71,6 +71,8 @@ class ThreadView extends GetWidget<ThreadController>
... [ ... [
Obx(() { Obx(() {
return AppBarThreadWidget( return AppBarThreadWidget(
responsiveUtils: controller.responsiveUtils,
imagePaths: controller.imagePaths,
mailboxSelected: controller.selectedMailbox, mailboxSelected: controller.selectedMailbox,
listEmailSelected: controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected, listEmailSelected: controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected,
selectMode: controller.mailboxDashBoardController.currentSelectMode.value, selectMode: controller.mailboxDashBoardController.currentSelectMode.value,
@@ -1,4 +1,6 @@
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_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:model/email/email_action_type.dart'; import 'package:model/email/email_action_type.dart';
@@ -16,6 +18,9 @@ typedef OnCancelEditThreadAction = void Function();
typedef OnEmailSelectionAction = void Function(EmailActionType, List<PresentationEmail>); typedef OnEmailSelectionAction = void Function(EmailActionType, List<PresentationEmail>);
class AppBarThreadWidget extends StatelessWidget { class AppBarThreadWidget extends StatelessWidget {
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction; final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction;
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction; final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
final OnOpenMailboxMenuActionClick openMailboxAction; final OnOpenMailboxMenuActionClick openMailboxAction;
@@ -28,6 +33,8 @@ class AppBarThreadWidget extends StatelessWidget {
const AppBarThreadWidget({ const AppBarThreadWidget({
Key? key, Key? key,
required this.responsiveUtils,
required this.imagePaths,
required this.mailboxSelected, required this.mailboxSelected,
required this.listEmailSelected, required this.listEmailSelected,
required this.selectMode, required this.selectMode,
@@ -44,6 +51,8 @@ class AppBarThreadWidget extends StatelessWidget {
if (PlatformInfo.isWeb) { if (PlatformInfo.isWeb) {
return WebAppBarThreadWidget( return WebAppBarThreadWidget(
key: const Key('web_app_bar_thread_widget'), key: const Key('web_app_bar_thread_widget'),
imagePaths: imagePaths,
responsiveUtils: responsiveUtils,
listEmailSelected: listEmailSelected, listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected, mailboxSelected: mailboxSelected,
selectMode: selectMode, selectMode: selectMode,
@@ -57,6 +66,8 @@ class AppBarThreadWidget extends StatelessWidget {
} else { } else {
return MobileAppBarThreadWidget( return MobileAppBarThreadWidget(
key: const Key('mobile_app_bar_thread_widget'), key: const Key('mobile_app_bar_thread_widget'),
imagePaths: imagePaths,
responsiveUtils: responsiveUtils,
listEmailSelected: listEmailSelected, listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected, mailboxSelected: mailboxSelected,
selectMode: selectMode, selectMode: selectMode,
@@ -3,7 +3,6 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart'; import 'package:model/mailbox/select_mode.dart';
@@ -14,9 +13,9 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/app_b
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class DefaultMobileAppBarThreadWidget extends StatelessWidget { class DefaultMobileAppBarThreadWidget extends StatelessWidget {
final _imagePaths = Get.find<ImagePaths>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final PresentationMailbox? mailboxSelected; final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected; final List<PresentationEmail> listEmailSelected;
final SelectMode selectMode; final SelectMode selectMode;
@@ -26,8 +25,10 @@ class DefaultMobileAppBarThreadWidget extends StatelessWidget {
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction; final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
final OnCancelEditThreadAction cancelEditThreadAction; final OnCancelEditThreadAction cancelEditThreadAction;
DefaultMobileAppBarThreadWidget({ const DefaultMobileAppBarThreadWidget({
super.key, super.key,
required this.responsiveUtils,
required this.imagePaths,
required this.listEmailSelected, required this.listEmailSelected,
required this.mailboxSelected, required this.mailboxSelected,
required this.selectMode, required this.selectMode,
@@ -43,13 +44,13 @@ class DefaultMobileAppBarThreadWidget extends StatelessWidget {
return LayoutBuilder(builder: (context, constraints) { return LayoutBuilder(builder: (context, constraints) {
return Container( return Container(
color: MobileAppBarThreadWidgetStyle.backgroundColor, color: MobileAppBarThreadWidgetStyle.backgroundColor,
padding: MobileAppBarThreadWidgetStyle.getPadding(context, _responsiveUtils), padding: MobileAppBarThreadWidgetStyle.getPadding(context, responsiveUtils),
constraints: const BoxConstraints(minHeight: MobileAppBarThreadWidgetStyle.minHeight), constraints: const BoxConstraints(minHeight: MobileAppBarThreadWidgetStyle.minHeight),
child: Row( child: Row(
children: [ children: [
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mobile_mailbox_menu_button'), key: const Key('mobile_mailbox_menu_button'),
icon: _imagePaths.icMenuDrawer, icon: imagePaths.icMenuDrawer,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
padding: MobileAppBarThreadWidgetStyle.mailboxMenuPadding, padding: MobileAppBarThreadWidgetStyle.mailboxMenuPadding,
maxWidth: MobileAppBarThreadWidgetStyle.buttonMaxWidth, maxWidth: MobileAppBarThreadWidgetStyle.buttonMaxWidth,
@@ -69,7 +70,7 @@ class DefaultMobileAppBarThreadWidget extends StatelessWidget {
), ),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mobile_filter_message_button'), key: const Key('mobile_filter_message_button'),
icon: _imagePaths.icFilter, icon: imagePaths.icFilter,
iconColor: MobileAppBarThreadWidgetStyle.getFilterButtonColor(filterOption), iconColor: MobileAppBarThreadWidgetStyle.getFilterButtonColor(filterOption),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
maxWidth: MobileAppBarThreadWidgetStyle.buttonMaxWidth, maxWidth: MobileAppBarThreadWidgetStyle.buttonMaxWidth,
@@ -4,7 +4,6 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
@@ -13,17 +12,19 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/app_b
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class DefaultWebAppBarThreadWidget extends StatelessWidget { class DefaultWebAppBarThreadWidget extends StatelessWidget {
final _imagePaths = Get.find<ImagePaths>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final PresentationMailbox? mailboxSelected; final PresentationMailbox? mailboxSelected;
final FilterMessageOption filterOption; final FilterMessageOption filterOption;
final OnOpenMailboxMenuActionClick openMailboxAction; final OnOpenMailboxMenuActionClick openMailboxAction;
final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction; final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction;
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction; final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
DefaultWebAppBarThreadWidget({ const DefaultWebAppBarThreadWidget({
super.key, super.key,
required this.responsiveUtils,
required this.imagePaths,
required this.mailboxSelected, required this.mailboxSelected,
required this.filterOption, required this.filterOption,
required this.openMailboxAction, required this.openMailboxAction,
@@ -36,13 +37,13 @@ class DefaultWebAppBarThreadWidget extends StatelessWidget {
return LayoutBuilder(builder: (context, constraints) { return LayoutBuilder(builder: (context, constraints) {
return Container( return Container(
color: DefaultWebAppBarThreadWidgetStyle.backgroundColor, color: DefaultWebAppBarThreadWidgetStyle.backgroundColor,
padding: DefaultWebAppBarThreadWidgetStyle.getPadding(context, _responsiveUtils), padding: DefaultWebAppBarThreadWidgetStyle.getPadding(context, responsiveUtils),
constraints: const BoxConstraints(minHeight: DefaultWebAppBarThreadWidgetStyle.minHeight), constraints: const BoxConstraints(minHeight: DefaultWebAppBarThreadWidgetStyle.minHeight),
child: Row( child: Row(
children: [ children: [
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mailbox_menu_button'), key: const Key('mailbox_menu_button'),
icon: _imagePaths.icMenuDrawer, icon: imagePaths.icMenuDrawer,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
padding: DefaultWebAppBarThreadWidgetStyle.mailboxMenuPadding, padding: DefaultWebAppBarThreadWidgetStyle.mailboxMenuPadding,
maxWidth: DefaultWebAppBarThreadWidgetStyle.buttonMaxWidth, maxWidth: DefaultWebAppBarThreadWidgetStyle.buttonMaxWidth,
@@ -63,7 +64,7 @@ class DefaultWebAppBarThreadWidget extends StatelessWidget {
), ),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('filter_message_button'), key: const Key('filter_message_button'),
icon: _imagePaths.icFilter, icon: imagePaths.icFilter,
iconColor: DefaultWebAppBarThreadWidgetStyle.getFilterButtonColor(filterOption), iconColor: DefaultWebAppBarThreadWidgetStyle.getFilterButtonColor(filterOption),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
maxWidth: DefaultWebAppBarThreadWidgetStyle.buttonMaxWidth, maxWidth: DefaultWebAppBarThreadWidgetStyle.buttonMaxWidth,
@@ -1,3 +1,5 @@
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
@@ -8,6 +10,9 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/defau
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/selection_mobile_app_bar_thread_widget.dart'; import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/selection_mobile_app_bar_thread_widget.dart';
class MobileAppBarThreadWidget extends StatelessWidget { class MobileAppBarThreadWidget extends StatelessWidget {
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final PresentationMailbox? mailboxSelected; final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected; final List<PresentationEmail> listEmailSelected;
final SelectMode selectMode; final SelectMode selectMode;
@@ -19,6 +24,8 @@ class MobileAppBarThreadWidget extends StatelessWidget {
const MobileAppBarThreadWidget({ const MobileAppBarThreadWidget({
super.key, super.key,
required this.responsiveUtils,
required this.imagePaths,
required this.listEmailSelected, required this.listEmailSelected,
required this.mailboxSelected, required this.mailboxSelected,
required this.selectMode, required this.selectMode,
@@ -34,6 +41,8 @@ class MobileAppBarThreadWidget extends StatelessWidget {
if (selectMode == SelectMode.ACTIVE) { if (selectMode == SelectMode.ACTIVE) {
return SelectionMobileAppBarThreadWidget( return SelectionMobileAppBarThreadWidget(
key: const Key('selection_mobile_app_bar_thread_widget'), key: const Key('selection_mobile_app_bar_thread_widget'),
imagePaths: imagePaths,
responsiveUtils: responsiveUtils,
listEmailSelected: listEmailSelected, listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected, mailboxSelected: mailboxSelected,
selectMode: selectMode, selectMode: selectMode,
@@ -45,6 +54,8 @@ class MobileAppBarThreadWidget extends StatelessWidget {
} else { } else {
return DefaultMobileAppBarThreadWidget( return DefaultMobileAppBarThreadWidget(
key: const Key('default_mobile_app_bar_thread_widget'), key: const Key('default_mobile_app_bar_thread_widget'),
imagePaths: imagePaths,
responsiveUtils: responsiveUtils,
listEmailSelected: listEmailSelected, listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected, mailboxSelected: mailboxSelected,
selectMode: selectMode, selectMode: selectMode,
@@ -3,7 +3,6 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart'; import 'package:model/mailbox/select_mode.dart';
@@ -13,9 +12,9 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/app_b
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class SelectionMobileAppBarThreadWidget extends StatelessWidget { class SelectionMobileAppBarThreadWidget extends StatelessWidget {
final _imagePaths = Get.find<ImagePaths>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final PresentationMailbox? mailboxSelected; final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected; final List<PresentationEmail> listEmailSelected;
final SelectMode selectMode; final SelectMode selectMode;
@@ -24,8 +23,10 @@ class SelectionMobileAppBarThreadWidget extends StatelessWidget {
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction; final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
final OnCancelEditThreadAction cancelEditThreadAction; final OnCancelEditThreadAction cancelEditThreadAction;
SelectionMobileAppBarThreadWidget({ const SelectionMobileAppBarThreadWidget({
super.key, super.key,
required this.responsiveUtils,
required this.imagePaths,
required this.listEmailSelected, required this.listEmailSelected,
required this.mailboxSelected, required this.mailboxSelected,
required this.selectMode, required this.selectMode,
@@ -40,14 +41,14 @@ class SelectionMobileAppBarThreadWidget extends StatelessWidget {
return LayoutBuilder(builder: (context, constraints) { return LayoutBuilder(builder: (context, constraints) {
return Container( return Container(
color: MobileAppBarThreadWidgetStyle.backgroundColor, color: MobileAppBarThreadWidgetStyle.backgroundColor,
padding: MobileAppBarThreadWidgetStyle.getPadding(context, _responsiveUtils), padding: MobileAppBarThreadWidgetStyle.getPadding(context, responsiveUtils),
constraints: const BoxConstraints(minHeight: MobileAppBarThreadWidgetStyle.minHeight), constraints: const BoxConstraints(minHeight: MobileAppBarThreadWidgetStyle.minHeight),
child: Row( child: Row(
children: [ children: [
TMailButtonWidget( TMailButtonWidget(
key: const Key('mobile_cancel_selection_thread_button'), key: const Key('mobile_cancel_selection_thread_button'),
text: '${listEmailSelected.length}', text: AppLocalizations.of(context).count_email_selected(listEmailSelected.length),
icon: _imagePaths.icBack, icon: imagePaths.icCancel,
iconColor: MobileAppBarThreadWidgetStyle.backButtonColor, iconColor: MobileAppBarThreadWidgetStyle.backButtonColor,
textStyle: MobileAppBarThreadWidgetStyle.emailCounterTitleStyle, textStyle: MobileAppBarThreadWidgetStyle.emailCounterTitleStyle,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
@@ -56,7 +57,7 @@ class SelectionMobileAppBarThreadWidget extends StatelessWidget {
const Spacer(), const Spacer(),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mobile_filter_message_button'), key: const Key('mobile_filter_message_button'),
icon: _imagePaths.icFilter, icon: imagePaths.icFilter,
iconColor: MobileAppBarThreadWidgetStyle.getFilterButtonColor(filterOption), iconColor: MobileAppBarThreadWidgetStyle.getFilterButtonColor(filterOption),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
maxWidth: MobileAppBarThreadWidgetStyle.buttonMaxWidth, maxWidth: MobileAppBarThreadWidgetStyle.buttonMaxWidth,
@@ -4,7 +4,6 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/email/email_action_type.dart'; import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/list_presentation_email_extension.dart'; import 'package:model/extensions/list_presentation_email_extension.dart';
@@ -16,9 +15,9 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/app_b
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class SelectionWebAppBarThreadWidget extends StatelessWidget { class SelectionWebAppBarThreadWidget extends StatelessWidget {
final _imagePaths = Get.find<ImagePaths>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final PresentationMailbox? mailboxSelected; final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected; final List<PresentationEmail> listEmailSelected;
final FilterMessageOption filterOption; final FilterMessageOption filterOption;
@@ -28,8 +27,10 @@ class SelectionWebAppBarThreadWidget extends StatelessWidget {
final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction; final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction;
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction; final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
SelectionWebAppBarThreadWidget({ const SelectionWebAppBarThreadWidget({
super.key, super.key,
required this.responsiveUtils,
required this.imagePaths,
required this.listEmailSelected, required this.listEmailSelected,
required this.mailboxSelected, required this.mailboxSelected,
required this.filterOption, required this.filterOption,
@@ -44,17 +45,17 @@ class SelectionWebAppBarThreadWidget extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
color: SelectionWebAppBarThreadWidgetStyle.backgroundColor, color: SelectionWebAppBarThreadWidgetStyle.backgroundColor,
padding: SelectionWebAppBarThreadWidgetStyle.getPadding(context, _responsiveUtils), width: double.infinity,
padding: SelectionWebAppBarThreadWidgetStyle.getPadding(context, responsiveUtils),
constraints: const BoxConstraints(minHeight: SelectionWebAppBarThreadWidgetStyle.minHeight), constraints: const BoxConstraints(minHeight: SelectionWebAppBarThreadWidgetStyle.minHeight),
child: Row( child: Row(
children: [ children: [
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('cancel_selection_button'), key: const Key('cancel_selection_button'),
icon: _imagePaths.icClose, icon: imagePaths.icCancel,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
iconColor: SelectionWebAppBarThreadWidgetStyle.cancelButtonColor, iconColor: SelectionWebAppBarThreadWidgetStyle.iconColor,
iconSize: SelectionWebAppBarThreadWidgetStyle.closeButtonIconSize, iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize,
padding: SelectionWebAppBarThreadWidgetStyle.closeButtonPadding,
tooltipMessage: AppLocalizations.of(context).cancel, tooltipMessage: AppLocalizations.of(context).cancel,
onTapActionCallback: cancelEditThreadAction, onTapActionCallback: cancelEditThreadAction,
), ),
@@ -71,46 +72,51 @@ class SelectionWebAppBarThreadWidget extends StatelessWidget {
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mark_as_read_email_selection_button'), key: const Key('mark_as_read_email_selection_button'),
icon: listEmailSelected.isAllEmailRead icon: listEmailSelected.isAllEmailRead
? _imagePaths.icUnread ? imagePaths.icUnread
: _imagePaths.icRead, : imagePaths.icRead,
iconSize: SelectionWebAppBarThreadWidgetStyle.mediumIconSize, iconColor: SelectionWebAppBarThreadWidgetStyle.iconColor,
iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: listEmailSelected.isAllEmailRead tooltipMessage: listEmailSelected.isAllEmailRead
? AppLocalizations.of(context).unread ? AppLocalizations.of(context).unread
: AppLocalizations.of(context).read, : AppLocalizations.of(context).read,
onTapActionCallback: () { onTapActionCallback: () {
return emailSelectionAction( return emailSelectionAction(
listEmailSelected.isAllEmailRead listEmailSelected.isAllEmailRead
? EmailActionType.markAsUnread ? EmailActionType.markAsUnread
: EmailActionType.markAsRead, : EmailActionType.markAsRead,
listEmailSelected listEmailSelected
); );
}, },
), ),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mark_as_star_email_selection_button'), key: const Key('mark_as_star_email_selection_button'),
icon: listEmailSelected.isAllEmailStarred icon: listEmailSelected.isAllEmailStarred
? _imagePaths.icUnStar ? imagePaths.icUnStar
: _imagePaths.icStar, : imagePaths.icStar,
iconSize: SelectionWebAppBarThreadWidgetStyle.mediumIconSize, iconColor: listEmailSelected.isAllEmailStarred
? SelectionWebAppBarThreadWidgetStyle.iconColor
: null,
iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: listEmailSelected.isAllEmailStarred tooltipMessage: listEmailSelected.isAllEmailStarred
? AppLocalizations.of(context).not_starred ? AppLocalizations.of(context).not_starred
: AppLocalizations.of(context).starred, : AppLocalizations.of(context).starred,
onTapActionCallback: () { onTapActionCallback: () {
return emailSelectionAction( return emailSelectionAction(
listEmailSelected.isAllEmailStarred listEmailSelected.isAllEmailStarred
? EmailActionType.unMarkAsStarred ? EmailActionType.unMarkAsStarred
: EmailActionType.markAsStarred, : EmailActionType.markAsStarred,
listEmailSelected listEmailSelected
); );
}, },
), ),
if (mailboxSelected?.isDrafts == false) if (mailboxSelected?.isDrafts == false)
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('move_email_selection_button'), key: const Key('move_email_selection_button'),
icon: _imagePaths.icMove, icon: imagePaths.icMoveMailbox,
iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize, iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize,
iconColor: SelectionWebAppBarThreadWidgetStyle.iconColor,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: AppLocalizations.of(context).move_message, tooltipMessage: AppLocalizations.of(context).move_message,
onTapActionCallback: () => emailSelectionAction(EmailActionType.moveToMailbox, listEmailSelected), onTapActionCallback: () => emailSelectionAction(EmailActionType.moveToMailbox, listEmailSelected),
@@ -119,34 +125,33 @@ class SelectionWebAppBarThreadWidget extends StatelessWidget {
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('mark_as_spam_email_selection_button'), key: const Key('mark_as_spam_email_selection_button'),
icon: mailboxSelected?.isSpam == true icon: mailboxSelected?.isSpam == true
? _imagePaths.icNotSpam ? imagePaths.icNotSpam
: _imagePaths.icSpam, : imagePaths.icSpam,
iconColor: SelectionWebAppBarThreadWidgetStyle.iconColor,
iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize, iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: mailboxSelected?.isSpam == true tooltipMessage: mailboxSelected?.isSpam == true
? AppLocalizations.of(context).un_spam ? AppLocalizations.of(context).un_spam
: AppLocalizations.of(context).mark_as_spam, : AppLocalizations.of(context).mark_as_spam,
onTapActionCallback: () { onTapActionCallback: () {
return mailboxSelected?.isSpam == true return mailboxSelected?.isSpam == true
? emailSelectionAction(EmailActionType.unSpam, listEmailSelected) ? emailSelectionAction(EmailActionType.unSpam, listEmailSelected)
: emailSelectionAction(EmailActionType.moveToSpam, listEmailSelected); : emailSelectionAction(EmailActionType.moveToSpam, listEmailSelected);
}, },
), ),
TMailButtonWidget.fromIcon( TMailButtonWidget.fromIcon(
key: const Key('delete_email_selection_button'), key: const Key('delete_email_selection_button'),
icon: _deletePermanentlyValid icon: imagePaths.icDeleteComposer,
? _imagePaths.icDeleteComposer iconColor: SelectionWebAppBarThreadWidgetStyle.iconColor,
: _imagePaths.icDelete,
iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize, iconSize: SelectionWebAppBarThreadWidgetStyle.iconSize,
iconColor: SelectionWebAppBarThreadWidgetStyle.getDeleteButtonColor(_deletePermanentlyValid),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
tooltipMessage: _deletePermanentlyValid tooltipMessage: _deletePermanentlyValid
? AppLocalizations.of(context).delete_permanently ? AppLocalizations.of(context).delete_permanently
: AppLocalizations.of(context).move_to_trash, : AppLocalizations.of(context).move_to_trash,
onTapActionCallback: () { onTapActionCallback: () {
return _deletePermanentlyValid return _deletePermanentlyValid
? emailSelectionAction(EmailActionType.deletePermanently, listEmailSelected) ? emailSelectionAction(EmailActionType.deletePermanently, listEmailSelected)
: emailSelectionAction(EmailActionType.moveToTrash, listEmailSelected); : emailSelectionAction(EmailActionType.moveToTrash, listEmailSelected);
}, },
), ),
] ]
@@ -1,4 +1,6 @@
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
@@ -10,6 +12,8 @@ import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/selec
class WebAppBarThreadWidget extends StatelessWidget { class WebAppBarThreadWidget extends StatelessWidget {
final ResponsiveUtils responsiveUtils;
final ImagePaths imagePaths;
final PresentationMailbox? mailboxSelected; final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected; final List<PresentationEmail> listEmailSelected;
final SelectMode selectMode; final SelectMode selectMode;
@@ -22,6 +26,8 @@ class WebAppBarThreadWidget extends StatelessWidget {
const WebAppBarThreadWidget({ const WebAppBarThreadWidget({
super.key, super.key,
required this.responsiveUtils,
required this.imagePaths,
required this.listEmailSelected, required this.listEmailSelected,
required this.mailboxSelected, required this.mailboxSelected,
required this.selectMode, required this.selectMode,
@@ -38,6 +44,8 @@ class WebAppBarThreadWidget extends StatelessWidget {
if (selectMode == SelectMode.INACTIVE) { if (selectMode == SelectMode.INACTIVE) {
return DefaultWebAppBarThreadWidget( return DefaultWebAppBarThreadWidget(
key: const Key('default_web_app_bar_thread_widget'), key: const Key('default_web_app_bar_thread_widget'),
imagePaths: imagePaths,
responsiveUtils: responsiveUtils,
mailboxSelected: mailboxSelected, mailboxSelected: mailboxSelected,
filterOption: filterOption, filterOption: filterOption,
openMailboxAction: openMailboxAction, openMailboxAction: openMailboxAction,
@@ -47,6 +55,8 @@ class WebAppBarThreadWidget extends StatelessWidget {
} else { } else {
return SelectionWebAppBarThreadWidget( return SelectionWebAppBarThreadWidget(
key: const Key('selection_web_app_bar_thread_widget'), key: const Key('selection_web_app_bar_thread_widget'),
imagePaths: imagePaths,
responsiveUtils: responsiveUtils,
listEmailSelected: listEmailSelected, listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected, mailboxSelected: mailboxSelected,
filterOption: filterOption, filterOption: filterOption,
@@ -53,11 +53,12 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{
icon: _listSelectionEmail.isAllEmailRead ? _imagePaths.icUnread : _imagePaths.icRead, icon: _listSelectionEmail.isAllEmailRead ? _imagePaths.icUnread : _imagePaths.icRead,
borderRadius: 0, borderRadius: 0,
iconSize: 20, iconSize: 20,
iconColor: AppColor.steelGrayA540,
flexibleText: true, flexibleText: true,
textAlign: TextAlign.center, textAlign: TextAlign.center,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
textStyle: const TextStyle(fontSize: 12, color: AppColor.colorTextButton), textStyle: const TextStyle(fontSize: 12, color: AppColor.steelGrayA540),
verticalDirection: _verticalDirection(context), verticalDirection: _verticalDirection(context),
onTapActionCallback: () { onTapActionCallback: () {
onPressEmailSelectionActionClick?.call( onPressEmailSelectionActionClick?.call(
@@ -76,11 +77,14 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{
icon: _listSelectionEmail.isAllEmailStarred ? _imagePaths.icUnStar : _imagePaths.icStar, icon: _listSelectionEmail.isAllEmailStarred ? _imagePaths.icUnStar : _imagePaths.icStar,
borderRadius: 0, borderRadius: 0,
iconSize: 20, iconSize: 20,
iconColor: _listSelectionEmail.isAllEmailStarred
? AppColor.steelGrayA540
: null,
flexibleText: true, flexibleText: true,
textAlign: TextAlign.center, textAlign: TextAlign.center,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
textStyle: const TextStyle(fontSize: 12, color: AppColor.colorTextButton), textStyle: const TextStyle(fontSize: 12, color: AppColor.steelGrayA540),
verticalDirection: _verticalDirection(context), verticalDirection: _verticalDirection(context),
onTapActionCallback: () { onTapActionCallback: () {
onPressEmailSelectionActionClick?.call( onPressEmailSelectionActionClick?.call(
@@ -95,14 +99,15 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{
child: TMailButtonWidget( child: TMailButtonWidget(
key: const Key('move_selected_email_to_mailbox_button'), key: const Key('move_selected_email_to_mailbox_button'),
text: AppLocalizations.of(context).move, text: AppLocalizations.of(context).move,
icon: _imagePaths.icMove, icon: _imagePaths.icMoveMailbox,
borderRadius: 0, borderRadius: 0,
iconSize: 20, iconSize: 20,
iconColor: AppColor.steelGrayA540,
textAlign: TextAlign.center, textAlign: TextAlign.center,
flexibleText: true, flexibleText: true,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
textStyle: const TextStyle(fontSize: 12, color: AppColor.colorTextButton), textStyle: const TextStyle(fontSize: 12, color: AppColor.steelGrayA540),
verticalDirection: _verticalDirection(context), verticalDirection: _verticalDirection(context),
onTapActionCallback: () { onTapActionCallback: () {
onPressEmailSelectionActionClick?.call(EmailActionType.moveToMailbox, _listSelectionEmail); onPressEmailSelectionActionClick?.call(EmailActionType.moveToMailbox, _listSelectionEmail);
@@ -119,11 +124,12 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{
icon: _currentMailbox?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam, icon: _currentMailbox?.isSpam == true ? _imagePaths.icNotSpam : _imagePaths.icSpam,
borderRadius: 0, borderRadius: 0,
iconSize: 20, iconSize: 20,
iconColor: AppColor.steelGrayA540,
flexibleText: true, flexibleText: true,
textAlign: TextAlign.center, textAlign: TextAlign.center,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
textStyle: const TextStyle(fontSize: 12, color: AppColor.colorTextButton), textStyle: const TextStyle(fontSize: 12, color: AppColor.steelGrayA540),
verticalDirection: _verticalDirection(context), verticalDirection: _verticalDirection(context),
onTapActionCallback: () { onTapActionCallback: () {
if (_currentMailbox?.isSpam == true) { if (_currentMailbox?.isSpam == true) {
@@ -138,15 +144,15 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{
child: TMailButtonWidget( child: TMailButtonWidget(
key: const Key('delete_selected_email_button'), key: const Key('delete_selected_email_button'),
text: AppLocalizations.of(context).delete, text: AppLocalizations.of(context).delete,
icon: canDeletePermanently ? _imagePaths.icDeleteComposer : _imagePaths.icDelete, icon: _imagePaths.icDeleteComposer,
iconColor: canDeletePermanently ? AppColor.colorDeletePermanentlyButton : AppColor.primaryColor,
borderRadius: 0, borderRadius: 0,
iconSize: 20, iconSize: 20,
iconColor: AppColor.steelGrayA540,
flexibleText: true, flexibleText: true,
textAlign: TextAlign.center, textAlign: TextAlign.center,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
textStyle: const TextStyle(fontSize: 12, color: AppColor.colorTextButton), textStyle: const TextStyle(fontSize: 12, color: AppColor.steelGrayA540),
verticalDirection: _verticalDirection(context), verticalDirection: _verticalDirection(context),
onTapActionCallback: () { onTapActionCallback: () {
if (canDeletePermanently) { if (canDeletePermanently) {