From 546627b9dfc8554ad9c9d988dd2c0b16c3346759 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 4 Aug 2022 11:26:16 +0700 Subject: [PATCH] TF-691 Update title and add option all mailbox in destination picker --- core/lib/presentation/utils/style_utils.dart | 4 +- .../presentation/destination_picker_view.dart | 37 +++++++------- .../presentation/model/mailbox_actions.dart | 48 +++++++++++++++++-- .../advanced_filter_controller.dart | 2 +- .../advanced_search_filter_form.dart | 9 ++++ lib/l10n/intl_messages.arb | 8 +++- lib/main/localizations/app_localizations.dart | 7 +++ 7 files changed, 92 insertions(+), 23 deletions(-) diff --git a/core/lib/presentation/utils/style_utils.dart b/core/lib/presentation/utils/style_utils.dart index 4917ddefa..f9fd44ba7 100644 --- a/core/lib/presentation/utils/style_utils.dart +++ b/core/lib/presentation/utils/style_utils.dart @@ -9,5 +9,7 @@ class CommonTextStyle { fontWeight: FontWeight.normal, ); - static final defaultTextOverFlow = BuildUtils.isWeb ? null : TextOverflow.ellipsis; + static final defaultTextOverFlow = BuildUtils.isWeb + ? TextOverflow.fade + : TextOverflow.ellipsis; } \ No newline at end of file diff --git a/lib/features/destination_picker/presentation/destination_picker_view.dart b/lib/features/destination_picker/presentation/destination_picker_view.dart index 44bc59fe4..f9dff11ba 100644 --- a/lib/features/destination_picker/presentation/destination_picker_view.dart +++ b/lib/features/destination_picker/presentation/destination_picker_view.dart @@ -55,7 +55,9 @@ class DestinationPickerView extends GetWidget width: _getWidthDestinationPicker(context), child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(14)), - child: _buildDestinationPickerWebWidget(context, actions) + child: GestureDetector( + onTap: () => {}, + child: _buildDestinationPickerWebWidget(context, actions)) ) ) ) @@ -141,9 +143,7 @@ class DestinationPickerView extends GetWidget ? _buildInputSearchFormWidget(context) : const SizedBox.shrink()), Expanded(child: Container( - color: actions == MailboxActions.create - ? AppColor.colorBgMailbox - : Colors.white, + color: actions?.getBackgroundColor(), child: _buildBodyDestinationPicker(context, actions))) ]); } @@ -234,12 +234,12 @@ class DestinationPickerView extends GetWidget return SingleChildScrollView( physics: const ClampingScrollPhysics(), child: Column(children: [ - if (actions == MailboxActions.moveEmail || actions == MailboxActions.move) + if (actions?.hasSearchActive() == true) _buildSearchBarWidget(context), _buildLoadingView(), if (actions == MailboxActions.create && !BuildUtils.isWeb && _responsiveUtils.isScreenWithShortestSide(context)) const SizedBox(height: 12), - if (actions == MailboxActions.create || actions == MailboxActions.move) + if (actions?.hasAllMailboxDefault() == true) _buildUnifiedMailbox(context, actions), const SizedBox(height: 12), Obx(() => controller.defaultMailboxHasChild @@ -259,7 +259,7 @@ class DestinationPickerView extends GetWidget } Widget _buildMailboxCategory(BuildContext context, MailboxCategories categories, MailboxNode mailboxNode, MailboxActions? actions) { - if (actions == MailboxActions.moveEmail || actions == MailboxActions.move) { + if (actions?.canCollapseMailboxGroup() == false) { return _buildBodyMailboxCategory(context, categories, mailboxNode, actions); } return Column(children: [ @@ -308,10 +308,8 @@ class DestinationPickerView extends GetWidget EdgeInsets _marginMailboxList(BuildContext context, MailboxActions? actions) { if (BuildUtils.isWeb) { return EdgeInsets.only( - left: actions == MailboxActions.moveEmail - || actions == MailboxActions.move ? 0 : 16, - right: actions == MailboxActions.moveEmail - || actions == MailboxActions.move ? 0 : 16); + left: actions?.canCollapseMailboxGroup() == false ? 0 : 16, + right: actions?.canCollapseMailboxGroup() == false ? 0 : 16); } else { return EdgeInsets.only( left: _responsiveUtils.isLandscapeMobile(context) ? 0 : 16, @@ -357,9 +355,14 @@ class DestinationPickerView extends GetWidget Widget _buildListMailboxSearched(BuildContext context) { return Obx(() => Container( - margin: const EdgeInsets.only(right: 8, bottom: 12), + margin: const EdgeInsets.only( + right: 8, + bottom: 12, + top: BuildUtils.isWeb ? 8 : 0), decoration: _responsiveUtils.isDesktop(context) - ? BoxDecoration(borderRadius: BorderRadius.circular(14), color: Colors.white) + ? BoxDecoration( + borderRadius: BorderRadius.circular(14), + color: Colors.white) : null, child: ListView.builder( padding: const EdgeInsets.only(left: 16, right: 8), @@ -382,14 +385,16 @@ class DestinationPickerView extends GetWidget } Widget _buildUnifiedMailbox(BuildContext context, MailboxActions? actions) { - if (actions == MailboxActions.move) { + if (actions == MailboxActions.move || actions == MailboxActions.select) { return InkWell( onTap: () => controller.selectMailboxAction(PresentationMailbox.unifiedMailbox), child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(14)), child: Container( color: Colors.white, - margin: const EdgeInsets.only(left: BuildUtils.isWeb ? 8 : 0), + margin: const EdgeInsets.only( + left: BuildUtils.isWeb ? 8 : 0, + top: 8), padding: const EdgeInsets.only(left: 16, top: 16), child: Row(children: [ SvgPicture.asset( @@ -399,7 +404,7 @@ class DestinationPickerView extends GetWidget fit: BoxFit.fill), const SizedBox(width: 8), Expanded(child: Text( - AppLocalizations.of(context).default_mailbox, + AppLocalizations.of(context).allMailboxes, maxLines: 1, overflow: CommonTextStyle.defaultTextOverFlow, style: const TextStyle( diff --git a/lib/features/mailbox/presentation/model/mailbox_actions.dart b/lib/features/mailbox/presentation/model/mailbox_actions.dart index ce89a1198..1b52f67a0 100644 --- a/lib/features/mailbox/presentation/model/mailbox_actions.dart +++ b/lib/features/mailbox/presentation/model/mailbox_actions.dart @@ -1,6 +1,5 @@ import 'package:core/core.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -21,11 +20,10 @@ extension MailboxActionsExtension on MailboxActions { case MailboxActions.create: return AppLocalizations.of(context).mailbox_location; case MailboxActions.moveEmail: - return AppLocalizations.of(context).move_message; + case MailboxActions.move: + return AppLocalizations.of(context).moveTo; case MailboxActions.select: return AppLocalizations.of(context).selectMailbox; - case MailboxActions.move: - return AppLocalizations.of(context).allMailboxes; default: return ''; } @@ -69,4 +67,46 @@ extension MailboxActionsExtension on MailboxActions { return Colors.black; } } + + Color getBackgroundColor() { + switch(this) { + case MailboxActions.create: + return AppColor.colorBgMailbox; + default: + return Colors.white; + } + } + + bool hasSearchActive() { + switch(this) { + case MailboxActions.moveEmail: + case MailboxActions.move: + case MailboxActions.select: + return true; + default: + return false; + } + } + + bool hasAllMailboxDefault() { + switch(this) { + case MailboxActions.create: + case MailboxActions.move: + case MailboxActions.select: + return true; + default: + return false; + } + } + + bool canCollapseMailboxGroup() { + switch(this) { + case MailboxActions.moveEmail: + case MailboxActions.move: + case MailboxActions.select: + return false; + default: + return true; + } + } } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart index 04469997a..7b762c8a7 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart @@ -113,7 +113,7 @@ class AdvancedFilterController extends GetxController { AppRoutes.DESTINATION_PICKER, arguments: DestinationPickerArguments( _mailboxDashBoardController.accountId.value!, - MailboxActions.moveEmail)); + MailboxActions.select)); searchController.updateFilterEmail(mailbox: destinationMailbox); mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(destinationMailbox.name?.name); diff --git a/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart b/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart index 5442e3db4..b0fed339b 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart @@ -57,6 +57,7 @@ class AdvancedSearchInputForm extends GetWidget context: context, advancedSearchFilterField: AdvancedSearchFilterField.mailBox, isSelectFormList: true, + mouseCursor: SystemMouseCursors.click, onTap: () async { await controller.selectedMailBox(); }), @@ -118,6 +119,7 @@ class AdvancedSearchInputForm extends GetWidget required TextEditingController textEditingController, VoidCallback? onTap, bool isSelectFormList = false, + MouseCursor? mouseCursor, }) { final child = [ SizedBox( @@ -137,6 +139,7 @@ class AdvancedSearchInputForm extends GetWidget isSelectFormList: isSelectFormList, onTap: onTap, context: context, + mouseCursor: mouseCursor, advancedSearchFilterField: advancedSearchFilterField, textEditingController: textEditingController, ) @@ -148,6 +151,7 @@ class AdvancedSearchInputForm extends GetWidget isSelectFormList: isSelectFormList, onTap: onTap, context: context, + mouseCursor: mouseCursor, advancedSearchFilterField: advancedSearchFilterField, textEditingController: textEditingController, ) @@ -157,6 +161,7 @@ class AdvancedSearchInputForm extends GetWidget isSelectFormList: isSelectFormList, onTap: onTap, context: context, + mouseCursor: mouseCursor, advancedSearchFilterField: advancedSearchFilterField, textEditingController: textEditingController, ), @@ -181,6 +186,7 @@ class AdvancedSearchInputForm extends GetWidget required TextEditingController textEditingController, VoidCallback? onTap, bool isSelectFormList = false, + MouseCursor? mouseCursor, }) { switch (advancedSearchFilterField) { case AdvancedSearchFilterField.date: @@ -190,6 +196,7 @@ class AdvancedSearchInputForm extends GetWidget isSelectFormList: isSelectFormList, onTap: onTap, context: context, + mouseCursor: mouseCursor, advancedSearchFilterField: advancedSearchFilterField, textEditingController: textEditingController, ); @@ -304,10 +311,12 @@ class AdvancedSearchInputForm extends GetWidget required TextEditingController textEditingController, VoidCallback? onTap, bool isSelectFormList = false, + MouseCursor? mouseCursor, }) { return TextField( controller: textEditingController, readOnly: isSelectFormList, + mouseCursor: mouseCursor, onTap: onTap, decoration: InputDecoration( filled: true, diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index 45a86d27b..835ddfad7 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2022-08-03T00:27:26.944930", + "@@last_modified": "2022-08-04T11:25:19.254781", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -1747,5 +1747,11 @@ "type": "text", "placeholders_order": [], "placeholders": {} + }, + "moveTo": "Move To", + "@moveTo": { + "type": "text", + "placeholders_order": [], + "placeholders": {} } } \ No newline at end of file diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index 55c0dea1c..3e32226d7 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -1791,4 +1791,11 @@ class AppLocalizations { 'Bulleted list', name: 'bulletedList'); } + + String get moveTo { + return Intl.message( + 'Move To', + name: 'moveTo', + ); + } } \ No newline at end of file