From 11735ed1d7966263a277d83c9c67b41b129691d5 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 9 Mar 2022 14:32:21 +0700 Subject: [PATCH] TF-313 Apply new ui for AppBar EmailView --- .../{logo_tmail_v2.png => logo_tmail.png} | Bin .../{logo_tmail_v2.png => logo_tmail.png} | Bin assets/images/ic_calendar.svg | 6 - assets/images/ic_close.svg | 4 - assets/images/ic_composer_file_share.svg | 4 - .../{ic_delete_v2.svg => ic_delete.svg} | 0 assets/images/ic_delete_email.svg | 5 + assets/images/ic_flag.svg | 4 +- assets/images/ic_flag_v2.svg | 3 - assets/images/ic_flagged.svg | 3 - assets/images/ic_folder.svg | 3 - assets/images/ic_forward.svg | 5 +- assets/images/ic_forward_v2.svg | 3 - ...rchived_v2.svg => ic_mailbox_archived.svg} | 0 assets/images/ic_mailbox_draft.svg | 7 -- ...ox_drafts_v2.svg => ic_mailbox_drafts.svg} | 0 assets/images/ic_mailbox_folder.svg | 3 - assets/images/ic_mailbox_inbox.svg | 5 +- assets/images/ic_mailbox_inbox_v2.svg | 3 - assets/images/ic_mailbox_new_folder.svg | 4 - assets/images/ic_mailbox_sent.svg | 5 +- assets/images/ic_mailbox_sent_v2.svg | 3 - assets/images/ic_mailbox_spam.svg | 6 +- assets/images/ic_mailbox_spam_v2.svg | 3 - assets/images/ic_mailbox_trash.svg | 7 +- assets/images/ic_mailbox_trash_v2.svg | 3 - assets/images/{ic_move_v2.svg => ic_move.svg} | 0 assets/images/ic_offline.svg | 3 - assets/images/ic_online.svg | 3 - assets/images/{ic_read_v2.svg => ic_read.svg} | 0 assets/images/ic_reply.svg | 5 +- assets/images/ic_reply_all.svg | 6 +- assets/images/ic_reply_all_v2.svg | 3 - assets/images/ic_reply_v2.svg | 3 - assets/images/ic_selected.svg | 5 +- assets/images/ic_selected_v2.svg | 3 - assets/images/{ic_spam_v2.svg => ic_spam.svg} | 0 assets/images/ic_star.svg | 4 +- assets/images/ic_trash.svg | 4 - assets/images/ic_unread.svg | 4 +- assets/images/ic_unread_v2.svg | 3 - ...ic_unselected_v2.svg => ic_unselected.svg} | 0 assets/images/ic_unstar.svg | 2 +- .../{logo_tmail_v2.png => logo_tmail.png} | Bin assets/images/tmail_logo.svg | 14 --- .../extensions/color_extension.dart | 4 +- .../presentation/resources/image_paths.dart | 59 +++------ .../composer/presentation/composer_view.dart | 8 +- .../email/presentation/email_controller.dart | 52 +++++++- .../email/presentation/email_view.dart | 67 ++++++++-- .../widgets/app_bar_mail_widget_builder.dart | 118 +++++++++++------- .../bottom_bar_mail_widget_builder.dart | 6 +- ...cupertino_action_sheet_action_builder.dart | 49 ++++++++ .../login/presentation/login_view.dart | 2 +- .../presentation_mailbox_extension.dart | 12 +- .../presentation/mailbox_controller.dart | 2 +- .../bottom_bar_selection_mailbox_widget.dart | 6 +- .../widgets/mailbox_folder_tile_builder.dart | 2 +- .../widgets/mailbox_tile_builder.dart | 2 +- .../thread/presentation/thread_view.dart | 2 +- .../bottom_bar_thread_selection_widget.dart | 10 +- .../widgets/email_tile_builder.dart | 2 +- model/lib/email/email_action_type.dart | 2 + 63 files changed, 312 insertions(+), 244 deletions(-) rename assets/images/2.0x/{logo_tmail_v2.png => logo_tmail.png} (100%) rename assets/images/3.0x/{logo_tmail_v2.png => logo_tmail.png} (100%) delete mode 100644 assets/images/ic_calendar.svg delete mode 100644 assets/images/ic_close.svg delete mode 100644 assets/images/ic_composer_file_share.svg rename assets/images/{ic_delete_v2.svg => ic_delete.svg} (100%) create mode 100644 assets/images/ic_delete_email.svg delete mode 100644 assets/images/ic_flag_v2.svg delete mode 100644 assets/images/ic_flagged.svg delete mode 100644 assets/images/ic_folder.svg delete mode 100644 assets/images/ic_forward_v2.svg rename assets/images/{ic_mailbox_archived_v2.svg => ic_mailbox_archived.svg} (100%) delete mode 100644 assets/images/ic_mailbox_draft.svg rename assets/images/{ic_mailbox_drafts_v2.svg => ic_mailbox_drafts.svg} (100%) delete mode 100644 assets/images/ic_mailbox_folder.svg delete mode 100644 assets/images/ic_mailbox_inbox_v2.svg delete mode 100644 assets/images/ic_mailbox_new_folder.svg delete mode 100644 assets/images/ic_mailbox_sent_v2.svg delete mode 100644 assets/images/ic_mailbox_spam_v2.svg delete mode 100644 assets/images/ic_mailbox_trash_v2.svg rename assets/images/{ic_move_v2.svg => ic_move.svg} (100%) delete mode 100644 assets/images/ic_offline.svg delete mode 100644 assets/images/ic_online.svg rename assets/images/{ic_read_v2.svg => ic_read.svg} (100%) delete mode 100644 assets/images/ic_reply_all_v2.svg delete mode 100644 assets/images/ic_reply_v2.svg delete mode 100644 assets/images/ic_selected_v2.svg rename assets/images/{ic_spam_v2.svg => ic_spam.svg} (100%) delete mode 100644 assets/images/ic_trash.svg delete mode 100644 assets/images/ic_unread_v2.svg rename assets/images/{ic_unselected_v2.svg => ic_unselected.svg} (100%) rename assets/images/{logo_tmail_v2.png => logo_tmail.png} (100%) delete mode 100644 assets/images/tmail_logo.svg create mode 100644 lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart diff --git a/assets/images/2.0x/logo_tmail_v2.png b/assets/images/2.0x/logo_tmail.png similarity index 100% rename from assets/images/2.0x/logo_tmail_v2.png rename to assets/images/2.0x/logo_tmail.png diff --git a/assets/images/3.0x/logo_tmail_v2.png b/assets/images/3.0x/logo_tmail.png similarity index 100% rename from assets/images/3.0x/logo_tmail_v2.png rename to assets/images/3.0x/logo_tmail.png diff --git a/assets/images/ic_calendar.svg b/assets/images/ic_calendar.svg deleted file mode 100644 index c56d1f65e..000000000 --- a/assets/images/ic_calendar.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/assets/images/ic_close.svg b/assets/images/ic_close.svg deleted file mode 100644 index 209aca549..000000000 --- a/assets/images/ic_close.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/images/ic_composer_file_share.svg b/assets/images/ic_composer_file_share.svg deleted file mode 100644 index 81dbfd4f0..000000000 --- a/assets/images/ic_composer_file_share.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/images/ic_delete_v2.svg b/assets/images/ic_delete.svg similarity index 100% rename from assets/images/ic_delete_v2.svg rename to assets/images/ic_delete.svg diff --git a/assets/images/ic_delete_email.svg b/assets/images/ic_delete_email.svg new file mode 100644 index 000000000..fb5345147 --- /dev/null +++ b/assets/images/ic_delete_email.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/ic_flag.svg b/assets/images/ic_flag.svg index 895cc1dc5..03b215818 100644 --- a/assets/images/ic_flag.svg +++ b/assets/images/ic_flag.svg @@ -1,3 +1,3 @@ - - + + diff --git a/assets/images/ic_flag_v2.svg b/assets/images/ic_flag_v2.svg deleted file mode 100644 index 03b215818..000000000 --- a/assets/images/ic_flag_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_flagged.svg b/assets/images/ic_flagged.svg deleted file mode 100644 index c7ab48776..000000000 --- a/assets/images/ic_flagged.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_folder.svg b/assets/images/ic_folder.svg deleted file mode 100644 index e418acedd..000000000 --- a/assets/images/ic_folder.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_forward.svg b/assets/images/ic_forward.svg index 423cc59b5..253fa170a 100644 --- a/assets/images/ic_forward.svg +++ b/assets/images/ic_forward.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/assets/images/ic_forward_v2.svg b/assets/images/ic_forward_v2.svg deleted file mode 100644 index 253fa170a..000000000 --- a/assets/images/ic_forward_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_mailbox_archived_v2.svg b/assets/images/ic_mailbox_archived.svg similarity index 100% rename from assets/images/ic_mailbox_archived_v2.svg rename to assets/images/ic_mailbox_archived.svg diff --git a/assets/images/ic_mailbox_draft.svg b/assets/images/ic_mailbox_draft.svg deleted file mode 100644 index 4cdc4d569..000000000 --- a/assets/images/ic_mailbox_draft.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/assets/images/ic_mailbox_drafts_v2.svg b/assets/images/ic_mailbox_drafts.svg similarity index 100% rename from assets/images/ic_mailbox_drafts_v2.svg rename to assets/images/ic_mailbox_drafts.svg diff --git a/assets/images/ic_mailbox_folder.svg b/assets/images/ic_mailbox_folder.svg deleted file mode 100644 index e418acedd..000000000 --- a/assets/images/ic_mailbox_folder.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_mailbox_inbox.svg b/assets/images/ic_mailbox_inbox.svg index 1eaab5f7f..d27976256 100644 --- a/assets/images/ic_mailbox_inbox.svg +++ b/assets/images/ic_mailbox_inbox.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/assets/images/ic_mailbox_inbox_v2.svg b/assets/images/ic_mailbox_inbox_v2.svg deleted file mode 100644 index d27976256..000000000 --- a/assets/images/ic_mailbox_inbox_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_mailbox_new_folder.svg b/assets/images/ic_mailbox_new_folder.svg deleted file mode 100644 index 58f83641c..000000000 --- a/assets/images/ic_mailbox_new_folder.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/images/ic_mailbox_sent.svg b/assets/images/ic_mailbox_sent.svg index 4cb937d32..eaaa0bdcb 100644 --- a/assets/images/ic_mailbox_sent.svg +++ b/assets/images/ic_mailbox_sent.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/assets/images/ic_mailbox_sent_v2.svg b/assets/images/ic_mailbox_sent_v2.svg deleted file mode 100644 index eaaa0bdcb..000000000 --- a/assets/images/ic_mailbox_sent_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_mailbox_spam.svg b/assets/images/ic_mailbox_spam.svg index 4770d9a97..897ea0b6d 100644 --- a/assets/images/ic_mailbox_spam.svg +++ b/assets/images/ic_mailbox_spam.svg @@ -1,5 +1,3 @@ - - - - + + diff --git a/assets/images/ic_mailbox_spam_v2.svg b/assets/images/ic_mailbox_spam_v2.svg deleted file mode 100644 index 897ea0b6d..000000000 --- a/assets/images/ic_mailbox_spam_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_mailbox_trash.svg b/assets/images/ic_mailbox_trash.svg index e9c319c0e..8c62ceb1b 100644 --- a/assets/images/ic_mailbox_trash.svg +++ b/assets/images/ic_mailbox_trash.svg @@ -1,6 +1,3 @@ - - - - - + + diff --git a/assets/images/ic_mailbox_trash_v2.svg b/assets/images/ic_mailbox_trash_v2.svg deleted file mode 100644 index 8c62ceb1b..000000000 --- a/assets/images/ic_mailbox_trash_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_move_v2.svg b/assets/images/ic_move.svg similarity index 100% rename from assets/images/ic_move_v2.svg rename to assets/images/ic_move.svg diff --git a/assets/images/ic_offline.svg b/assets/images/ic_offline.svg deleted file mode 100644 index 17336fad9..000000000 --- a/assets/images/ic_offline.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_online.svg b/assets/images/ic_online.svg deleted file mode 100644 index 0578d1d15..000000000 --- a/assets/images/ic_online.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_read_v2.svg b/assets/images/ic_read.svg similarity index 100% rename from assets/images/ic_read_v2.svg rename to assets/images/ic_read.svg diff --git a/assets/images/ic_reply.svg b/assets/images/ic_reply.svg index 126b78fd0..f37f425c3 100644 --- a/assets/images/ic_reply.svg +++ b/assets/images/ic_reply.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/assets/images/ic_reply_all.svg b/assets/images/ic_reply_all.svg index c99a575d8..f1013cc0f 100644 --- a/assets/images/ic_reply_all.svg +++ b/assets/images/ic_reply_all.svg @@ -1,5 +1,3 @@ - - - - + + diff --git a/assets/images/ic_reply_all_v2.svg b/assets/images/ic_reply_all_v2.svg deleted file mode 100644 index f1013cc0f..000000000 --- a/assets/images/ic_reply_all_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_reply_v2.svg b/assets/images/ic_reply_v2.svg deleted file mode 100644 index f37f425c3..000000000 --- a/assets/images/ic_reply_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_selected.svg b/assets/images/ic_selected.svg index 8cee3bcb1..94b3247de 100644 --- a/assets/images/ic_selected.svg +++ b/assets/images/ic_selected.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/assets/images/ic_selected_v2.svg b/assets/images/ic_selected_v2.svg deleted file mode 100644 index 94b3247de..000000000 --- a/assets/images/ic_selected_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_spam_v2.svg b/assets/images/ic_spam.svg similarity index 100% rename from assets/images/ic_spam_v2.svg rename to assets/images/ic_spam.svg diff --git a/assets/images/ic_star.svg b/assets/images/ic_star.svg index f4be89974..455d57b90 100644 --- a/assets/images/ic_star.svg +++ b/assets/images/ic_star.svg @@ -1,3 +1,3 @@ - - + + diff --git a/assets/images/ic_trash.svg b/assets/images/ic_trash.svg deleted file mode 100644 index 60b600776..000000000 --- a/assets/images/ic_trash.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/images/ic_unread.svg b/assets/images/ic_unread.svg index bd8053fad..88c8012db 100644 --- a/assets/images/ic_unread.svg +++ b/assets/images/ic_unread.svg @@ -1,3 +1,3 @@ - - + + diff --git a/assets/images/ic_unread_v2.svg b/assets/images/ic_unread_v2.svg deleted file mode 100644 index 88c8012db..000000000 --- a/assets/images/ic_unread_v2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/ic_unselected_v2.svg b/assets/images/ic_unselected.svg similarity index 100% rename from assets/images/ic_unselected_v2.svg rename to assets/images/ic_unselected.svg diff --git a/assets/images/ic_unstar.svg b/assets/images/ic_unstar.svg index 1701a0df2..d6022dabd 100644 --- a/assets/images/ic_unstar.svg +++ b/assets/images/ic_unstar.svg @@ -1,3 +1,3 @@ - + diff --git a/assets/images/logo_tmail_v2.png b/assets/images/logo_tmail.png similarity index 100% rename from assets/images/logo_tmail_v2.png rename to assets/images/logo_tmail.png diff --git a/assets/images/tmail_logo.svg b/assets/images/tmail_logo.svg deleted file mode 100644 index 610ae759e..000000000 --- a/assets/images/tmail_logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/core/lib/presentation/extensions/color_extension.dart b/core/lib/presentation/extensions/color_extension.dart index 2a742715d..6a4e05506 100644 --- a/core/lib/presentation/extensions/color_extension.dart +++ b/core/lib/presentation/extensions/color_extension.dart @@ -87,7 +87,9 @@ extension AppColor on Color { static const colorConfirmActionDialog= Color(0xFFF2F2F2); static const colorEmailAddress = Color(0xFF333333); static const colorHintEmailAddressInput = Color(0x993C3C43); - static const coloDividerComposer = Color(0xFFC6C6C8); + static const colorDividerComposer = Color(0xFFC6C6C8); + static const colorDividerEmailView = Color(0xFFD7D8D9); + static const colorButton = Color(0xFF959DAD); static const mapGradientColor = [ [Color(0xFF21D4FD), Color(0xFFB721FF)], diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart index 9ec7684b1..6a7b73304 100644 --- a/core/lib/presentation/resources/image_paths.dart +++ b/core/lib/presentation/resources/image_paths.dart @@ -1,48 +1,26 @@ import 'package:core/presentation/resources/assets_paths.dart'; class ImagePaths { - String get icTMailLogo => _getImagePath('tmail_logo.svg'); - String get icClose => _getImagePath('ic_close.svg'); String get icSearch => _getImagePath('ic_search.svg'); String get icNextArrow => _getImagePath('ic_next_arrow.svg'); - String get icMailboxInbox => _getImagePath('ic_mailbox_inbox.svg'); - String get icMailboxTrash => _getImagePath('ic_mailbox_trash.svg'); String get icMailboxAllMail => _getImagePath('ic_mailbox_allmail.svg'); - String get icMailboxDrafts => _getImagePath('ic_mailbox_draft.svg'); - String get icMailboxSent => _getImagePath('ic_mailbox_sent.svg'); - String get icMailboxSpam => _getImagePath('ic_mailbox_spam.svg'); String get icMailboxTemplate => _getImagePath('ic_mailbox_template.svg'); - String get icMailboxFolder => _getImagePath('ic_mailbox_folder.svg'); - String get icMailboxNewFolder => _getImagePath('ic_mailbox_new_folder.svg'); String get icFolderArrow => _getImagePath('ic_folder_arrow.svg'); String get icExpandFolder => _getImagePath('ic_expand_folder.svg'); String get icBack => _getImagePath('ic_back.svg'); String get icEyeDisable => _getImagePath('ic_eye_disable.svg'); - String get icFolder => _getImagePath('ic_folder.svg'); - String get icForward => _getImagePath('ic_forward.svg'); - String get icReply => _getImagePath('ic_reply.svg'); - String get icReplyAll => _getImagePath('ic_reply_all.svg'); - String get icFlag => _getImagePath('ic_flag.svg'); - String get icTrash => _getImagePath('ic_trash.svg'); - String get icCalendar => _getImagePath('ic_calendar.svg'); String get icShare => _getImagePath('ic_share.svg'); String get icAttachmentFile => _getImagePath('ic_attachment_file.svg'); - String get icOnline => _getImagePath('ic_online.svg'); - String get icOffline => _getImagePath('ic_offline.svg'); - String get icFlagged => _getImagePath('ic_flagged.svg'); String get icMoreReceiver => _getImagePath('ic_more_receiver.svg'); String get icComposerClose => _getImagePath('ic_composer_close.svg'); String get icComposerSend => _getImagePath('ic_composer_send.svg'); String get icComposerMenu => _getImagePath('ic_composer_menu.svg'); - String get icComposerFileShare => _getImagePath('ic_composer_file_share.svg'); String get icExpandAddress => _getImagePath('ic_expand_address.svg'); - String get icSelected => _getImagePath('ic_selected.svg'); String get icExpandAttachment => _getImagePath('ic_expand_attachment.svg'); String get icDownload => _getImagePath('ic_download.svg'); String get icMore => _getImagePath('ic_more.svg'); String get icPhotoLibrary => _getImagePath('ic_photo_library.svg'); String get icEmptyImageDefault => _getImagePath('empty_image_default.svg'); - String get icUnread => _getImagePath('ic_unread.svg'); String get icStar => _getImagePath('ic_star.svg'); String get icUnStar => _getImagePath('ic_unstar.svg'); String get icAttachment => _getImagePath('ic_attachment.svg'); @@ -51,40 +29,41 @@ class ImagePaths { String get icFilter => _getImagePath('ic_filter.svg'); String get icSearchBar => _getImagePath('ic_search_bar.svg'); String get icCompose => _getImagePath('ic_compose.svg'); - String get icReadV2 => _getImagePath('ic_read_v2.svg'); - String get icUnreadV2 => _getImagePath('ic_unread_v2.svg'); - String get icSelectedV2 => _getImagePath('ic_selected_v2.svg'); - String get icUnSelectedV2 => _getImagePath('ic_unselected_v2.svg'); - String get icDeleteV2 => _getImagePath('ic_delete_v2.svg'); - String get icSpamV2 => _getImagePath('ic_spam_v2.svg'); - String get icMoveV2 => _getImagePath('ic_move_v2.svg'); - String get icFlagV2 => _getImagePath('ic_flag_v2.svg'); + String get icRead => _getImagePath('ic_read.svg'); + String get icUnread => _getImagePath('ic_unread.svg'); + String get icSelected => _getImagePath('ic_selected.svg'); + String get icUnSelected => _getImagePath('ic_unselected.svg'); + String get icDelete => _getImagePath('ic_delete.svg'); + String get icSpam => _getImagePath('ic_spam.svg'); + String get icMove => _getImagePath('ic_move.svg'); + String get icFlag => _getImagePath('ic_flag.svg'); String get icReadToast => _getImagePath('ic_read_toast.svg'); String get icUnreadToast => _getImagePath('ic_unread_toast.svg'); - String get icReplyAllV2 => _getImagePath('ic_reply_all_v2.svg'); - String get icReplyV2 => _getImagePath('ic_reply_v2.svg'); - String get icForwardV2 => _getImagePath('ic_forward_v2.svg'); + String get icReplyAll => _getImagePath('ic_reply_all.svg'); + String get icReply => _getImagePath('ic_reply.svg'); + String get icForward => _getImagePath('ic_forward.svg'); String get icMoveEmail => _getImagePath('ic_move_email.svg'); String get icUnreadEmail => _getImagePath('ic_unread_email.svg'); String get icCloseMailbox => _getImagePath('ic_close_mailbox.svg'); String get icAddNewFolder => _getImagePath('ic_add_new_folder.svg'); String get icFolderMailbox => _getImagePath('ic_folder_mailbox.svg'); - String get icMailboxInboxV2 => _getImagePath('ic_mailbox_inbox_v2.svg'); - String get icMailboxDraftsV2 => _getImagePath('ic_mailbox_drafts_v2.svg'); - String get icMailboxSentV2 => _getImagePath('ic_mailbox_sent_v2.svg'); - String get icMailboxArchivedV2 => _getImagePath('ic_mailbox_archived_v2.svg'); - String get icMailboxSpamV2 => _getImagePath('ic_mailbox_spam_v2.svg'); - String get icMailboxTrashV2 => _getImagePath('ic_mailbox_trash_v2.svg'); + String get icMailboxInbox => _getImagePath('ic_mailbox_inbox.svg'); + String get icMailboxDrafts => _getImagePath('ic_mailbox_drafts.svg'); + String get icMailboxSent => _getImagePath('ic_mailbox_sent.svg'); + String get icMailboxArchived => _getImagePath('ic_mailbox_archived.svg'); + String get icMailboxSpam => _getImagePath('ic_mailbox_spam.svg'); + String get icMailboxTrash => _getImagePath('ic_mailbox_trash.svg'); String get icFilterSelected => _getImagePath('ic_filter_selected.svg'); String get icFilterMessageAll => _getImagePath('ic_filter_message_all.svg'); String get icFilterMessageAttachments => _getImagePath('ic_filter_message_attachments.svg'); - String get icLogoTMailV2 => _getImagePath('logo_tmail_v2.png'); + String get icLogoTMail => _getImagePath('logo_tmail.png'); String get icSendToast => _getImagePath('ic_send_toast.svg'); String get icClearTextSearch => _getImagePath('ic_clear_text_search.svg'); String get icRenameMailbox => _getImagePath('ic_rename_mailbox.svg'); String get icDeleteToast => _getImagePath('ic_delete_toast.svg'); String get icRemoveDialog => _getImagePath('ic_remove_dialog.svg'); String get icDeleteEmailAddress => _getImagePath('ic_delete_email_address.svg'); + String get icDeleteEmail => _getImagePath('ic_delete_email.svg'); String _getImagePath(String imageName) { return AssetsPaths.images + imageName; diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index 518090b5b..3c20928e8 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -134,7 +134,7 @@ class ComposerView extends GetWidget { Widget _buildDivider(){ return Padding( padding: EdgeInsets.only(left: 16), - child: Divider(color: AppColor.coloDividerComposer, height: 1)); + child: Divider(color: AppColor.colorDividerComposer, height: 1)); } Widget _buildEmailAddress(BuildContext context) { @@ -171,7 +171,7 @@ class ComposerView extends GetWidget { ] ) ), - Divider(color: AppColor.coloDividerComposer, height: 1), + Divider(color: AppColor.colorDividerComposer, height: 1), Obx(() => (EmailAddressInputBuilder( context, imagePaths, @@ -187,7 +187,7 @@ class ComposerView extends GetWidget { .build() ), Obx(() => controller.expandMode.value == ExpandMode.EXPAND - ? Divider(color: AppColor.coloDividerComposer, height: 1) + ? Divider(color: AppColor.colorDividerComposer, height: 1) : SizedBox.shrink()), Obx(() => controller.expandMode.value == ExpandMode.EXPAND ? (EmailAddressInputBuilder( @@ -204,7 +204,7 @@ class ComposerView extends GetWidget { : SizedBox.shrink() ), Obx(() => controller.expandMode.value == ExpandMode.EXPAND - ? Divider(color: AppColor.coloDividerComposer, height: 1) + ? Divider(color: AppColor.colorDividerComposer, height: 1) : SizedBox.shrink()), Obx(() => controller.expandMode.value == ExpandMode.EXPAND ? (EmailAddressInputBuilder( diff --git a/lib/features/email/presentation/email_controller.dart b/lib/features/email/presentation/email_controller.dart index 3e86cc11d..5b60a9715 100644 --- a/lib/features/email/presentation/email_controller.dart +++ b/lib/features/email/presentation/email_controller.dart @@ -2,6 +2,7 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; @@ -54,6 +55,10 @@ class EmailController extends BaseController { final attachments = [].obs; EmailId? _currentEmailId; + PresentationMailbox? get currentMailbox => mailboxDashBoardController.selectedMailbox.value; + + PresentationEmail? get currentEmail => mailboxDashBoardController.selectedEmail.value; + EmailController( this._getEmailContentInteractor, this._markAsEmailReadInteractor, @@ -310,7 +315,7 @@ class EmailController extends BaseController { popBack(); } - void openDestinationPickerView(PresentationEmail email) async { + void moveToMailboxAction(PresentationEmail email) async { final currentMailbox = mailboxDashBoardController.selectedMailbox.value; final accountId = mailboxDashBoardController.accountId.value; @@ -365,11 +370,10 @@ class EmailController extends BaseController { } } - void markAsStarEmail(PresentationEmail presentationEmail) async { + void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction markStarAction) async { final accountId = mailboxDashBoardController.accountId.value; final mailboxCurrent = mailboxDashBoardController.selectedMailbox.value; if (accountId != null && mailboxCurrent != null) { - final markStarAction = presentationEmail.isFlaggedEmail() ? MarkStarAction.unMarkStar : MarkStarAction.markStar; consumeState(_markAsStarEmailInteractor.execute(accountId, presentationEmail.toEmail(), markStarAction)); } } @@ -381,6 +385,48 @@ class EmailController extends BaseController { mailboxDashBoardController.dispatchState(Right(success)); } + void handleEmailAction(PresentationEmail presentationEmail, EmailActionType actionType) { + switch(actionType) { + case EmailActionType.markAsUnread: + markAsEmailRead(presentationEmail, ReadActions.markAsUnread); + break; + case EmailActionType.markAsStar: + markAsStarEmail(presentationEmail, MarkStarAction.markStar); + break; + case EmailActionType.markAsUnStar: + markAsStarEmail(presentationEmail, MarkStarAction.unMarkStar); + break; + case EmailActionType.move: + moveToMailboxAction(presentationEmail); + break; + case EmailActionType.delete: + break; + default: + break; + } + } + + void openMoreMenuEmailAction(BuildContext context, List actionTiles, {Widget? cancelButton}) { + (CupertinoActionSheetBuilder(context) + ..addTiles(actionTiles) + ..addCancelButton(cancelButton)) + .show(); + } + + void openMoreMenuEmailActionForTablet(BuildContext context, RelativeRect? position, List popupMenuItems) async { + await showMenu( + context: context, + position: position ?? RelativeRect.fromLTRB(16, 40, 16, 16), + color: Colors.white, + elevation: 5, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(14)), + items: popupMenuItems); + } + + void closeMoreMenu() { + popBack(); + } + bool canComposeEmail() => mailboxDashBoardController.sessionCurrent != null && mailboxDashBoardController.userProfile.value != null && mailboxDashBoardController.mapDefaultMailboxId.isNotEmpty diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index c5d2df202..c663a5dc3 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:core/core.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -11,6 +12,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_w import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_file_tile_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/attachments_place_holder_loading_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart'; +import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_content_item_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_content_place_holder_loading_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/sender_and_receiver_information_tile_builder.dart'; @@ -34,6 +36,7 @@ class EmailView extends GetView { mainAxisAlignment: MainAxisAlignment.center, children: [ _buildAppBar(context), + _buildDivider(), Expanded(child: _buildEmailBody(context)), _buildBottomBar(context), ] @@ -41,21 +44,32 @@ class EmailView extends GetView { )); } + Widget _buildDivider(){ + return Padding( + padding: EdgeInsets.symmetric(horizontal: 16), + child: Divider(color: AppColor.colorDividerEmailView, height: 0.5)); + } + Widget _buildAppBar(BuildContext context) { return Obx(() => Padding( - padding: EdgeInsets.only(left: 6, top: 6, right: 6, bottom: 6), + padding: EdgeInsets.only(top: 6), child: (AppBarMailWidgetBuilder( context, imagePaths, responsiveUtils, - emailController.mailboxDashBoardController.selectedEmail.value) + emailController.currentEmail, + emailController.currentMailbox) ..onBackActionClick(() => emailController.backToThreadView()) - ..onUnreadEmailActionClick((presentationEmail) => - emailController.markAsEmailRead(presentationEmail, ReadActions.markAsUnread)) - ..addOnMoveToMailboxActionClick((presentationEmail) => - emailController.openDestinationPickerView(presentationEmail)) - ..addOnMarkAsStarActionClick((presentationEmail) => - emailController.markAsStarEmail(presentationEmail))) + ..addOnEmailActionClick((email, action) => emailController.handleEmailAction(email, action)) + ..addOnMoreActionClick((email, position) => responsiveUtils.isMobileDevice(context) + ? emailController.openMoreMenuEmailAction( + context, + _emailActionMoreActionTile(context, email), + cancelButton: _buildCancelButton(context)) + : emailController.openMoreMenuEmailActionForTablet( + context, + position, + _popupMenuEmailActionTile(context, email)))) .build())); } @@ -311,4 +325,41 @@ class EmailView extends GetView { } })); } + + List _emailActionMoreActionTile(BuildContext context, PresentationEmail email) { + return [ + _unreadEmailAction(context, email), + ]; + } + + Widget _buildCancelButton(BuildContext context) { + return CupertinoActionSheetAction( + child: Text( + AppLocalizations.of(context).cancel, + style: TextStyle(fontWeight: FontWeight.w500, fontSize: 20, color: AppColor.colorTextButton)), + onPressed: () => emailController.closeMoreMenu(), + ); + } + + Widget _unreadEmailAction(BuildContext context, PresentationEmail email) { + return (EmailActionCupertinoActionSheetActionBuilder( + Key('email_action_unread_action'), + SvgPicture.asset(imagePaths.icUnreadEmail, width: 28, height: 28, fit: BoxFit.fill, color: AppColor.colorTextButton), + AppLocalizations.of(context).mark_as_unread, + email, + iconLeftPadding: responsiveUtils.isMobile(context) + ? EdgeInsets.only(left: 12, right: 16) + : EdgeInsets.only(right: 12), + iconRightPadding: responsiveUtils.isMobile(context) + ? EdgeInsets.only(right: 12) + : EdgeInsets.zero) + ..onActionClick((email) => emailController.handleEmailAction(email, EmailActionType.markAsUnread))) + .build(); + } + + List _popupMenuEmailActionTile(BuildContext context, PresentationEmail email) { + return [ + PopupMenuItem(padding: EdgeInsets.symmetric(horizontal: 8), child: _unreadEmailAction(context, email)), + ]; + } } \ No newline at end of file diff --git a/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart b/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart index dc07b291b..e4e6b631d 100644 --- a/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart +++ b/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart @@ -5,42 +5,38 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:model/model.dart'; typedef OnBackActionClick = void Function(); -typedef OnUnreadEmailActionClick = void Function(PresentationEmail presentationEmail); -typedef OnMoveToMailboxActionClick = void Function(PresentationEmail presentationEmail); -typedef OnMarkAsStarActionClick = void Function(PresentationEmail presentationEmail); +typedef OnEmailActionClick = void Function(PresentationEmail, EmailActionType); +typedef OnMoreActionClick = void Function(PresentationEmail, RelativeRect?); class AppBarMailWidgetBuilder { OnBackActionClick? _onBackActionClick; - OnUnreadEmailActionClick? _onUnreadEmailActionClick; - OnMoveToMailboxActionClick? _onMoveToMailboxActionClick; - OnMarkAsStarActionClick? _markAsStarActionClick; + OnEmailActionClick? _onEmailActionClick; + OnMoreActionClick? _onMoreActionClick; final BuildContext _context; final ImagePaths _imagePaths; final ResponsiveUtils _responsiveUtils; final PresentationEmail? _presentationEmail; + final PresentationMailbox? _currentMailbox; AppBarMailWidgetBuilder( this._context, this._imagePaths, this._responsiveUtils, this._presentationEmail, + this._currentMailbox, ); void onBackActionClick(OnBackActionClick onBackActionClick) { _onBackActionClick = onBackActionClick; } - void onUnreadEmailActionClick(OnUnreadEmailActionClick onUnreadEmailActionClick) { - _onUnreadEmailActionClick = onUnreadEmailActionClick; + void addOnEmailActionClick(OnEmailActionClick onEmailActionClick) { + _onEmailActionClick = onEmailActionClick; } - void addOnMoveToMailboxActionClick(OnMoveToMailboxActionClick onMoveToMailboxActionClick) { - _onMoveToMailboxActionClick = onMoveToMailboxActionClick; - } - - void addOnMarkAsStarActionClick(OnMarkAsStarActionClick onMarkAsStarActionClick) { - _markAsStarActionClick = onMarkAsStarActionClick; + void addOnMoreActionClick(OnMoreActionClick onMoreActionClick) { + _onMoreActionClick = onMoreActionClick; } Widget build() { @@ -48,6 +44,7 @@ class AppBarMailWidgetBuilder { key: Key('app_bar_messenger_widget'), alignment: Alignment.center, padding: EdgeInsets.zero, + margin: EdgeInsets.zero, child: MediaQuery( data: MediaQueryData(padding: EdgeInsets.zero), child: Row( @@ -55,10 +52,9 @@ class AppBarMailWidgetBuilder { mainAxisAlignment: MainAxisAlignment.end, children: [ if ((!_responsiveUtils.isDesktop(_context) && !_responsiveUtils.isTabletLarge(_context))) - Expanded(child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.start, - children:[_buildBackButton()])), + _buildBackButton(), + if ((!_responsiveUtils.isDesktop(_context) && !_responsiveUtils.isTabletLarge(_context))) + Expanded(child: _buildMailboxName()), if (_presentationEmail != null) _buildListOptionButton(), ] ) @@ -68,13 +64,19 @@ class AppBarMailWidgetBuilder { Widget _buildBackButton() { return IconButton( - color: AppColor.appColor, - icon: SvgPicture.asset(_imagePaths.icBack, color: AppColor.appColor, fit: BoxFit.fill), - onPressed: () { - if (_onBackActionClick != null) { - _onBackActionClick!(); - } - } + icon: SvgPicture.asset(_imagePaths.icBack, width: 20, height: 20, color: AppColor.colorTextButton, fit: BoxFit.fill), + onPressed: () => _onBackActionClick?.call() + ); + } + + Widget _buildMailboxName() { + return Transform( + transform: Matrix4.translationValues(-10.0, 0.0, 0.0), + child: Text( + '${_currentMailbox?.name?.name.capitalizeFirstEach ?? ''}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(fontSize: 17, color: AppColor.colorTextButton)) ); } @@ -83,37 +85,69 @@ class AppBarMailWidgetBuilder { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ + IconButton( + key: Key('button_move_to_mailbox_email'), + icon: SvgPicture.asset(_imagePaths.icMoveEmail, color: AppColor.colorButton, fit: BoxFit.fill), + onPressed: () { + if (_presentationEmail != null) { + _onEmailActionClick?.call(_presentationEmail!, EmailActionType.move); + } + }), IconButton( key: Key('button_mark_as_star_email'), icon: SvgPicture.asset( (_presentationEmail != null && _presentationEmail!.isFlaggedEmail()) ? _imagePaths.icStar : _imagePaths.icUnStar, + color: AppColor.colorButton, fit: BoxFit.fill), - onPressed: () { - if (_markAsStarActionClick != null && _presentationEmail != null) { - _markAsStarActionClick!(_presentationEmail!); + onPressed: () { + if (_presentationEmail != null) { + _onEmailActionClick?.call(_presentationEmail!, + _presentationEmail!.isFlaggedEmail() ? EmailActionType.markAsUnStar : EmailActionType.markAsStar); } }), IconButton( - key: Key('button_mark_as_unread_email'), - color: AppColor.baseTextColor, - icon: SvgPicture.asset(_imagePaths.icUnreadEmail, fit: BoxFit.fill), + key: Key('button_delete_email'), + icon: SvgPicture.asset(_imagePaths.icDeleteEmail, color: AppColor.colorButton, fit: BoxFit.fill), onPressed: () { - if (_onUnreadEmailActionClick != null && _presentationEmail != null && _presentationEmail!.isReadEmail()) { - _onUnreadEmailActionClick!(_presentationEmail!); - } - }), - IconButton( - key: Key('button_move_to_mailbox_email'), - color: AppColor.baseTextColor, - icon: SvgPicture.asset(_imagePaths.icMoveEmail, fit: BoxFit.fill), - onPressed: () { - if (_onMoveToMailboxActionClick != null && _presentationEmail != null) { - _onMoveToMailboxActionClick!(_presentationEmail!); + if (_presentationEmail != null) { + _onEmailActionClick?.call(_presentationEmail!, EmailActionType.delete); } }), + _buildMoreButton(), ] ); } + + Widget _buildMoreButton() { + return Material( + key: Key('button_more_email'), + borderRadius: BorderRadius.circular(12), + color: Colors.transparent, + child: Padding( + padding: EdgeInsets.only(left: 10, right: 16), + child: GestureDetector( + onTap: () { + if (_presentationEmail != null && _responsiveUtils.isMobileDevice(_context)) { + _onMoreActionClick?.call(_presentationEmail!, null); + } + }, + child: SvgPicture.asset(_imagePaths.icMore, color: AppColor.colorButton, fit: BoxFit.fill), + onTapDown: (detail) { + if (_presentationEmail != null && !_responsiveUtils.isMobileDevice(_context)) { + final screenSize = MediaQuery.of(_context).size; + final offset = detail.globalPosition; + final position = RelativeRect.fromLTRB( + offset.dx, + offset.dy, + screenSize.width - offset.dx, + screenSize.height - offset.dy, + ); + _onMoreActionClick?.call(_presentationEmail!, position); + } + }) + ) + ); + } } \ No newline at end of file diff --git a/lib/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart b/lib/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart index f4f7458c8..8ca4eea2f 100644 --- a/lib/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart +++ b/lib/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart @@ -43,7 +43,7 @@ class BottomBarMailWidgetBuilder { crossAxisAlignment: CrossAxisAlignment.center, children: [ if (presentationEmail.numberOfAllEmailAddress() > 1) - (ButtonBuilder(_imagePaths.icReplyAllV2) + (ButtonBuilder(_imagePaths.icReplyAll) ..key(Key('button_reply_all_message')) ..size(20) ..paddingIcon(EdgeInsets.only( @@ -60,7 +60,7 @@ class BottomBarMailWidgetBuilder { }}) ..text(AppLocalizations.of(_context).reply_all, isVertical: _responsiveUtils.isMobile(_context))) .build(), - (ButtonBuilder(_imagePaths.icReplyV2) + (ButtonBuilder(_imagePaths.icReply) ..key(Key('button_reply_message')) ..size(20) ..paddingIcon(EdgeInsets.only( @@ -77,7 +77,7 @@ class BottomBarMailWidgetBuilder { }}) ..text(AppLocalizations.of(_context).reply, isVertical: _responsiveUtils.isMobile(_context))) .build(), - (ButtonBuilder(_imagePaths.icForwardV2) + (ButtonBuilder(_imagePaths.icForward) ..key(Key('button_forward_message')) ..size(20) ..paddingIcon(EdgeInsets.only( diff --git a/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart b/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart new file mode 100644 index 000000000..b0b47f93a --- /dev/null +++ b/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart @@ -0,0 +1,49 @@ + +import 'package:core/core.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:model/model.dart'; + +class EmailActionCupertinoActionSheetActionBuilder extends CupertinoActionSheetActionBuilder { + + final PresentationEmail presentationEmail; + final SvgPicture? actionSelected; + final Color? bgColor; + final EdgeInsets? iconLeftPadding; + final EdgeInsets? iconRightPadding; + + EmailActionCupertinoActionSheetActionBuilder( + Key key, + SvgPicture actionIcon, + String actionName, + this.presentationEmail, + { + this.actionSelected, + this.bgColor, + this.iconLeftPadding, + this.iconRightPadding, + } + ) : super(key, actionIcon, actionName); + + @override + Widget build() { + return Container( + color: bgColor ?? Colors.white, + child: CupertinoActionSheetAction( + key: key, + child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Padding( + padding: iconLeftPadding ?? EdgeInsets.only(left: 12, right: 16), + child: actionIcon), + Expanded(child: Text(actionName, textAlign: TextAlign.left, style: actionTextStyle())), + ]), + onPressed: () { + if (onCupertinoActionSheetActionClick != null) { + onCupertinoActionSheetActionClick!(presentationEmail); + } + }, + ), + ); + } +} \ No newline at end of file diff --git a/lib/features/login/presentation/login_view.dart b/lib/features/login/presentation/login_view.dart index f4cc789be..e5e2e506b 100644 --- a/lib/features/login/presentation/login_view.dart +++ b/lib/features/login/presentation/login_view.dart @@ -59,7 +59,7 @@ class LoginView extends GetWidget { .setSloganText(AppLocalizations.of(context).login_text_slogan) .setSloganTextAlign(TextAlign.center) .setSloganTextStyle(TextStyle(color: AppColor.primaryColor, fontSize: 16, fontWeight: FontWeight.w700)) - .setLogo(imagePaths.icLogoTMailV2) + .setLogo(imagePaths.icLogoTMail) .build(); } diff --git a/lib/features/mailbox/domain/extensions/presentation_mailbox_extension.dart b/lib/features/mailbox/domain/extensions/presentation_mailbox_extension.dart index 265240da4..e8411a777 100644 --- a/lib/features/mailbox/domain/extensions/presentation_mailbox_extension.dart +++ b/lib/features/mailbox/domain/extensions/presentation_mailbox_extension.dart @@ -7,17 +7,17 @@ extension PresentationMailboxExtension on PresentationMailbox { if (hasRole()) { switch(role!.value) { case 'inbox': - return imagePaths.icMailboxInboxV2; + return imagePaths.icMailboxInbox; case 'drafts': - return imagePaths.icMailboxDraftsV2; + return imagePaths.icMailboxDrafts; case 'outbox': - return imagePaths.icMailboxArchivedV2; + return imagePaths.icMailboxArchived; case 'sent': - return imagePaths.icMailboxSentV2; + return imagePaths.icMailboxSent; case 'trash': - return imagePaths.icMailboxTrashV2; + return imagePaths.icMailboxTrash; case 'spam': - return imagePaths.icMailboxSpamV2; + return imagePaths.icMailboxSpam; case 'templates': return imagePaths.icMailboxTemplate; case 'all_mail': diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index eb315e64e..025a36767 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -539,7 +539,7 @@ class MailboxController extends BaseController { _appToast.showToastWithIcon( Get.overlayContext!, message: AppLocalizations.of(Get.context!).delete_mailboxes_successfully, - icon: _imagePaths.icSelectedV2); + icon: _imagePaths.icSelected); } refreshMailboxChanges(); } diff --git a/lib/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart b/lib/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart index 3243dea62..5bf6d7083 100644 --- a/lib/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart +++ b/lib/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart @@ -41,7 +41,7 @@ class BottomBarSelectionMailboxWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.center, children: [ - (ButtonBuilder(_imagePaths.icMoveV2) + (ButtonBuilder(_imagePaths.icMove) ..key(Key('button_move_all_mailbox')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton.withOpacity(0.3))) @@ -63,7 +63,7 @@ class BottomBarSelectionMailboxWidget { }) ..text(AppLocalizations.of(_context).rename, isVertical: true)) .build(), - (ButtonBuilder(_imagePaths.icReadV2) + (ButtonBuilder(_imagePaths.icRead) ..key(Key('button_mark_read_all_mailbox')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton.withOpacity(0.3))) @@ -71,7 +71,7 @@ class BottomBarSelectionMailboxWidget { ..onPressActionClick(() => {}) ..text(AppLocalizations.of(_context).mark_as_read, isVertical: true)) .build(), - (ButtonBuilder(_imagePaths.icDeleteV2) + (ButtonBuilder(_imagePaths.icDelete) ..key(Key('button_delete_all_mailbox')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle( diff --git a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart index c5eb29831..45f2b8079 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart @@ -154,7 +154,7 @@ class MailBoxFolderTileBuilder { child: IconButton( padding: EdgeInsets.zero, icon: SvgPicture.asset( - _mailboxNode.selectMode == SelectMode.ACTIVE ? _imagePaths.icSelectedV2 : _imagePaths.icUnSelectedV2, + _mailboxNode.selectMode == SelectMode.ACTIVE ? _imagePaths.icSelected : _imagePaths.icUnSelected, width: 20, height: 20, fit: BoxFit.fill), diff --git a/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart index e1d2fa629..0aef323cc 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart @@ -136,7 +136,7 @@ class MailboxTileBuilder { child: IconButton( padding: EdgeInsets.zero, icon: SvgPicture.asset( - _presentationMailbox.selectMode == SelectMode.ACTIVE ? _imagePaths.icSelectedV2 : _imagePaths.icUnSelectedV2, + _presentationMailbox.selectMode == SelectMode.ACTIVE ? _imagePaths.icSelected : _imagePaths.icUnSelected, width: 20, height: 20, fit: BoxFit.fill), diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 42ba55a0e..8b1c114d6 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -205,7 +205,7 @@ class ThreadView extends GetWidget { Widget _filterMessagesUnreadAction(BuildContext context, FilterMessageOption optionCurrent) { return (FilterMessageCupertinoActionSheetActionBuilder( Key('filter_unread_action'), - SvgPicture.asset(imagePaths.icUnreadV2, width: 28, height: 28, fit: BoxFit.fill), + SvgPicture.asset(imagePaths.icUnread, width: 28, height: 28, fit: BoxFit.fill), AppLocalizations.of(context).unread, FilterMessageOption.unread, optionCurrent: optionCurrent, diff --git a/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart b/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart index e520e0c93..0376ad1f7 100644 --- a/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart +++ b/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart @@ -42,7 +42,7 @@ class BottomBarThreadSelectionWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.center, children: [ - (ButtonBuilder(_listSelectionEmail.isAllEmailRead ? _imagePaths.icUnreadV2 : _imagePaths.icReadV2) + (ButtonBuilder(_listSelectionEmail.isAllEmailRead ? _imagePaths.icUnread : _imagePaths.icRead) ..key(Key('button_mark_read_email')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton)) @@ -56,7 +56,7 @@ class BottomBarThreadSelectionWidget { _listSelectionEmail.isAllEmailRead ? AppLocalizations.of(_context).unread : AppLocalizations.of(_context).read, isVertical: _responsiveUtils.isMobile(_context))) .build(), - (ButtonBuilder(_imagePaths.icFlagV2) + (ButtonBuilder(_imagePaths.icFlag) ..key(Key('button_flag_email')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton)) @@ -66,7 +66,7 @@ class BottomBarThreadSelectionWidget { }}) ..text(AppLocalizations.of(_context).flag, isVertical: _responsiveUtils.isMobile(_context))) .build(), - (ButtonBuilder(_imagePaths.icMoveV2) + (ButtonBuilder(_imagePaths.icMove) ..key(Key('button_move_email')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton)) @@ -77,7 +77,7 @@ class BottomBarThreadSelectionWidget { ..text(AppLocalizations.of(_context).move, isVertical: _responsiveUtils.isMobile(_context))) .build(), if (!_responsiveUtils.isDesktop(_context) && !_responsiveUtils.isTabletLarge(_context)) - (ButtonBuilder(_imagePaths.icSpamV2) + (ButtonBuilder(_imagePaths.icSpam) ..key(Key('button_spam_email')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton)) @@ -88,7 +88,7 @@ class BottomBarThreadSelectionWidget { ..text(AppLocalizations.of(_context).spam, isVertical: _responsiveUtils.isMobile(_context))) .build(), if (!_responsiveUtils.isDesktop(_context) && !_responsiveUtils.isTabletLarge(_context)) - (ButtonBuilder(_imagePaths.icDeleteV2) + (ButtonBuilder(_imagePaths.icDelete) ..key(Key('button_delete_email')) ..paddingIcon(EdgeInsets.all(8)) ..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton)) diff --git a/lib/features/thread/presentation/widgets/email_tile_builder.dart b/lib/features/thread/presentation/widgets/email_tile_builder.dart index 1eac57639..19a1f0dff 100644 --- a/lib/features/thread/presentation/widgets/email_tile_builder.dart +++ b/lib/features/thread/presentation/widgets/email_tile_builder.dart @@ -196,7 +196,7 @@ class EmailTileBuilder { return AnimatedSwitcher( duration: Duration(milliseconds: 600), transitionBuilder: _transitionBuilder, - child: (IconBuilder(_presentationEmail.selectMode == SelectMode.ACTIVE ? _imagePaths.icSelectedV2 : _imagePaths.icUnSelectedV2) + child: (IconBuilder(_presentationEmail.selectMode == SelectMode.ACTIVE ? _imagePaths.icSelected : _imagePaths.icUnSelected) ..padding(EdgeInsets.all(14)) ..size(GetPlatform.isWeb ? 48 : 56) ..addOnTapActionClick(() { diff --git a/model/lib/email/email_action_type.dart b/model/lib/email/email_action_type.dart index 32a919426..5fe47ad48 100644 --- a/model/lib/email/email_action_type.dart +++ b/model/lib/email/email_action_type.dart @@ -7,6 +7,8 @@ enum EmailActionType { markAsRead, markAsUnread, markAsFlag, + markAsStar, + markAsUnStar, move, markAsSpam, delete,