From f198f4ada02def715f4a02302644f5f37010814b Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 14 Oct 2021 11:54:46 +0700 Subject: [PATCH] TF-101 Show counter for regular mailbox --- .../extensions/color_extension.dart | 5 +- .../email/presentation/email_view.dart | 1 - .../widgets/mailbox_folder_tile_builder.dart | 82 +++++++++++++------ .../widgets/mailbox_tile_builder.dart | 2 +- .../app_bar_thread_widget_builder.dart | 4 +- 5 files changed, 61 insertions(+), 33 deletions(-) diff --git a/core/lib/presentation/extensions/color_extension.dart b/core/lib/presentation/extensions/color_extension.dart index 7d716d73f..0258d71e4 100644 --- a/core/lib/presentation/extensions/color_extension.dart +++ b/core/lib/presentation/extensions/color_extension.dart @@ -34,8 +34,9 @@ extension AppColor on Color { static const storageUseSizeColor = Color(0xFF2D0CFF); static const myFolderTitleColor = Color(0xFF7E869B); static const titleAppBarMailboxListMail = Color(0xFF182952); - static const notifyCountAppBarMailboxListMail = Color(0xFF3840F7); - static const bgNotifyCountAppBarMailboxListMail = Color(0xFFE6E5FF); + static const counterMailboxColor = Color(0xFF3840F7); + static const backgroundCounterMailboxColor = Color(0xFFE6E5FF); + static const backgroundCounterMailboxSelectedColor = Color(0x17313131); static const bgMailboxListMail = Color(0xFFFBFBFF); static const bgMessenger = Color(0xFFF2F2F5); static const textButtonColor = Color(0xFF182952); diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index e2dc8a97e..55ff11fe1 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -278,7 +278,6 @@ class EmailView extends GetView { switch(emailController.emailContent.value!.type) { case EmailContentType.textHtml: return HtmlContentViewer( - minHeight: 400, contentHtml: emailController.emailContent.value!.content, onLoadStart: (webController, uri) => emailController.dispatchState(Right(WebViewLoadingState())), onLoadStop: (webController, uri) => emailController.dispatchState(Right(WebViewLoadCompletedState())), 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 06640878b..183595b43 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart @@ -6,6 +6,7 @@ import 'package:model/mailbox/select_mode.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; typedef OnExpandFolderActionClick = void Function(MailboxNode mailboxNode); typedef OnSelectMailboxFolderClick = void Function(MailboxNode mailboxNode); @@ -74,44 +75,71 @@ class MailBoxFolderTileBuilder { ? AppColor.mailboxSelectedIconColor : AppColor.mailboxIconColor, fit: BoxFit.fill)), - title: Padding( - padding: EdgeInsets.only(left: 8), - child: Text( - '${_mailboxNode.item.name?.name}', - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 15, - color: selectMode == SelectMode.ACTIVE - ? AppColor.mailboxSelectedTextColor - : AppColor.mailboxTextColor, - fontWeight: mailboxDisplayed == MailboxDisplayed.mailbox ? FontWeight.bold : FontWeight.w500), - )), - trailing: Padding( - padding: EdgeInsets.only( - right: mailboxDisplayed == MailboxDisplayed.mailbox - ? _responsiveUtils.isMobile(_context) ? 0 : 8 - : 0, - left: 16), - child: _mailboxNode.hasChildren() - ? IconButton( + title: _buildTitleFolderItem(), + trailing: _mailboxNode.hasChildren() + ? Padding( + padding: EdgeInsets.only( + right: mailboxDisplayed == MailboxDisplayed.mailbox + ? _responsiveUtils.isMobile(_context) ? 0 : 8 + : 0, + left: 16), + child: IconButton( color: AppColor.primaryColor, icon: SvgPicture.asset( _mailboxNode.expandMode == ExpandMode.EXPAND ? _imagePaths.icExpandFolder : _imagePaths.icFolderArrow, - color: selectMode == SelectMode.ACTIVE - ? AppColor.mailboxSelectedIconColor - : AppColor.mailboxIconColor, + color: selectMode == SelectMode.ACTIVE ? AppColor.mailboxSelectedIconColor : AppColor.mailboxIconColor, fit: BoxFit.fill), onPressed: () { if (_onExpandFolderActionClick != null) { _onExpandFolderActionClick!(_mailboxNode); } - } - ) - : SizedBox.shrink()) + })) + : null ) ) ) ); } + + Widget _buildTitleFolderItem() { + return Row( + children: [ + Expanded(child: Padding( + padding: EdgeInsets.only(left: 8), + child: Text( + '${_mailboxNode.item.name?.name ?? ''}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 15, + color: selectMode == SelectMode.ACTIVE ? AppColor.mailboxSelectedTextColor : AppColor.mailboxTextColor, + fontWeight: mailboxDisplayed == MailboxDisplayed.mailbox ? FontWeight.bold : FontWeight.w500), + ))), + if (_mailboxNode.item.getCountUnReadEmails().isNotEmpty && mailboxDisplayed == MailboxDisplayed.mailbox) + !_mailboxNode.hasChildren() + ? _buildCounter() + : Transform( + transform: Matrix4.translationValues(40.0, 0.0, 0.0), + child: _buildCounter()) + ], + ); + } + + Widget _buildCounter() { + return Container( + margin: EdgeInsets.only(left: 8, right: _mailboxNode.hasChildren() ? 0 : 16), + padding: EdgeInsets.only(left: 8, right: 8, top: 2.5, bottom: 2.5), + decoration:BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: selectMode == SelectMode.ACTIVE ? AppColor.backgroundCounterMailboxSelectedColor : AppColor.backgroundCounterMailboxColor), + child: Text( + '${_mailboxNode.item.getCountUnReadEmails()} ${AppLocalizations.of(_context).unread_email_notification}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 10, + color: selectMode == SelectMode.ACTIVE ? AppColor.mailboxTextColor : AppColor.counterMailboxColor, + fontWeight: FontWeight.bold), + )); + } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart index 6cde001ed..6f96ea128 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_tile_builder.dart @@ -68,7 +68,7 @@ class MailboxTileBuilder { title: Padding( padding: EdgeInsets.only(left: 8), child: Text( - '${_presentationMailbox.name?.name}', + '${_presentationMailbox.name?.name ?? ''}', maxLines: 1, overflow:TextOverflow.ellipsis, style: TextStyle( diff --git a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart index 6f967ca94..b227f09df 100644 --- a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart +++ b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart @@ -128,12 +128,12 @@ class AppBarThreadWidgetBuilder { padding: EdgeInsets.only(left: 8, right: 8, top: 2.5, bottom: 2.5), decoration:BoxDecoration( borderRadius: BorderRadius.circular(8), - color: AppColor.bgNotifyCountAppBarMailboxListMail), + color: AppColor.backgroundCounterMailboxColor), child: Text( '${_presentationMailbox!.getCountUnReadEmails()} ${AppLocalizations.of(_context).unread_email_notification}', maxLines: 1, overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: 10, color: AppColor.notifyCountAppBarMailboxListMail, fontWeight: FontWeight.w500), + style: TextStyle(fontSize: 10, color: AppColor.counterMailboxColor, fontWeight: FontWeight.w500), )), ] );