Merge remote-tracking branch 'origin/redesign' into minor-redesign-fixes
This commit is contained in:
commit
f80122a5e0
BIN
assets/family sharing.png
Normal file
BIN
assets/family sharing.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
Binary file not shown.
Before Width: | Height: | Size: 47 KiB |
|
@ -21,7 +21,6 @@ final lightThemeData = ThemeData(
|
||||||
primaryColorLight: Colors.black54,
|
primaryColorLight: Colors.black54,
|
||||||
iconTheme: IconThemeData(color: Colors.black),
|
iconTheme: IconThemeData(color: Colors.black),
|
||||||
primaryIconTheme: IconThemeData(color: Colors.red, opacity: 1.0, size: 50.0),
|
primaryIconTheme: IconThemeData(color: Colors.red, opacity: 1.0, size: 50.0),
|
||||||
bottomAppBarColor: Color.fromRGBO(196, 196, 196, 0.6),
|
|
||||||
colorScheme: ColorScheme.light(
|
colorScheme: ColorScheme.light(
|
||||||
primary: Colors.black, secondary: Color.fromARGB(255, 163, 163, 163)),
|
primary: Colors.black, secondary: Color.fromARGB(255, 163, 163, 163)),
|
||||||
accentColor: Color.fromRGBO(0, 0, 0, 0.6),
|
accentColor: Color.fromRGBO(0, 0, 0, 0.6),
|
||||||
|
@ -89,15 +88,12 @@ final darkThemeData = ThemeData(
|
||||||
iconTheme: IconThemeData(color: Colors.white),
|
iconTheme: IconThemeData(color: Colors.white),
|
||||||
primaryIconTheme: IconThemeData(color: Colors.red, opacity: 1.0, size: 50.0),
|
primaryIconTheme: IconThemeData(color: Colors.red, opacity: 1.0, size: 50.0),
|
||||||
hintColor: Colors.grey,
|
hintColor: Colors.grey,
|
||||||
bottomAppBarColor: Color.fromRGBO(255, 255, 255, 0.7),
|
|
||||||
|
|
||||||
colorScheme: ColorScheme.dark(primary: Colors.white),
|
colorScheme: ColorScheme.dark(primary: Colors.white),
|
||||||
accentColor: Color.fromRGBO(45, 194, 98, 0.2),
|
accentColor: Color.fromRGBO(45, 194, 98, 0.2),
|
||||||
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
|
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
|
||||||
buttonTheme: ButtonThemeData().copyWith(
|
buttonTheme: ButtonThemeData().copyWith(
|
||||||
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
|
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
|
||||||
),
|
),
|
||||||
// primaryColor: Colors.red,
|
|
||||||
textTheme: _buildTextTheme(Colors.white),
|
textTheme: _buildTextTheme(Colors.white),
|
||||||
toggleableActiveColor: Colors.green[400],
|
toggleableActiveColor: Colors.green[400],
|
||||||
outlinedButtonTheme: buildOutlinedButtonThemeData(
|
outlinedButtonTheme: buildOutlinedButtonThemeData(
|
||||||
|
|
|
@ -66,6 +66,14 @@ extension CustomColorScheme on ColorScheme {
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: Colors.black,
|
||||||
itemStyle: TextStyle(color: Colors.white),
|
itemStyle: TextStyle(color: Colors.white),
|
||||||
cancelStyle: TextStyle(color: Colors.white));
|
cancelStyle: TextStyle(color: Colors.white));
|
||||||
|
|
||||||
|
Color get stepProgressUnselectedColor => brightness == Brightness.light
|
||||||
|
? Color.fromRGBO(196, 196, 196, 0.6)
|
||||||
|
: Color.fromRGBO(255, 255, 255, 0.7);
|
||||||
|
|
||||||
|
Color get gNavBackgoundColor => brightness == Brightness.light
|
||||||
|
? Color.fromRGBO(196, 196, 196, 0.6)
|
||||||
|
: Color.fromRGBO(255, 255, 255, 0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
OutlinedButtonThemeData buildOutlinedButtonThemeData(
|
OutlinedButtonThemeData buildOutlinedButtonThemeData(
|
||||||
|
|
|
@ -49,7 +49,6 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
|
||||||
Container(
|
Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: 64,
|
height: 64,
|
||||||
padding: const EdgeInsets.fromLTRB(50, 0, 50, 0),
|
|
||||||
child: OutlinedButton(
|
child: OutlinedButton(
|
||||||
child: Text(
|
child: Text(
|
||||||
"Update",
|
"Update",
|
||||||
|
|
|
@ -9,16 +9,17 @@ class DynamicFAB extends StatelessWidget {
|
||||||
final String buttonText;
|
final String buttonText;
|
||||||
final Function onPressedFunction;
|
final Function onPressedFunction;
|
||||||
|
|
||||||
const DynamicFAB(
|
DynamicFAB(
|
||||||
{this.isKeypadOpen,
|
{Key key,
|
||||||
|
this.isKeypadOpen,
|
||||||
this.buttonText,
|
this.buttonText,
|
||||||
this.isFormValid,
|
this.isFormValid,
|
||||||
this.onPressedFunction});
|
this.onPressedFunction})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
//var here
|
|
||||||
return Container(
|
return Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
|
@ -41,7 +42,7 @@ class DynamicFAB extends StatelessWidget {
|
||||||
foregroundColor:
|
foregroundColor:
|
||||||
Theme.of(context).colorScheme.dynamicFABTextColor,
|
Theme.of(context).colorScheme.dynamicFABTextColor,
|
||||||
child: Transform.rotate(
|
child: Transform.rotate(
|
||||||
angle: isFormValid ? 0 : math.pi / 2, //var here
|
angle: isFormValid ? 0 : math.pi / 2,
|
||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.chevron_right,
|
Icons.chevron_right,
|
||||||
size: 36,
|
size: 36,
|
||||||
|
|
|
@ -8,6 +8,7 @@ import 'package:flutter/services.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:password_strength/password_strength.dart';
|
import 'package:password_strength/password_strength.dart';
|
||||||
import 'package:photos/core/configuration.dart';
|
import 'package:photos/core/configuration.dart';
|
||||||
|
import 'package:photos/ente_theme_data.dart';
|
||||||
import 'package:photos/models/billing_plan.dart';
|
import 'package:photos/models/billing_plan.dart';
|
||||||
import 'package:photos/services/billing_service.dart';
|
import 'package:photos/services/billing_service.dart';
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
|
@ -67,7 +68,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
|
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
|
||||||
|
|
||||||
FloatingActionButtonLocation fabLocation() {
|
FloatingActionButtonLocation fabLocation() {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
|
@ -95,7 +96,8 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
|
||||||
currentStep: 1,
|
currentStep: 1,
|
||||||
selectedColor: Theme.of(context).buttonColor,
|
selectedColor: Theme.of(context).buttonColor,
|
||||||
roundedEdges: Radius.circular(10),
|
roundedEdges: Radius.circular(10),
|
||||||
unselectedColor: Theme.of(context).bottomAppBarColor,
|
unselectedColor:
|
||||||
|
Theme.of(context).colorScheme.stepProgressUnselectedColor,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -117,7 +117,7 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.all(8),
|
padding: EdgeInsets.all(8),
|
||||||
),
|
),
|
||||||
Text("download"),
|
Text("Download"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -141,7 +141,7 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.all(8),
|
padding: EdgeInsets.all(8),
|
||||||
),
|
),
|
||||||
Text("edit time"),
|
Text("Edit time"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -162,7 +162,7 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.all(8),
|
padding: EdgeInsets.all(8),
|
||||||
),
|
),
|
||||||
Text("delete"),
|
Text("Delete"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -211,7 +211,7 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
final shouldBlockUser = file.uploadedFileID == null;
|
final shouldBlockUser = file.uploadedFileID == null;
|
||||||
ProgressDialog dialog;
|
ProgressDialog dialog;
|
||||||
if (shouldBlockUser) {
|
if (shouldBlockUser) {
|
||||||
dialog = createProgressDialog(context, "adding to favorites...");
|
dialog = createProgressDialog(context, "Ddding to favorites...");
|
||||||
await dialog.show();
|
await dialog.show();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
@ -279,7 +279,7 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
final List<Widget> actions = [];
|
final List<Widget> actions = [];
|
||||||
if (file.uploadedFileID == null || file.localID == null) {
|
if (file.uploadedFileID == null || file.localID == null) {
|
||||||
actions.add(CupertinoActionSheetAction(
|
actions.add(CupertinoActionSheetAction(
|
||||||
child: Text("everywhere"),
|
child: Text("Everywhere"),
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await deleteFilesFromEverywhere(context, [file]);
|
await deleteFilesFromEverywhere(context, [file]);
|
||||||
|
@ -290,11 +290,11 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
} else {
|
} else {
|
||||||
// uploaded file which is present locally too
|
// uploaded file which is present locally too
|
||||||
actions.add(CupertinoActionSheetAction(
|
actions.add(CupertinoActionSheetAction(
|
||||||
child: Text("device"),
|
child: Text("Device"),
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await deleteFilesOnDeviceOnly(context, [file]);
|
await deleteFilesOnDeviceOnly(context, [file]);
|
||||||
showToast("file deleted from device");
|
showToast("File deleted from device");
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
// TODO: Fix behavior when inside a device folder
|
// TODO: Fix behavior when inside a device folder
|
||||||
},
|
},
|
||||||
|
@ -305,14 +305,14 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await deleteFilesFromRemoteOnly(context, [file]);
|
await deleteFilesFromRemoteOnly(context, [file]);
|
||||||
showShortToast("moved to trash");
|
showShortToast("Moved to trash");
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
// TODO: Fix behavior when inside a collection
|
// TODO: Fix behavior when inside a collection
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
actions.add(CupertinoActionSheetAction(
|
actions.add(CupertinoActionSheetAction(
|
||||||
child: Text("everywhere"),
|
child: Text("Everywhere"),
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await deleteFilesFromEverywhere(context, [file]);
|
await deleteFilesFromEverywhere(context, [file]);
|
||||||
|
@ -322,10 +322,10 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
final action = CupertinoActionSheet(
|
final action = CupertinoActionSheet(
|
||||||
title: Text("delete file?"),
|
title: Text("Delete file?"),
|
||||||
actions: actions,
|
actions: actions,
|
||||||
cancelButton: CupertinoActionSheetAction(
|
cancelButton: CupertinoActionSheetAction(
|
||||||
child: Text("cancel"),
|
child: Text("Cancel"),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
},
|
},
|
||||||
|
@ -335,7 +335,7 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _download(File file) async {
|
Future<void> _download(File file) async {
|
||||||
final dialog = createProgressDialog(context, "downloading...");
|
final dialog = createProgressDialog(context, "Downloading...");
|
||||||
await dialog.show();
|
await dialog.show();
|
||||||
FileType type = file.fileType;
|
FileType type = file.fileType;
|
||||||
// save and track image for livePhoto/image and video for FileType.video
|
// save and track image for livePhoto/image and video for FileType.video
|
||||||
|
@ -364,9 +364,9 @@ class FadingAppBarState extends State<FadingAppBar> {
|
||||||
Bus.instance.fire(LocalPhotosUpdatedEvent([file]));
|
Bus.instance.fire(LocalPhotosUpdatedEvent([file]));
|
||||||
await dialog.hide();
|
await dialog.hide();
|
||||||
if (file.fileType == FileType.livePhoto) {
|
if (file.fileType == FileType.livePhoto) {
|
||||||
showToast("photo and video saved to gallery");
|
showToast("Photo and video saved to gallery");
|
||||||
} else {
|
} else {
|
||||||
showToast("file saved to gallery");
|
showToast("File saved to gallery");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,7 +232,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
|
||||||
Icon(Icons.feed_outlined, color: infoColor),
|
Icon(Icons.feed_outlined, color: infoColor),
|
||||||
Padding(padding: EdgeInsets.all(4)),
|
Padding(padding: EdgeInsets.all(4)),
|
||||||
Text(
|
Text(
|
||||||
"view raw EXIF",
|
"View raw EXIF",
|
||||||
style: TextStyle(color: infoColor),
|
style: TextStyle(color: infoColor),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -260,7 +260,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
|
||||||
),
|
),
|
||||||
Padding(padding: EdgeInsets.all(4)),
|
Padding(padding: EdgeInsets.all(4)),
|
||||||
Text(
|
Text(
|
||||||
"no exif",
|
"No exif",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white.withOpacity(0.5),
|
color: Colors.white.withOpacity(0.5),
|
||||||
),
|
),
|
||||||
|
@ -268,7 +268,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
showToast("this image has no exif data");
|
showShortToast("This image has no exif data");
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -277,7 +277,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
|
||||||
actions.add(
|
actions.add(
|
||||||
TextButton(
|
TextButton(
|
||||||
child: Text(
|
child: Text(
|
||||||
"close",
|
"Close",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: infoColor,
|
color: infoColor,
|
||||||
),
|
),
|
||||||
|
|
|
@ -287,7 +287,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
widget.collection.type != CollectionType.favorites) {
|
widget.collection.type != CollectionType.favorites) {
|
||||||
actions.add(
|
actions.add(
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: "move",
|
message: "Move",
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
color: Colors.black, //same for both themes
|
color: Colors.black, //same for both themes
|
||||||
icon: Icon(Platform.isAndroid
|
icon: Icon(Platform.isAndroid
|
||||||
|
@ -302,7 +302,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
}
|
}
|
||||||
actions.add(
|
actions.add(
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: "share",
|
message: "Share",
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
color: Colors.black, //same for both themes
|
color: Colors.black, //same for both themes
|
||||||
key: shareButtonKey,
|
key: shareButtonKey,
|
||||||
|
@ -318,7 +318,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
widget.type == GalleryType.local_folder) {
|
widget.type == GalleryType.local_folder) {
|
||||||
actions.add(
|
actions.add(
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: "delete",
|
message: "Delete",
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
color: Colors.black, //same for both themes
|
color: Colors.black, //same for both themes
|
||||||
icon:
|
icon:
|
||||||
|
@ -333,7 +333,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
if (widget.collection.type == CollectionType.folder) {
|
if (widget.collection.type == CollectionType.folder) {
|
||||||
actions.add(
|
actions.add(
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: "delete",
|
message: "Delete",
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
color: Colors.black, //same for both themes
|
color: Colors.black, //same for both themes
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
|
@ -348,7 +348,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
} else {
|
} else {
|
||||||
actions.add(
|
actions.add(
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: "remove",
|
message: "Remove",
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
color: Colors.black, //same for both themes
|
color: Colors.black, //same for both themes
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
|
@ -406,7 +406,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
));
|
));
|
||||||
actions.add(
|
actions.add(
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: "delete permanently",
|
message: "Delete permanently",
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
color: Colors.black, //same for both themes
|
color: Colors.black, //same for both themes
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
|
@ -455,14 +455,14 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
final actions = <Widget>[];
|
final actions = <Widget>[];
|
||||||
if (containsUploadedFile && containsLocalFile) {
|
if (containsUploadedFile && containsLocalFile) {
|
||||||
actions.add(CupertinoActionSheetAction(
|
actions.add(CupertinoActionSheetAction(
|
||||||
child: Text("device"),
|
child: Text("Device"),
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
await deleteFilesOnDeviceOnly(
|
await deleteFilesOnDeviceOnly(
|
||||||
context, widget.selectedFiles.files.toList());
|
context, widget.selectedFiles.files.toList());
|
||||||
_clearSelectedFiles();
|
_clearSelectedFiles();
|
||||||
showToast("files deleted from device");
|
showToast("Files deleted from device");
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
actions.add(CupertinoActionSheetAction(
|
actions.add(CupertinoActionSheetAction(
|
||||||
|
@ -473,11 +473,11 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
await deleteFilesFromRemoteOnly(
|
await deleteFilesFromRemoteOnly(
|
||||||
context, widget.selectedFiles.files.toList());
|
context, widget.selectedFiles.files.toList());
|
||||||
_clearSelectedFiles();
|
_clearSelectedFiles();
|
||||||
showShortToast("moved to trash");
|
showShortToast("Moved to trash");
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
actions.add(CupertinoActionSheetAction(
|
actions.add(CupertinoActionSheetAction(
|
||||||
child: Text("everywhere"),
|
child: Text("Everywhere"),
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
|
@ -499,14 +499,14 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
final action = CupertinoActionSheet(
|
final action = CupertinoActionSheet(
|
||||||
title: Text("delete " +
|
title: Text("Delete " +
|
||||||
count.toString() +
|
count.toString() +
|
||||||
" file" +
|
" file" +
|
||||||
(count == 1 ? "" : "s") +
|
(count == 1 ? "" : "s") +
|
||||||
(containsUploadedFile && containsLocalFile ? " from" : "?")),
|
(containsUploadedFile && containsLocalFile ? " from" : "?")),
|
||||||
actions: actions,
|
actions: actions,
|
||||||
cancelButton: CupertinoActionSheetAction(
|
cancelButton: CupertinoActionSheetAction(
|
||||||
child: Text("cancel"),
|
child: Text("Cancel"),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
},
|
},
|
||||||
|
@ -518,7 +518,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
void _showRemoveFromCollectionSheet(BuildContext context) {
|
void _showRemoveFromCollectionSheet(BuildContext context) {
|
||||||
final count = widget.selectedFiles.files.length;
|
final count = widget.selectedFiles.files.length;
|
||||||
final action = CupertinoActionSheet(
|
final action = CupertinoActionSheet(
|
||||||
title: Text("remove " +
|
title: Text("Remove " +
|
||||||
count.toString() +
|
count.toString() +
|
||||||
" file" +
|
" file" +
|
||||||
(count == 1 ? "" : "s") +
|
(count == 1 ? "" : "s") +
|
||||||
|
@ -527,11 +527,11 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
"?"),
|
"?"),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
CupertinoActionSheetAction(
|
CupertinoActionSheetAction(
|
||||||
child: Text("remove"),
|
child: Text("Remove"),
|
||||||
isDestructiveAction: true,
|
isDestructiveAction: true,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
final dialog = createProgressDialog(context, "removing files...");
|
final dialog = createProgressDialog(context, "Removing files...");
|
||||||
await dialog.show();
|
await dialog.show();
|
||||||
try {
|
try {
|
||||||
await CollectionsService.instance.removeFromCollection(
|
await CollectionsService.instance.removeFromCollection(
|
||||||
|
@ -547,7 +547,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
cancelButton: CupertinoActionSheetAction(
|
cancelButton: CupertinoActionSheetAction(
|
||||||
child: Text("cancel"),
|
child: Text("Cancel"),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
Navigator.of(context, rootNavigator: true).pop();
|
||||||
},
|
},
|
||||||
|
|
|
@ -592,9 +592,9 @@ class _HomeBottomNavigationBarState extends State<HomeBottomNavigationBar> {
|
||||||
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
|
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
|
||||||
child: GNav(
|
child: GNav(
|
||||||
curve: Curves.easeOutExpo,
|
curve: Curves.easeOutExpo,
|
||||||
// backgroundColor: Colors.white.withOpacity(0.6),
|
backgroundColor: Theme.of(context)
|
||||||
backgroundColor:
|
.colorScheme
|
||||||
Theme.of(context).bottomAppBarColor,
|
.gNavBackgoundColor,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
rippleColor: Colors.white.withOpacity(0.2),
|
rippleColor: Colors.white.withOpacity(0.2),
|
||||||
hoverColor: Colors.white.withOpacity(0.2),
|
hoverColor: Colors.white.withOpacity(0.2),
|
||||||
|
|
|
@ -29,7 +29,7 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
|
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
|
||||||
|
|
||||||
FloatingActionButtonLocation fabLocation() {
|
FloatingActionButtonLocation fabLocation() {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:photos/ente_theme_data.dart';
|
||||||
import 'package:photos/services/user_service.dart';
|
import 'package:photos/services/user_service.dart';
|
||||||
import 'package:photos/ui/common/dynamicFAB.dart';
|
import 'package:photos/ui/common/dynamicFAB.dart';
|
||||||
import 'package:step_progress_indicator/step_progress_indicator.dart';
|
import 'package:step_progress_indicator/step_progress_indicator.dart';
|
||||||
|
@ -25,7 +26,7 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
|
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
|
||||||
|
|
||||||
FloatingActionButtonLocation fabLocation() {
|
FloatingActionButtonLocation fabLocation() {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
|
@ -49,14 +50,17 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
|
||||||
? Hero(
|
? Hero(
|
||||||
tag: "sign_up",
|
tag: "sign_up",
|
||||||
child: Material(
|
child: Material(
|
||||||
type: MaterialType.transparency,
|
type: MaterialType.transparency,
|
||||||
child: StepProgressIndicator(
|
child: StepProgressIndicator(
|
||||||
totalSteps: 4,
|
totalSteps: 4,
|
||||||
currentStep: 2,
|
currentStep: 2,
|
||||||
selectedColor: Theme.of(context).buttonColor,
|
selectedColor: Theme.of(context).buttonColor,
|
||||||
roundedEdges: Radius.circular(10),
|
roundedEdges: Radius.circular(10),
|
||||||
unselectedColor: Theme.of(context).bottomAppBarColor,
|
unselectedColor: Theme.of(context)
|
||||||
)),
|
.colorScheme
|
||||||
|
.stepProgressUnselectedColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
|
|
|
@ -75,7 +75,7 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
|
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
|
||||||
|
|
||||||
FloatingActionButtonLocation fabLocation() {
|
FloatingActionButtonLocation fabLocation() {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
|
|
|
@ -32,7 +32,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
|
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
|
||||||
|
|
||||||
FloatingActionButtonLocation fabLocation() {
|
FloatingActionButtonLocation fabLocation() {
|
||||||
if (isKeypadOpen) {
|
if (isKeypadOpen) {
|
||||||
|
|
|
@ -25,8 +25,9 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
||||||
children: [
|
children: [
|
||||||
Center(
|
Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
"you are on a family plan!",
|
"You are on a family plan!",
|
||||||
style: TextStyle(fontSize: 14, color: Colors.white),
|
style:
|
||||||
|
Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 14),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
|
@ -39,7 +40,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: "please contact ",
|
text: "Please contact ",
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: familyAdmin,
|
text: familyAdmin,
|
||||||
|
@ -49,10 +50,10 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
||||||
text: " to manage your family subscription",
|
text: " to manage your family subscription",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
style: TextStyle(
|
style: Theme.of(context)
|
||||||
fontFamily: 'Ubuntu',
|
.textTheme
|
||||||
fontSize: 14,
|
.bodyText1
|
||||||
),
|
.copyWith(fontSize: 14),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -60,7 +61,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
),
|
),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
"assets/family_sharing.jpg",
|
"assets/family sharing.png",
|
||||||
height: 256,
|
height: 256,
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
|
@ -99,7 +100,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
children: const [
|
children: const [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: "please contact ",
|
text: "Please contact ",
|
||||||
),
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: "support@ente.io",
|
text: "support@ente.io",
|
||||||
|
@ -109,10 +110,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
|
||||||
text: " for help",
|
text: " for help",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
style: TextStyle(
|
style: Theme.of(context).textTheme.overline,
|
||||||
fontFamily: 'Ubuntu-Regular',
|
|
||||||
fontSize: 12,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:async';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
|
import 'package:photos/ente_theme_data.dart';
|
||||||
import 'package:photos/models/billing_plan.dart';
|
import 'package:photos/models/billing_plan.dart';
|
||||||
import 'package:photos/models/subscription.dart';
|
import 'package:photos/models/subscription.dart';
|
||||||
import 'package:photos/models/user_details.dart';
|
import 'package:photos/models/user_details.dart';
|
||||||
|
@ -132,7 +133,9 @@ class _StripeSubscriptionPageState extends State<StripeSubscriptionPage> {
|
||||||
currentStep: 4,
|
currentStep: 4,
|
||||||
selectedColor: Theme.of(context).buttonColor,
|
selectedColor: Theme.of(context).buttonColor,
|
||||||
roundedEdges: Radius.circular(10),
|
roundedEdges: Radius.circular(10),
|
||||||
unselectedColor: Theme.of(context).bottomAppBarColor,
|
unselectedColor: Theme.of(context)
|
||||||
|
.colorScheme
|
||||||
|
.stepProgressUnselectedColor,
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
: AppBar(
|
: AppBar(
|
||||||
|
|
|
@ -61,7 +61,8 @@ class _RecoveryKeyPageState extends State<RecoveryKeyPage> {
|
||||||
currentStep: 3,
|
currentStep: 3,
|
||||||
selectedColor: Theme.of(context).buttonColor,
|
selectedColor: Theme.of(context).buttonColor,
|
||||||
roundedEdges: Radius.circular(10),
|
roundedEdges: Radius.circular(10),
|
||||||
unselectedColor: Theme.of(context).bottomAppBarColor,
|
unselectedColor:
|
||||||
|
Theme.of(context).colorScheme.stepProgressUnselectedColor,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
@ -18,7 +18,7 @@ final _logger = Logger("ShareUtil");
|
||||||
// share is used to share media/files from ente to other apps
|
// share is used to share media/files from ente to other apps
|
||||||
Future<void> share(BuildContext context, List<File> files,
|
Future<void> share(BuildContext context, List<File> files,
|
||||||
{GlobalKey shareButtonKey}) async {
|
{GlobalKey shareButtonKey}) async {
|
||||||
final dialog = createProgressDialog(context, "preparing...");
|
final dialog = createProgressDialog(context, "Preparing...");
|
||||||
await dialog.show();
|
await dialog.show();
|
||||||
final List<Future<String>> pathFutures = [];
|
final List<Future<String>> pathFutures = [];
|
||||||
for (File file in files) {
|
for (File file in files) {
|
||||||
|
|
Loading…
Reference in a new issue