TF-1665 Enable app grid on mobile
(cherry picked from commit c9f9a2c214316606c8d3f9d63cf38c326369b112)
This commit is contained in:
@@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_fold
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_footer_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class MailboxView extends GetWidget<MailboxController>
|
||||
@@ -189,20 +190,25 @@ class MailboxView extends GetWidget<MailboxController>
|
||||
return _buildUserInformation(context);
|
||||
}),
|
||||
_buildLoadingView(),
|
||||
AppConfig.appGridDashboardAvailable
|
||||
? Column(children: [
|
||||
buildAppGridDashboard(context, _responsiveUtils, _imagePaths, controller),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
])
|
||||
: const SizedBox.shrink(),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() {
|
||||
if (controller.defaultMailboxIsNotEmpty) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(top: 16),
|
||||
child: _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.exchange,
|
||||
controller.defaultRootNode
|
||||
),
|
||||
return _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.exchange,
|
||||
controller.defaultRootNode
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const SizedBox(height: 8),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
const SizedBox(height: 12),
|
||||
Container(
|
||||
@@ -247,19 +253,19 @@ class MailboxView extends GetWidget<MailboxController>
|
||||
]),
|
||||
]),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() {
|
||||
if (controller.personalMailboxIsNotEmpty) {
|
||||
return _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.personalMailboxes,
|
||||
controller.personalRootNode
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const SizedBox(height: 8),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() {
|
||||
if (controller.personalMailboxIsNotEmpty) {
|
||||
return _buildMailboxCategory(
|
||||
context,
|
||||
MailboxCategories.personalMailboxes,
|
||||
controller.personalRootNode
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
const SizedBox(height: 8),
|
||||
Obx(() {
|
||||
if (controller.teamMailboxesIsNotEmpty) {
|
||||
return _buildMailboxCategory(
|
||||
|
||||
@@ -11,7 +11,6 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_catego
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_information_widget_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_footer_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
@@ -79,13 +78,13 @@ class MailboxView extends GetWidget<MailboxController>
|
||||
right: AppUtils.isDirectionRTL(context) ? _responsiveUtils.isDesktop(context) ? 32 : 16 : 0
|
||||
),
|
||||
child: Row(children: [
|
||||
(SloganBuilder(arrangedByHorizontal: true)
|
||||
..setSloganText(AppLocalizations.of(context).app_name)
|
||||
..setSloganTextAlign(TextAlign.center)
|
||||
..setSloganTextStyle(const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold))
|
||||
..setSizeLogo(24)
|
||||
..setLogo(_imagePaths.icLogoTMail))
|
||||
.build(),
|
||||
SloganBuilder(
|
||||
sizeLogo: 24,
|
||||
text: AppLocalizations.of(context).app_name,
|
||||
textAlign: TextAlign.center,
|
||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||
logo: _imagePaths.icLogoTMail
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.mailboxDashBoardController.appInformation.value != null) {
|
||||
return _buildVersionInformation(context, controller.mailboxDashBoardController.appInformation.value!);
|
||||
@@ -122,7 +121,7 @@ class MailboxView extends GetWidget<MailboxController>
|
||||
_buildLoadingView(),
|
||||
AppConfig.appGridDashboardAvailable && _responsiveUtils.isWebNotDesktop(context)
|
||||
? Column(children: [
|
||||
_buildAppGridDashboard(context),
|
||||
buildAppGridDashboard(context, _responsiveUtils, _imagePaths, controller),
|
||||
const SizedBox(height: 8),
|
||||
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
|
||||
const SizedBox(height: 8),
|
||||
@@ -389,90 +388,4 @@ class MailboxView extends GetWidget<MailboxController>
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAppGridDashboard(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
_buildGoToApplicationsCategory(context, MailboxCategories.appGrid),
|
||||
AnimatedContainer(
|
||||
padding: const EdgeInsets.only(top: 8),
|
||||
duration: const Duration(milliseconds: 400),
|
||||
child: Obx(() {
|
||||
return controller.mailboxDashBoardController.appGridDashboardController.appDashboardExpandMode.value == ExpandMode.EXPAND
|
||||
? _buildAppGridInMailboxView(context)
|
||||
: const Offstage();
|
||||
})
|
||||
)
|
||||
]);
|
||||
}
|
||||
|
||||
Widget _buildGoToApplicationsCategory(BuildContext context, MailboxCategories categories) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(
|
||||
top: 8,
|
||||
left: _responsiveUtils.isDesktop(context) ? 0 : 36,
|
||||
right: _responsiveUtils.isDesktop(context) ? 0 : 28
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
buildIconWeb(
|
||||
splashRadius: 5,
|
||||
iconPadding: EdgeInsets.zero,
|
||||
minSize: 12,
|
||||
iconSize: 28,
|
||||
icon: SvgPicture.asset(
|
||||
_imagePaths.icAppDashboard,
|
||||
colorFilter: AppColor.primaryColor.asFilter(),
|
||||
fit: BoxFit.fill
|
||||
),
|
||||
tooltip: AppLocalizations.of(context).appGridTittle),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 12),
|
||||
child: Text(categories.getTitle(context),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
color: AppColor.colorTextButton,
|
||||
fontWeight: FontWeight.w500
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
buildIconWeb(
|
||||
splashRadius: 5,
|
||||
iconPadding: EdgeInsets.zero,
|
||||
minSize: 12,
|
||||
iconSize: 28,
|
||||
icon: Obx(() => SvgPicture.asset(
|
||||
controller.mailboxDashBoardController.appGridDashboardController.appDashboardExpandMode.value == ExpandMode.COLLAPSE
|
||||
? _imagePaths.icCollapseFolder
|
||||
: _imagePaths.icExpandFolder,
|
||||
colorFilter: AppColor.primaryColor.asFilter(),
|
||||
fit: BoxFit.fill
|
||||
)),
|
||||
tooltip: AppLocalizations.of(context).appGridTittle,
|
||||
onTap: () => controller.toggleMailboxCategories(categories)
|
||||
),
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAppGridInMailboxView(BuildContext context) {
|
||||
return Obx(() {
|
||||
final linagoraApps = controller.mailboxDashBoardController.appGridDashboardController.linagoraApplications.value;
|
||||
if (linagoraApps != null && linagoraApps.apps.isNotEmpty) {
|
||||
return ListView.builder(
|
||||
shrinkWrap: true,
|
||||
itemCount: linagoraApps.apps.length,
|
||||
itemBuilder: (context, index) {
|
||||
return AppListDashboardItem(linagoraApps.apps[index]);
|
||||
}
|
||||
);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/context_item_m
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
mixin MailboxWidgetMixin {
|
||||
@@ -321,4 +322,98 @@ mixin MailboxWidgetMixin {
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildAppGridDashboard(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
ImagePaths imagePaths,
|
||||
MailboxController controller
|
||||
) {
|
||||
return Column(children: [
|
||||
_buildGoToApplicationsCategory(
|
||||
context,
|
||||
responsiveUtils,
|
||||
imagePaths,
|
||||
MailboxCategories.appGrid,
|
||||
controller),
|
||||
AnimatedContainer(
|
||||
padding: const EdgeInsets.only(top: 8),
|
||||
duration: const Duration(milliseconds: 400),
|
||||
child: Obx(() {
|
||||
return controller.mailboxDashBoardController.appGridDashboardController.appDashboardExpandMode.value == ExpandMode.EXPAND
|
||||
? _buildAppGridInMailboxView(context, controller)
|
||||
: const Offstage();
|
||||
})
|
||||
)
|
||||
]);
|
||||
}
|
||||
|
||||
Widget _buildGoToApplicationsCategory(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils,
|
||||
ImagePaths imagePaths,
|
||||
MailboxCategories categories,
|
||||
MailboxController controller
|
||||
) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(
|
||||
top: 8,
|
||||
left: responsiveUtils.isDesktop(context) ? 0 : 36,
|
||||
right: responsiveUtils.isDesktop(context) ? 0 : 28
|
||||
),
|
||||
child: Row(children: [
|
||||
buildIconWeb(
|
||||
splashRadius: 5,
|
||||
iconPadding: EdgeInsets.zero,
|
||||
minSize: 12,
|
||||
iconSize: 28,
|
||||
icon: SvgPicture.asset(
|
||||
imagePaths.icAppDashboard,
|
||||
colorFilter: AppColor.primaryColor.asFilter(),
|
||||
fit: BoxFit.fill),
|
||||
tooltip: AppLocalizations.of(context).appGridTittle),
|
||||
Expanded(child: Padding(
|
||||
padding: const EdgeInsets.only(left: 12),
|
||||
child: Text(categories.getTitle(context),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
color: AppColor.colorTextButton,
|
||||
fontWeight: FontWeight.w500
|
||||
)
|
||||
)
|
||||
)),
|
||||
buildIconWeb(
|
||||
icon: Obx(() => SvgPicture.asset(
|
||||
controller.mailboxDashBoardController.appGridDashboardController.appDashboardExpandMode.value == ExpandMode.COLLAPSE
|
||||
? imagePaths.icCollapseFolder
|
||||
: imagePaths.icExpandFolder,
|
||||
colorFilter: AppColor.primaryColor.asFilter(),
|
||||
fit: BoxFit.fill
|
||||
)),
|
||||
tooltip: AppLocalizations.of(context).appGridTittle,
|
||||
onTap: () => controller.toggleMailboxCategories(categories)
|
||||
)
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAppGridInMailboxView(BuildContext context, MailboxController controller) {
|
||||
return Obx(() {
|
||||
final linagoraApps = controller.mailboxDashBoardController.appGridDashboardController.linagoraApplications.value;
|
||||
if (linagoraApps != null && linagoraApps.apps.isNotEmpty) {
|
||||
return ListView.builder(
|
||||
shrinkWrap: true,
|
||||
primary: false,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
itemCount: linagoraApps.apps.length,
|
||||
itemBuilder: (context, index) {
|
||||
return AppListDashboardItem(linagoraApps.apps[index]);
|
||||
}
|
||||
);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user