From 1007845651a42c45780c90c3a6ba80a2042d4df4 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 3 Nov 2022 02:30:21 +0700 Subject: [PATCH] TF-1063 Change color style when select filter message option --- .../presentation/mailbox_controller.dart | 1 + .../mailbox_dashboard_controller.dart | 13 ++----- .../mailbox_dashboard_view_web.dart | 17 +++----- .../domain/model/filter_message_option.dart | 39 +++++++++++++++++++ .../presentation/thread_controller.dart | 14 +++---- 5 files changed, 55 insertions(+), 29 deletions(-) diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index eb6a261fe..ad352871f 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -370,6 +370,7 @@ class MailboxController extends BaseMailboxController { mailboxDashBoardController.setSelectedMailbox(presentationMailboxSelected); mailboxDashBoardController.clearSelectedEmail(); + mailboxDashBoardController.clearFilterMessageOption(); _disableAllSearchEmail(); diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 7eae795d2..839e91eae 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -406,6 +406,7 @@ class MailboxDashBoardController extends ReloadableController { bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE; void searchEmail(BuildContext context, String value) { + clearFilterMessageOption(); searchController.updateFilterEmail(text: SearchQuery(value)); dispatchAction(StartSearchEmailAction()); FocusScope.of(context).unfocus(); @@ -1039,16 +1040,8 @@ class MailboxDashBoardController extends ReloadableController { } } - bool filterMessageWithAttachmentIsActive () { - return filterMessageOption.value == FilterMessageOption.attachments; - } - - bool filterMessageUnreadIsActive () { - return filterMessageOption.value == FilterMessageOption.unread; - } - - bool filterMessageStarredIsActive () { - return filterMessageOption.value == FilterMessageOption.starred; + void clearFilterMessageOption() { + filterMessageOption.value = FilterMessageOption.all; } void markAsReadMailboxAction() { diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 60b72e95a..4af66a4cb 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -366,24 +366,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { .build(), ), const SizedBox(width: 16), - Obx(() => (ButtonBuilder(imagePaths.icFilterAdvanced) + Obx(() => (ButtonBuilder(controller.filterMessageOption.value.getIconSelected(imagePaths)) ..key(const Key('button_filter_messages')) ..context(context) - ..decoration(const BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(10)), - color: AppColor.colorButtonHeaderThread)) + ..decoration(BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: controller.filterMessageOption.value.getBackgroundColor())) ..paddingIcon(const EdgeInsets.only(right: 8)) ..size(16) ..padding(const EdgeInsets.symmetric(horizontal: 12, vertical: 8)) ..radiusSplash(10) - ..textStyle(TextStyle( - fontSize: 12, - color: controller.filterMessageOption.value == FilterMessageOption.all - ? AppColor.colorTextButtonHeaderThread - : AppColor.colorNameEmail, - fontWeight: controller.filterMessageOption.value == FilterMessageOption.all - ? FontWeight.normal - : FontWeight.w500)) + ..textStyle(controller.filterMessageOption.value.getTextStyle()) ..addIconAction(Padding( padding: const EdgeInsets.only(left: 8), child: SvgPicture.asset(imagePaths.icArrowDown, fit: BoxFit.fill))) diff --git a/lib/features/thread/domain/model/filter_message_option.dart b/lib/features/thread/domain/model/filter_message_option.dart index 43b0283d6..a9e901670 100644 --- a/lib/features/thread/domain/model/filter_message_option.dart +++ b/lib/features/thread/domain/model/filter_message_option.dart @@ -104,4 +104,43 @@ extension FilterMessageOptionExtension on FilterMessageOption { return imagePaths.icStar; } } + + String getIconSelected(ImagePaths imagePaths) { + switch(this) { + case FilterMessageOption.all: + return imagePaths.icFilterAdvanced; + case FilterMessageOption.unread: + case FilterMessageOption.attachments: + case FilterMessageOption.starred: + return imagePaths.icSelectedSB; + } + } + + Color getBackgroundColor() { + switch(this) { + case FilterMessageOption.all: + return AppColor.colorButtonHeaderThread; + case FilterMessageOption.unread: + case FilterMessageOption.attachments: + case FilterMessageOption.starred: + return AppColor.colorItemEmailSelectedDesktop; + } + } + + TextStyle getTextStyle() { + switch(this) { + case FilterMessageOption.all: + return const TextStyle( + fontSize: 12, + fontWeight: FontWeight.normal, + color: AppColor.colorTextButtonHeaderThread); + case FilterMessageOption.unread: + case FilterMessageOption.attachments: + case FilterMessageOption.starred: + return const TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: AppColor.colorTextButton); + } + } } \ No newline at end of file diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 595668d30..7e7017e25 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -635,7 +635,7 @@ class ThreadController extends BaseController { icon: newFilterOption.getIconToast(_imagePaths)); if (isSearchActive() || searchController.advancedSearchIsActivated.isTrue) { - _searchEmail(filterMessageOption: _getFilterCondition()); + _searchEmail(filterCondition: _getFilterCondition()); } else { refreshAllEmail(); } @@ -928,21 +928,21 @@ class ThreadController extends BaseController { searchController.clearTextSearch(); } - void _searchEmail({UnsignedInt? limit, EmailFilterCondition? filterMessageOption}) { + void _searchEmail({UnsignedInt? limit, EmailFilterCondition? filterCondition}) { if (_accountId != null && searchQuery != null) { searchController.activateSimpleSearch(); - filterMessageOption = EmailFilterCondition( - notKeyword: filterMessageOption?.notKeyword, - hasKeyword: filterMessageOption?.hasKeyword, - hasAttachment: filterMessageOption?.hasAttachment, + filterCondition = EmailFilterCondition( + notKeyword: filterCondition?.notKeyword, + hasKeyword: filterCondition?.hasKeyword, + hasAttachment: filterCondition?.hasAttachment, ); consumeState(_searchEmailInteractor.execute( _accountId!, limit: limit ?? ThreadConstants.defaultLimit, sort: _sortOrder, - filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: filterMessageOption), + filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: filterCondition), properties: ThreadConstants.propertiesDefault, )); }