2022-10-28 09:54:30 +00:00
import ' dart:io ' ;
2022-10-28 06:19:49 +00:00
import ' package:flutter/material.dart ' ;
2022-10-28 09:54:30 +00:00
import ' package:photos/core/configuration.dart ' ;
2022-10-28 06:19:49 +00:00
import ' package:photos/theme/ente_theme.dart ' ;
import ' package:photos/ui/components/captioned_text_widget.dart ' ;
2022-11-02 07:39:36 +00:00
import ' package:photos/ui/components/divider_widget.dart ' ;
2022-10-28 06:19:49 +00:00
import ' package:photos/ui/components/icon_button_widget.dart ' ;
import ' package:photos/ui/components/menu_item_widget.dart ' ;
import ' package:photos/ui/components/menu_section_description_widget.dart ' ;
import ' package:photos/ui/components/title_bar_title_widget.dart ' ;
import ' package:photos/ui/components/title_bar_widget.dart ' ;
import ' package:photos/ui/components/toggle_switch_widget.dart ' ;
2022-10-28 14:31:12 +00:00
class BackupSettingsScreen extends StatelessWidget {
2022-10-28 06:19:49 +00:00
const BackupSettingsScreen ( { super . key } ) ;
@ override
Widget build ( BuildContext context ) {
final colorScheme = getEnteColorScheme ( context ) ;
return Scaffold (
body: CustomScrollView (
2022-10-28 10:17:25 +00:00
primary: false ,
2022-10-28 06:19:49 +00:00
slivers: < Widget > [
2022-10-28 10:05:48 +00:00
TitleBarWidget (
flexibleSpaceTitle: const TitleBarTitleWidget (
2022-10-28 06:19:49 +00:00
title: " Backup settings " ,
) ,
actionIcons: [
IconButtonWidget (
icon: Icons . close_outlined ,
2022-11-02 14:19:39 +00:00
iconButtonType: IconButtonType . secondary ,
2022-10-28 10:05:48 +00:00
onTap: ( ) {
Navigator . pop ( context ) ;
2022-11-02 05:51:33 +00:00
Navigator . pop ( context ) ;
2022-10-28 10:05:48 +00:00
} ,
2022-10-28 06:19:49 +00:00
) ,
] ,
) ,
2022-10-29 00:30:38 +00:00
SliverList (
2022-10-28 06:19:49 +00:00
delegate: SliverChildBuilderDelegate (
( context , index ) {
return Padding (
padding: const EdgeInsets . symmetric ( horizontal: 16 ) ,
child: Padding (
padding: const EdgeInsets . symmetric ( vertical: 20 ) ,
child: Column (
mainAxisSize: MainAxisSize . min ,
children: [
Column (
children: [
MenuItemWidget (
captionedTextWidget: const CaptionedTextWidget (
title: " Backup over mobile data " ,
) ,
menuItemColor: colorScheme . fillFaint ,
trailingSwitch: ToggleSwitchWidget (
2022-10-28 14:31:12 +00:00
value: ( ) {
return Configuration . instance
. shouldBackupOverMobileData ( ) ;
} ,
onChanged: ( ) async {
await Configuration . instance
. setBackupOverMobileData (
! Configuration . instance
. shouldBackupOverMobileData ( ) ,
) ;
2022-10-28 09:54:30 +00:00
} ,
2022-10-28 06:19:49 +00:00
) ,
borderRadius: 8 ,
alignCaptionedTextToLeft: true ,
isBottomBorderRadiusRemoved: true ,
isGestureDetectorDisabled: true ,
) ,
2022-11-02 07:39:36 +00:00
DividerWidget (
dividerType: DividerType . menuNoIcon ,
bgColor: colorScheme . fillFaint ,
) ,
2022-10-28 06:19:49 +00:00
MenuItemWidget (
captionedTextWidget: const CaptionedTextWidget (
title: " Backup videos " ,
) ,
menuItemColor: colorScheme . fillFaint ,
trailingSwitch: ToggleSwitchWidget (
2022-10-28 14:31:12 +00:00
value: ( ) = >
2022-10-28 09:54:30 +00:00
Configuration . instance . shouldBackupVideos ( ) ,
2022-10-28 14:31:12 +00:00
onChanged: ( ) = > Configuration . instance
. setShouldBackupVideos (
! Configuration . instance . shouldBackupVideos ( ) ,
) ,
2022-10-28 06:19:49 +00:00
) ,
borderRadius: 8 ,
alignCaptionedTextToLeft: true ,
isTopBorderRadiusRemoved: true ,
isGestureDetectorDisabled: true ,
) ,
] ,
) ,
const SizedBox ( height: 24 ) ,
2022-10-28 09:54:30 +00:00
Platform . isIOS
? Column (
children: [
MenuItemWidget (
captionedTextWidget:
const CaptionedTextWidget (
title: " Disable auto lock " ,
) ,
menuItemColor: colorScheme . fillFaint ,
trailingSwitch: ToggleSwitchWidget (
2022-10-28 14:31:12 +00:00
value: ( ) = > Configuration . instance
2022-10-28 09:54:30 +00:00
. shouldKeepDeviceAwake ( ) ,
2022-10-28 14:31:12 +00:00
onChanged: ( ) {
2022-10-29 05:51:09 +00:00
return Configuration . instance
. setShouldKeepDeviceAwake (
2022-10-28 14:31:12 +00:00
! Configuration . instance
. shouldKeepDeviceAwake ( ) ,
) ;
} ,
2022-10-28 09:54:30 +00:00
) ,
borderRadius: 8 ,
alignCaptionedTextToLeft: true ,
isGestureDetectorDisabled: true ,
) ,
const MenuSectionDescriptionWidget (
content:
" Disable the device screen lock when ente is in the foreground and there is a backup in progress. This is normally not needed, but may help big uploads and initial imports of large libraries complete faster. " ,
)
] ,
)
: const SizedBox . shrink ( ) ,
2022-10-28 06:19:49 +00:00
] ,
) ,
) ,
) ;
} ,
childCount: 1 ,
) ,
) ,
] ,
) ,
) ;
}
}