add advanced search model and move all search model to folder search
This commit is contained in:
@@ -7,7 +7,7 @@ import 'package:tmail_ui_user/features/base/mixin/network_connection_mixin.dart'
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
|
||||
abstract class BaseMailboxDashBoardView extends GetWidget<MailboxDashBoardController>
|
||||
with NetworkConnectionMixin, UserSettingPopupMenuMixin, FilterEmailPopupMenuMixin,
|
||||
|
||||
@@ -49,8 +49,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
||||
|
||||
@@ -10,7 +10,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_sea
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/recent_search_item_tile_widget.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/app_setting.dart';
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum AdvancedSearchFilterField {
|
||||
form,
|
||||
to,
|
||||
subject,
|
||||
hasKeyword,
|
||||
notKeyword,
|
||||
mailBox,
|
||||
date,
|
||||
hasAttachment;
|
||||
|
||||
String getTitle(BuildContext context) {
|
||||
switch (this) {
|
||||
case AdvancedSearchFilterField.form:
|
||||
return AppLocalizations.of(context).form;
|
||||
case AdvancedSearchFilterField.to:
|
||||
return AppLocalizations.of(context).to;
|
||||
case AdvancedSearchFilterField.subject:
|
||||
return AppLocalizations.of(context).subject;
|
||||
case AdvancedSearchFilterField.hasKeyword:
|
||||
return AppLocalizations.of(context).hasTheWords;
|
||||
case AdvancedSearchFilterField.notKeyword:
|
||||
return AppLocalizations.of(context).doesNotHave;
|
||||
case AdvancedSearchFilterField.mailBox:
|
||||
return AppLocalizations.of(context).mailbox;
|
||||
case AdvancedSearchFilterField.date:
|
||||
return AppLocalizations.of(context).date;
|
||||
case AdvancedSearchFilterField.hasAttachment:
|
||||
return AppLocalizations.of(context).hasAttachment;
|
||||
}
|
||||
}
|
||||
|
||||
String getHintText(BuildContext context) {
|
||||
switch (this) {
|
||||
case AdvancedSearchFilterField.form:
|
||||
case AdvancedSearchFilterField.to:
|
||||
return AppLocalizations.of(context).nameOrEmailAddress;
|
||||
case AdvancedSearchFilterField.subject:
|
||||
case AdvancedSearchFilterField.hasKeyword:
|
||||
case AdvancedSearchFilterField.notKeyword:
|
||||
return AppLocalizations.of(context).enterSearchTerm;
|
||||
case AdvancedSearchFilterField.mailBox:
|
||||
return AppLocalizations.of(context).allMails;
|
||||
case AdvancedSearchFilterField.date:
|
||||
return AppLocalizations.of(context).allTime;
|
||||
case AdvancedSearchFilterField.hasAttachment:
|
||||
return AppLocalizations.of(context).hasAttachment;
|
||||
}
|
||||
}
|
||||
|
||||
TextStyle getTitleTextStyle() {
|
||||
return const TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: AppColor.colorContentEmail);
|
||||
}
|
||||
|
||||
TextStyle getHintTextStyle() {
|
||||
return const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: AppColor.colorHintSearchBar);
|
||||
}
|
||||
}
|
||||
+7
-10
@@ -4,18 +4,15 @@ import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum EmailReceiveTimeType {
|
||||
anyTime,
|
||||
allTime,
|
||||
last7Days,
|
||||
last30Days,
|
||||
last6Months,
|
||||
lastYears,
|
||||
}
|
||||
|
||||
extension EmailReceiveTimeTypeExtension on EmailReceiveTimeType {
|
||||
lastYear;
|
||||
|
||||
String getTitle(BuildContext context) {
|
||||
switch(this) {
|
||||
case EmailReceiveTimeType.anyTime:
|
||||
case EmailReceiveTimeType.allTime:
|
||||
return AppLocalizations.of(context).anyTime;
|
||||
case EmailReceiveTimeType.last7Days:
|
||||
return AppLocalizations.of(context).last7Days;
|
||||
@@ -23,14 +20,14 @@ extension EmailReceiveTimeTypeExtension on EmailReceiveTimeType {
|
||||
return AppLocalizations.of(context).last30Days;
|
||||
case EmailReceiveTimeType.last6Months:
|
||||
return AppLocalizations.of(context).last6Months;
|
||||
case EmailReceiveTimeType.lastYears:
|
||||
case EmailReceiveTimeType.lastYear:
|
||||
return AppLocalizations.of(context).lastYears;
|
||||
}
|
||||
}
|
||||
|
||||
UTCDate? toUTCDate() {
|
||||
switch(this) {
|
||||
case EmailReceiveTimeType.anyTime:
|
||||
case EmailReceiveTimeType.allTime:
|
||||
return null;
|
||||
case EmailReceiveTimeType.last7Days:
|
||||
return UTCDate(DateTime.now().subtract(const Duration(days: 7)));
|
||||
@@ -38,8 +35,8 @@ extension EmailReceiveTimeTypeExtension on EmailReceiveTimeType {
|
||||
return UTCDate(DateTime.now().subtract(const Duration(days: 30)));
|
||||
case EmailReceiveTimeType.last6Months:
|
||||
return UTCDate(DateTime.now().subtract(const Duration(days: 180)));
|
||||
case EmailReceiveTimeType.lastYears:
|
||||
case EmailReceiveTimeType.lastYear:
|
||||
return UTCDate(DateTime.now().subtract(const Duration(days: 365)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
-14
@@ -1,16 +1,13 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum QuickSearchFilter {
|
||||
hasAttachment,
|
||||
last7Days,
|
||||
fromMe
|
||||
}
|
||||
|
||||
extension QuickSearchFilterExtension on QuickSearchFilter {
|
||||
fromMe;
|
||||
|
||||
String getTitle(BuildContext context, {EmailReceiveTimeType? receiveTimeType}) {
|
||||
switch(this) {
|
||||
@@ -26,10 +23,9 @@ extension QuickSearchFilterExtension on QuickSearchFilter {
|
||||
}
|
||||
}
|
||||
|
||||
String getIcon(ImagePaths imagePaths, List<QuickSearchFilter> listFilter) {
|
||||
final filterSelected = listFilter.contains(this);
|
||||
String getIcon(ImagePaths imagePaths, bool quickSearchFilterSelected) {
|
||||
|
||||
if (filterSelected) {
|
||||
if (quickSearchFilterSelected) {
|
||||
return imagePaths.icSelectedSB;
|
||||
} else {
|
||||
switch(this) {
|
||||
@@ -43,20 +39,18 @@ extension QuickSearchFilterExtension on QuickSearchFilter {
|
||||
}
|
||||
}
|
||||
|
||||
Color getBackgroundColor(List<QuickSearchFilter> listFilter) {
|
||||
final filterSelected = listFilter.contains(this);
|
||||
Color getBackgroundColor(bool quickSearchFilterSelected) {
|
||||
|
||||
if (filterSelected) {
|
||||
if (quickSearchFilterSelected) {
|
||||
return AppColor.colorItemEmailSelectedDesktop;
|
||||
} else {
|
||||
return AppColor.colorButtonHeaderThread;
|
||||
}
|
||||
}
|
||||
|
||||
TextStyle getTextStyle(List<QuickSearchFilter> listFilter) {
|
||||
final filterSelected = listFilter.contains(this);
|
||||
TextStyle getTextStyle(bool quickSearchFilterSelected) {
|
||||
|
||||
if (filterSelected) {
|
||||
if (quickSearchFilterSelected) {
|
||||
return const TextStyle(
|
||||
fontSize: 13,
|
||||
fontWeight: FontWeight.w500,
|
||||
@@ -40,8 +40,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/mark_as_ma
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
|
||||
@@ -8,8 +8,8 @@ import 'package:tmail_ui_user/features/email/presentation/model/composer_argumen
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/filter_email_popup_menu_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/recent_search_item_tile_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
@@ -684,8 +684,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
||||
fit: BoxFit.fill),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
filter.getTitle(context,
|
||||
receiveTimeType: controller.mailboxDashBoardController.emailReceiveTimeType.value),
|
||||
filter.getTitle(context, receiveTimeType: controller.mailboxDashBoardController.emailReceiveTimeType.value),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: filter.getTextStyle(controller.mailboxDashBoardController.listFilterQuickSearch),
|
||||
@@ -758,8 +757,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
||||
fit: BoxFit.fill),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
filter.getTitle(context,
|
||||
receiveTimeType: controller.mailboxDashBoardController.emailReceiveTimeType.value),
|
||||
filter.getTitle(context, receiveTimeType: controller.mailboxDashBoardController.emailReceiveTimeType.value),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: filter.getTextStyle(controller.mailboxDashBoardController.listFilterQuickSearch),
|
||||
|
||||
@@ -1453,4 +1453,88 @@ class AppLocalizations {
|
||||
return Intl.message('Server URL is not valid, please try again',
|
||||
name: 'wrongUrlMessage');
|
||||
}
|
||||
|
||||
String get form {
|
||||
return Intl.message(
|
||||
'From',
|
||||
name: 'form',
|
||||
);
|
||||
}
|
||||
|
||||
String get to {
|
||||
return Intl.message(
|
||||
'To',
|
||||
name: 'to',
|
||||
);
|
||||
}
|
||||
|
||||
String get subject {
|
||||
return Intl.message(
|
||||
'Subject',
|
||||
name: 'subject',
|
||||
);
|
||||
}
|
||||
|
||||
String get hasTheWords {
|
||||
return Intl.message(
|
||||
'Has the words',
|
||||
name: 'hasTheWords',
|
||||
);
|
||||
}
|
||||
|
||||
String get doesNotHave {
|
||||
return Intl.message(
|
||||
'Doesn’t have',
|
||||
name: 'doesNotHave',
|
||||
);
|
||||
}
|
||||
|
||||
String get mailbox {
|
||||
return Intl.message(
|
||||
'Mailbox',
|
||||
name: 'mailbox',
|
||||
);
|
||||
}
|
||||
|
||||
String get nameOrEmailAddress {
|
||||
return Intl.message(
|
||||
'Name or email address',
|
||||
name: 'nameOrEmailAddress',
|
||||
);
|
||||
}
|
||||
|
||||
String get enterSearchTerm {
|
||||
return Intl.message(
|
||||
'Enter search term',
|
||||
name: 'enterSearchTerm',
|
||||
);
|
||||
}
|
||||
|
||||
String get allMails {
|
||||
return Intl.message(
|
||||
'All mails',
|
||||
name: 'allMails',
|
||||
);
|
||||
}
|
||||
|
||||
String get allTime {
|
||||
return Intl.message(
|
||||
'All time',
|
||||
name: 'allTime',
|
||||
);
|
||||
}
|
||||
|
||||
String get search {
|
||||
return Intl.message(
|
||||
'Search',
|
||||
name: 'search',
|
||||
);
|
||||
}
|
||||
|
||||
String get clearFilter {
|
||||
return Intl.message(
|
||||
'Clear filter',
|
||||
name: 'clearFilter',
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user