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.clearSelectedEmail();
mailboxDashBoardController.clearFilterMessageOption();
_disableAllSearchEmail();
@@ -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() {
@@ -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)))
@@ -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);
}
}
}
@@ -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,
));
}