TF-119 Filter messages with unread, attachments, starred

This commit is contained in:
dab246
2022-02-11 14:02:06 +07:00
committed by Dat H. Pham
parent c22bc94052
commit ca69bee4cd
22 changed files with 447 additions and 34 deletions
+2
View File
@@ -42,6 +42,8 @@ export 'presentation/views/dialog/downloading_file_dialog_builder.dart';
export 'presentation/views/background/background_widget_builder.dart';
export 'presentation/views/html_viewer/html_content_viewer_widget.dart';
export 'presentation/views/floating_button/scrolling_floating_button_animated.dart';
export 'presentation/views/bottom_popup/cupertino_action_sheet_action_builder.dart';
export 'presentation/views/bottom_popup/cupertino_action_sheet_builder.dart';
// Resources
export 'presentation/resources/assets_paths.dart';
@@ -71,6 +71,9 @@ extension AppColor on Color {
static const colorDividerMailbox = Color(0xFF99A2AD);
static const colorArrowUserMailbox = Color(0xFFB8C1CC);
static const colorBgMailbox = Color(0xFFF7F7F7);
static const colorFilterMessageDisabled = Color(0xFF99A2AD);
static const colorFilterMessageEnabled = Color(0xFF007AFF);
static const colorDefaultCupertinoActionSheet = Color(0x66000000);
static const mapGradientColor = [
[Color(0xFF21D4FD), Color(0xFFB721FF)],
@@ -75,6 +75,9 @@ class ImagePaths {
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 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 _getImagePath(String imageName) {
return AssetsPaths.images + imageName;
@@ -40,7 +40,12 @@ class ResponsiveUtils {
double getWidthLoginButton() => _loginButtonWidth;
EdgeInsets getMarginDestinationPicker(BuildContext context) {
if (isTablet(context)) {
if (isMobileDevice(context) && isLandscape(context)) {
return EdgeInsets.only(
left: _tabletHorizontalMargin,
right: _tabletHorizontalMargin,
top: 50.0);
} else if (isTablet(context)) {
return getSizeHeightScreen(context) <= _tabletVerticalMargin * 2
? EdgeInsets.symmetric(
horizontal: _tabletHorizontalMargin,
@@ -62,7 +67,9 @@ class ResponsiveUtils {
}
BorderRadius radiusDestinationPicker(BuildContext context, double radius) {
if (isTablet(context)) {
if (isMobileDevice(context) && isLandscape(context)) {
return BorderRadius.only(topLeft: Radius.circular(radius), topRight: Radius.circular(radius));
} else if (isTablet(context)) {
return getSizeHeightScreen(context) <= _tabletVerticalMargin * 2
? BorderRadius.only(topLeft: Radius.circular(radius), topRight: Radius.circular(radius))
: BorderRadius.circular(radius);
@@ -0,0 +1,29 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_svg/flutter_svg.dart';
typedef OnCupertinoActionSheetActionClick<T> = void Function(T data);
abstract class CupertinoActionSheetActionBuilder<T> {
@protected final Key key;
@protected final SvgPicture actionIcon;
@protected final String actionName;
@protected OnCupertinoActionSheetActionClick<T>? onCupertinoActionSheetActionClick;
CupertinoActionSheetActionBuilder(
this.key,
this.actionIcon,
this.actionName
);
void onActionClick(OnCupertinoActionSheetActionClick<T> onCupertinoActionSheetActionClick) {
this.onCupertinoActionSheetActionClick = onCupertinoActionSheetActionClick;
}
TextStyle actionTextStyle() {
return TextStyle(fontSize: 17, color: AppColor.colorNameEmail);
}
Widget build();
}
@@ -0,0 +1,44 @@
import 'package:core/core.dart';
import 'package:flutter/cupertino.dart';
class CupertinoActionSheetBuilder {
final BuildContext _context;
final List<Widget> _actionTiles = [];
Widget? _titleWidget;
Widget? _messageWidget;
Widget? _cancelWidget;
CupertinoActionSheetBuilder(this._context);
void title(Widget? titleWidget) {
_titleWidget = titleWidget;
}
void message(Widget? messageWidget) {
_messageWidget = messageWidget;
}
void addCancelButton(Widget? cancelWidget) {
_cancelWidget = cancelWidget;
}
void addTiles(List<Widget> tiles) {
_actionTiles.addAll(tiles);
}
void build() {
showCupertinoModalPopup(
context: _context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) => CupertinoActionSheet(
title: _titleWidget,
message: _messageWidget,
actions: _actionTiles,
cancelButton: _cancelWidget,
)
);
}
}