TF-79 Create popmenu for tablet
This commit is contained in:
@@ -9,29 +9,23 @@ typedef OnOpenMailboxNewFolderActionClick = void Function();
|
||||
|
||||
class MailboxNewFolderTileBuilder {
|
||||
|
||||
final BuildContext _context;
|
||||
final ResponsiveUtils _responsiveUtils;
|
||||
|
||||
String? _icon;
|
||||
String? _name;
|
||||
|
||||
OnOpenMailboxNewFolderActionClick? _onOpenMailboxFolderActionClick;
|
||||
|
||||
MailboxNewFolderTileBuilder(this._context, this._responsiveUtils);
|
||||
MailboxNewFolderTileBuilder();
|
||||
|
||||
MailboxNewFolderTileBuilder addIcon(String icon) {
|
||||
void addIcon(String icon) {
|
||||
_icon = icon;
|
||||
return this;
|
||||
}
|
||||
|
||||
MailboxNewFolderTileBuilder addName(String name) {
|
||||
void addName(String name) {
|
||||
_name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
MailboxNewFolderTileBuilder onOpenMailboxFolderAction(OnOpenMailboxNewFolderActionClick onOpenMailboxFolderActionClick) {
|
||||
void onOpenMailboxFolderAction(OnOpenMailboxNewFolderActionClick onOpenMailboxFolderActionClick) {
|
||||
_onOpenMailboxFolderActionClick = onOpenMailboxFolderActionClick;
|
||||
return this;
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
@@ -55,7 +49,7 @@ class MailboxNewFolderTileBuilder {
|
||||
}
|
||||
},
|
||||
leading: Padding(
|
||||
padding: EdgeInsets.only(left: _responsiveUtils.isMobile(_context) ? 42 : 34),
|
||||
padding: EdgeInsets.only(left: 34),
|
||||
child: _icon != null
|
||||
? SvgPicture.asset(_icon!, width: 24, height: 24, color: AppColor.mailboxIconColor, fit: BoxFit.fill)
|
||||
: SizedBox.shrink()),
|
||||
|
||||
@@ -42,72 +42,74 @@ class MailBoxFolderTileBuilder {
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
return Container(
|
||||
key: Key('mailbox_folder_tile'),
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular( mailboxDisplayed == MailboxDisplayed.mailbox ? 16 : 0),
|
||||
color: mailboxDisplayed == MailboxDisplayed.mailbox
|
||||
? selectMode == SelectMode.ACTIVE ? AppColor.mailboxSelectedBackgroundColor : AppColor.mailboxBackgroundColor
|
||||
: AppColor.bgMailboxListMail
|
||||
),
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: ListTile(
|
||||
onTap: () {
|
||||
if (_onSelectMailboxFolderClick != null) {
|
||||
_onSelectMailboxFolderClick!(_mailboxNode);
|
||||
}
|
||||
},
|
||||
contentPadding: EdgeInsets.zero,
|
||||
leading: Padding(
|
||||
padding: EdgeInsets.only(left: mailboxDisplayed == MailboxDisplayed.mailbox
|
||||
? _responsiveUtils.isMobile(_context) ? 40 : 34
|
||||
: 34),
|
||||
child: SvgPicture.asset(
|
||||
_imagePaths.icMailboxFolder,
|
||||
width: 24,
|
||||
height: 24,
|
||||
color: selectMode == SelectMode.ACTIVE
|
||||
? 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,
|
||||
return Theme(
|
||||
data: ThemeData(
|
||||
splashColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent),
|
||||
child: Container(
|
||||
key: Key('mailbox_folder_tile'),
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular( mailboxDisplayed == MailboxDisplayed.mailbox ? 16 : 0),
|
||||
color: mailboxDisplayed == MailboxDisplayed.mailbox
|
||||
? selectMode == SelectMode.ACTIVE ? AppColor.mailboxSelectedBackgroundColor : AppColor.mailboxBackgroundColor
|
||||
: AppColor.bgMailboxListMail
|
||||
),
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: ListTile(
|
||||
onTap: () {
|
||||
if (_onSelectMailboxFolderClick != null) {
|
||||
_onSelectMailboxFolderClick!(_mailboxNode);
|
||||
}
|
||||
},
|
||||
contentPadding: EdgeInsets.zero,
|
||||
leading: Padding(
|
||||
padding: EdgeInsets.only(left: 26),
|
||||
child: SvgPicture.asset(
|
||||
_imagePaths.icMailboxFolder,
|
||||
width: 24,
|
||||
height: 24,
|
||||
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) ? 36 : 8
|
||||
: 36,
|
||||
left: mailboxDisplayed == MailboxDisplayed.mailbox ? 16 : 16),
|
||||
child: _mailboxNode.hasChildren()
|
||||
? GestureDetector(
|
||||
onTap: () {
|
||||
if (_onExpandFolderActionClick != null) {
|
||||
_onExpandFolderActionClick!(_mailboxNode);
|
||||
? 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(
|
||||
color: AppColor.primaryColor,
|
||||
icon: SvgPicture.asset(
|
||||
_mailboxNode.expandMode == ExpandMode.EXPAND ? _imagePaths.icExpandFolder : _imagePaths.icFolderArrow,
|
||||
color: selectMode == SelectMode.ACTIVE
|
||||
? AppColor.mailboxSelectedIconColor
|
||||
: AppColor.mailboxIconColor,
|
||||
fit: BoxFit.fill),
|
||||
onPressed: () {
|
||||
if (_onExpandFolderActionClick != null) {
|
||||
_onExpandFolderActionClick!(_mailboxNode);
|
||||
}
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
_mailboxNode.expandMode == ExpandMode.EXPAND ? _imagePaths.icExpandFolder : _imagePaths.icFolderArrow,
|
||||
width: _mailboxNode.expandMode == ExpandMode.EXPAND ? 8 : 12,
|
||||
height: _mailboxNode.expandMode == ExpandMode.EXPAND ? 8 : 12,
|
||||
color: selectMode == SelectMode.ACTIVE
|
||||
? AppColor.mailboxSelectedIconColor
|
||||
: AppColor.mailboxIconColor,
|
||||
fit: BoxFit.fill),
|
||||
)
|
||||
: SizedBox.shrink())
|
||||
)
|
||||
: SizedBox.shrink())
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@@ -14,17 +14,13 @@ class MailboxTileBuilder {
|
||||
|
||||
final PresentationMailbox _presentationMailbox;
|
||||
final SelectMode selectMode;
|
||||
final BuildContext _context;
|
||||
final ImagePaths _imagePaths;
|
||||
final ResponsiveUtils _responsiveUtils;
|
||||
final MailboxDisplayed mailboxDisplayed;
|
||||
|
||||
OnOpenMailboxActionClick? _onOpenMailboxActionClick;
|
||||
|
||||
MailboxTileBuilder(
|
||||
this._context,
|
||||
this._imagePaths,
|
||||
this._responsiveUtils,
|
||||
this._presentationMailbox,
|
||||
{
|
||||
this.selectMode = SelectMode.INACTIVE,
|
||||
@@ -53,8 +49,6 @@ class MailboxTileBuilder {
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: ListTile(
|
||||
focusColor: AppColor.primaryLightColor,
|
||||
hoverColor: AppColor.primaryLightColor,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
onTap: () => {
|
||||
if (_onOpenMailboxActionClick != null) {
|
||||
@@ -62,10 +56,7 @@ class MailboxTileBuilder {
|
||||
}
|
||||
},
|
||||
leading: Padding(
|
||||
padding: EdgeInsets.only(left: mailboxDisplayed == MailboxDisplayed.mailbox
|
||||
? _responsiveUtils.isMobile(_context) ? 40 : 20
|
||||
: 40
|
||||
),
|
||||
padding: EdgeInsets.only(left: 24),
|
||||
child: SvgPicture.asset(
|
||||
'${_presentationMailbox.getMailboxIcon(_imagePaths)}',
|
||||
width: 24,
|
||||
@@ -89,7 +80,7 @@ class MailboxTileBuilder {
|
||||
)),
|
||||
trailing: mailboxDisplayed == MailboxDisplayed.mailbox
|
||||
? Padding(
|
||||
padding: EdgeInsets.only(right: _responsiveUtils.isMobile(_context) ? 36 : 24, left: 16),
|
||||
padding: EdgeInsets.only(right: 24, left: 16),
|
||||
child: Text(
|
||||
'${_presentationMailbox.getCountUnReadEmails()}',
|
||||
maxLines: 1,
|
||||
|
||||
Reference in New Issue
Block a user