TF-1063 Change color style when select filter message option

This commit is contained in:
dab246
2022-11-03 02:30:21 +07:00
committed by Dat H. Pham
parent 51b86c151c
commit 1007845651
5 changed files with 55 additions and 29 deletions
@@ -370,6 +370,7 @@ class MailboxController extends BaseMailboxController {
mailboxDashBoardController.setSelectedMailbox(presentationMailboxSelected); mailboxDashBoardController.setSelectedMailbox(presentationMailboxSelected);
mailboxDashBoardController.clearSelectedEmail(); mailboxDashBoardController.clearSelectedEmail();
mailboxDashBoardController.clearFilterMessageOption();
_disableAllSearchEmail(); _disableAllSearchEmail();
@@ -406,6 +406,7 @@ class MailboxDashBoardController extends ReloadableController {
bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE; bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE;
void searchEmail(BuildContext context, String value) { void searchEmail(BuildContext context, String value) {
clearFilterMessageOption();
searchController.updateFilterEmail(text: SearchQuery(value)); searchController.updateFilterEmail(text: SearchQuery(value));
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
@@ -1039,16 +1040,8 @@ class MailboxDashBoardController extends ReloadableController {
} }
} }
bool filterMessageWithAttachmentIsActive () { void clearFilterMessageOption() {
return filterMessageOption.value == FilterMessageOption.attachments; filterMessageOption.value = FilterMessageOption.all;
}
bool filterMessageUnreadIsActive () {
return filterMessageOption.value == FilterMessageOption.unread;
}
bool filterMessageStarredIsActive () {
return filterMessageOption.value == FilterMessageOption.starred;
} }
void markAsReadMailboxAction() { void markAsReadMailboxAction() {
@@ -366,24 +366,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
.build(), .build(),
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
Obx(() => (ButtonBuilder(imagePaths.icFilterAdvanced) Obx(() => (ButtonBuilder(controller.filterMessageOption.value.getIconSelected(imagePaths))
..key(const Key('button_filter_messages')) ..key(const Key('button_filter_messages'))
..context(context) ..context(context)
..decoration(const BoxDecoration( ..decoration(BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)), borderRadius: const BorderRadius.all(Radius.circular(10)),
color: AppColor.colorButtonHeaderThread)) color: controller.filterMessageOption.value.getBackgroundColor()))
..paddingIcon(const EdgeInsets.only(right: 8)) ..paddingIcon(const EdgeInsets.only(right: 8))
..size(16) ..size(16)
..padding(const EdgeInsets.symmetric(horizontal: 12, vertical: 8)) ..padding(const EdgeInsets.symmetric(horizontal: 12, vertical: 8))
..radiusSplash(10) ..radiusSplash(10)
..textStyle(TextStyle( ..textStyle(controller.filterMessageOption.value.getTextStyle())
fontSize: 12,
color: controller.filterMessageOption.value == FilterMessageOption.all
? AppColor.colorTextButtonHeaderThread
: AppColor.colorNameEmail,
fontWeight: controller.filterMessageOption.value == FilterMessageOption.all
? FontWeight.normal
: FontWeight.w500))
..addIconAction(Padding( ..addIconAction(Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
child: SvgPicture.asset(imagePaths.icArrowDown, fit: BoxFit.fill))) child: SvgPicture.asset(imagePaths.icArrowDown, fit: BoxFit.fill)))
@@ -104,4 +104,43 @@ extension FilterMessageOptionExtension on FilterMessageOption {
return imagePaths.icStar; 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);
}
}
} }
@@ -635,7 +635,7 @@ class ThreadController extends BaseController {
icon: newFilterOption.getIconToast(_imagePaths)); icon: newFilterOption.getIconToast(_imagePaths));
if (isSearchActive() || searchController.advancedSearchIsActivated.isTrue) { if (isSearchActive() || searchController.advancedSearchIsActivated.isTrue) {
_searchEmail(filterMessageOption: _getFilterCondition()); _searchEmail(filterCondition: _getFilterCondition());
} else { } else {
refreshAllEmail(); refreshAllEmail();
} }
@@ -928,21 +928,21 @@ class ThreadController extends BaseController {
searchController.clearTextSearch(); searchController.clearTextSearch();
} }
void _searchEmail({UnsignedInt? limit, EmailFilterCondition? filterMessageOption}) { void _searchEmail({UnsignedInt? limit, EmailFilterCondition? filterCondition}) {
if (_accountId != null && searchQuery != null) { if (_accountId != null && searchQuery != null) {
searchController.activateSimpleSearch(); searchController.activateSimpleSearch();
filterMessageOption = EmailFilterCondition( filterCondition = EmailFilterCondition(
notKeyword: filterMessageOption?.notKeyword, notKeyword: filterCondition?.notKeyword,
hasKeyword: filterMessageOption?.hasKeyword, hasKeyword: filterCondition?.hasKeyword,
hasAttachment: filterMessageOption?.hasAttachment, hasAttachment: filterCondition?.hasAttachment,
); );
consumeState(_searchEmailInteractor.execute( consumeState(_searchEmailInteractor.execute(
_accountId!, _accountId!,
limit: limit ?? ThreadConstants.defaultLimit, limit: limit ?? ThreadConstants.defaultLimit,
sort: _sortOrder, sort: _sortOrder,
filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: filterMessageOption), filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: filterCondition),
properties: ThreadConstants.propertiesDefault, properties: ThreadConstants.propertiesDefault,
)); ));
} }