TF-3410 Sync changes between web and mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|||||||
+4
-3
@@ -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,
|
||||||
|
|||||||
+5
-14
@@ -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,
|
||||||
|
|||||||
+8
-7
@@ -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,
|
||||||
|
|||||||
+8
-7
@@ -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,
|
||||||
|
|||||||
+9
-8
@@ -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,
|
||||||
|
|||||||
+47
-42
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user