Merge remote-tracking branch 'origin/redesign' into minor-redesign-fixes

This commit is contained in:
vishnukvmd 2022-06-07 10:35:54 +05:30
commit f80122a5e0
19 changed files with 89 additions and 77 deletions

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

View file

@ -21,7 +21,6 @@ final lightThemeData = ThemeData(
primaryColorLight: Colors.black54,
iconTheme: IconThemeData(color: Colors.black),
primaryIconTheme: IconThemeData(color: Colors.red, opacity: 1.0, size: 50.0),
bottomAppBarColor: Color.fromRGBO(196, 196, 196, 0.6),
colorScheme: ColorScheme.light(
primary: Colors.black, secondary: Color.fromARGB(255, 163, 163, 163)),
accentColor: Color.fromRGBO(0, 0, 0, 0.6),
@ -89,15 +88,12 @@ final darkThemeData = ThemeData(
iconTheme: IconThemeData(color: Colors.white),
primaryIconTheme: IconThemeData(color: Colors.red, opacity: 1.0, size: 50.0),
hintColor: Colors.grey,
bottomAppBarColor: Color.fromRGBO(255, 255, 255, 0.7),
colorScheme: ColorScheme.dark(primary: Colors.white),
accentColor: Color.fromRGBO(45, 194, 98, 0.2),
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
buttonTheme: ButtonThemeData().copyWith(
buttonColor: Color.fromRGBO(45, 194, 98, 1.0),
),
// primaryColor: Colors.red,
textTheme: _buildTextTheme(Colors.white),
toggleableActiveColor: Colors.green[400],
outlinedButtonTheme: buildOutlinedButtonThemeData(

View file

@ -66,6 +66,14 @@ extension CustomColorScheme on ColorScheme {
backgroundColor: Colors.black,
itemStyle: 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(

View file

@ -49,7 +49,6 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
Container(
width: double.infinity,
height: 64,
padding: const EdgeInsets.fromLTRB(50, 0, 50, 0),
child: OutlinedButton(
child: Text(
"Update",

View file

@ -9,16 +9,17 @@ class DynamicFAB extends StatelessWidget {
final String buttonText;
final Function onPressedFunction;
const DynamicFAB(
{this.isKeypadOpen,
DynamicFAB(
{Key key,
this.isKeypadOpen,
this.buttonText,
this.isFormValid,
this.onPressedFunction});
this.onPressedFunction})
: super(key: key);
@override
Widget build(BuildContext context) {
if (isKeypadOpen) {
//var here
return Container(
decoration: BoxDecoration(
boxShadow: [
@ -41,7 +42,7 @@ class DynamicFAB extends StatelessWidget {
foregroundColor:
Theme.of(context).colorScheme.dynamicFABTextColor,
child: Transform.rotate(
angle: isFormValid ? 0 : math.pi / 2, //var here
angle: isFormValid ? 0 : math.pi / 2,
child: Icon(
Icons.chevron_right,
size: 36,

View file

@ -8,6 +8,7 @@ import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:password_strength/password_strength.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/ente_theme_data.dart';
import 'package:photos/models/billing_plan.dart';
import 'package:photos/services/billing_service.dart';
import 'package:photos/services/user_service.dart';
@ -67,7 +68,7 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
@override
Widget build(BuildContext context) {
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
FloatingActionButtonLocation fabLocation() {
if (isKeypadOpen) {
@ -95,7 +96,8 @@ class _EmailEntryPageState extends State<EmailEntryPage> {
currentStep: 1,
selectedColor: Theme.of(context).buttonColor,
roundedEdges: Radius.circular(10),
unselectedColor: Theme.of(context).bottomAppBarColor,
unselectedColor:
Theme.of(context).colorScheme.stepProgressUnselectedColor,
)),
),
);

View file

@ -117,7 +117,7 @@ class FadingAppBarState extends State<FadingAppBar> {
Padding(
padding: EdgeInsets.all(8),
),
Text("download"),
Text("Download"),
],
),
),
@ -141,7 +141,7 @@ class FadingAppBarState extends State<FadingAppBar> {
Padding(
padding: EdgeInsets.all(8),
),
Text("edit time"),
Text("Edit time"),
],
),
),
@ -162,7 +162,7 @@ class FadingAppBarState extends State<FadingAppBar> {
Padding(
padding: EdgeInsets.all(8),
),
Text("delete"),
Text("Delete"),
],
),
),
@ -211,7 +211,7 @@ class FadingAppBarState extends State<FadingAppBar> {
final shouldBlockUser = file.uploadedFileID == null;
ProgressDialog dialog;
if (shouldBlockUser) {
dialog = createProgressDialog(context, "adding to favorites...");
dialog = createProgressDialog(context, "Ddding to favorites...");
await dialog.show();
}
try {
@ -279,7 +279,7 @@ class FadingAppBarState extends State<FadingAppBar> {
final List<Widget> actions = [];
if (file.uploadedFileID == null || file.localID == null) {
actions.add(CupertinoActionSheetAction(
child: Text("everywhere"),
child: Text("Everywhere"),
isDestructiveAction: true,
onPressed: () async {
await deleteFilesFromEverywhere(context, [file]);
@ -290,11 +290,11 @@ class FadingAppBarState extends State<FadingAppBar> {
} else {
// uploaded file which is present locally too
actions.add(CupertinoActionSheetAction(
child: Text("device"),
child: Text("Device"),
isDestructiveAction: true,
onPressed: () async {
await deleteFilesOnDeviceOnly(context, [file]);
showToast("file deleted from device");
showToast("File deleted from device");
Navigator.of(context, rootNavigator: true).pop();
// TODO: Fix behavior when inside a device folder
},
@ -305,14 +305,14 @@ class FadingAppBarState extends State<FadingAppBar> {
isDestructiveAction: true,
onPressed: () async {
await deleteFilesFromRemoteOnly(context, [file]);
showShortToast("moved to trash");
showShortToast("Moved to trash");
Navigator.of(context, rootNavigator: true).pop();
// TODO: Fix behavior when inside a collection
},
));
actions.add(CupertinoActionSheetAction(
child: Text("everywhere"),
child: Text("Everywhere"),
isDestructiveAction: true,
onPressed: () async {
await deleteFilesFromEverywhere(context, [file]);
@ -322,10 +322,10 @@ class FadingAppBarState extends State<FadingAppBar> {
));
}
final action = CupertinoActionSheet(
title: Text("delete file?"),
title: Text("Delete file?"),
actions: actions,
cancelButton: CupertinoActionSheetAction(
child: Text("cancel"),
child: Text("Cancel"),
onPressed: () {
Navigator.of(context, rootNavigator: true).pop();
},
@ -335,7 +335,7 @@ class FadingAppBarState extends State<FadingAppBar> {
}
Future<void> _download(File file) async {
final dialog = createProgressDialog(context, "downloading...");
final dialog = createProgressDialog(context, "Downloading...");
await dialog.show();
FileType type = file.fileType;
// 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]));
await dialog.hide();
if (file.fileType == FileType.livePhoto) {
showToast("photo and video saved to gallery");
showToast("Photo and video saved to gallery");
} else {
showToast("file saved to gallery");
showToast("File saved to gallery");
}
}
}

View file

@ -232,7 +232,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
Icon(Icons.feed_outlined, color: infoColor),
Padding(padding: EdgeInsets.all(4)),
Text(
"view raw EXIF",
"View raw EXIF",
style: TextStyle(color: infoColor),
),
],
@ -260,7 +260,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
),
Padding(padding: EdgeInsets.all(4)),
Text(
"no exif",
"No exif",
style: TextStyle(
color: Colors.white.withOpacity(0.5),
),
@ -268,7 +268,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
],
),
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(
TextButton(
child: Text(
"close",
"Close",
style: TextStyle(
color: infoColor,
),

View file

@ -287,7 +287,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
widget.collection.type != CollectionType.favorites) {
actions.add(
Tooltip(
message: "move",
message: "Move",
child: IconButton(
color: Colors.black, //same for both themes
icon: Icon(Platform.isAndroid
@ -302,7 +302,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
}
actions.add(
Tooltip(
message: "share",
message: "Share",
child: IconButton(
color: Colors.black, //same for both themes
key: shareButtonKey,
@ -318,7 +318,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
widget.type == GalleryType.local_folder) {
actions.add(
Tooltip(
message: "delete",
message: "Delete",
child: IconButton(
color: Colors.black, //same for both themes
icon:
@ -333,7 +333,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
if (widget.collection.type == CollectionType.folder) {
actions.add(
Tooltip(
message: "delete",
message: "Delete",
child: IconButton(
color: Colors.black, //same for both themes
icon: Icon(
@ -348,7 +348,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
} else {
actions.add(
Tooltip(
message: "remove",
message: "Remove",
child: IconButton(
color: Colors.black, //same for both themes
icon: Icon(
@ -406,7 +406,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
));
actions.add(
Tooltip(
message: "delete permanently",
message: "Delete permanently",
child: IconButton(
color: Colors.black, //same for both themes
icon: Icon(
@ -455,14 +455,14 @@ class _OverlayWidgetState extends State<OverlayWidget> {
final actions = <Widget>[];
if (containsUploadedFile && containsLocalFile) {
actions.add(CupertinoActionSheetAction(
child: Text("device"),
child: Text("Device"),
isDestructiveAction: true,
onPressed: () async {
Navigator.of(context, rootNavigator: true).pop();
await deleteFilesOnDeviceOnly(
context, widget.selectedFiles.files.toList());
_clearSelectedFiles();
showToast("files deleted from device");
showToast("Files deleted from device");
},
));
actions.add(CupertinoActionSheetAction(
@ -473,11 +473,11 @@ class _OverlayWidgetState extends State<OverlayWidget> {
await deleteFilesFromRemoteOnly(
context, widget.selectedFiles.files.toList());
_clearSelectedFiles();
showShortToast("moved to trash");
showShortToast("Moved to trash");
},
));
actions.add(CupertinoActionSheetAction(
child: Text("everywhere"),
child: Text("Everywhere"),
isDestructiveAction: true,
onPressed: () async {
Navigator.of(context, rootNavigator: true).pop();
@ -499,14 +499,14 @@ class _OverlayWidgetState extends State<OverlayWidget> {
));
}
final action = CupertinoActionSheet(
title: Text("delete " +
title: Text("Delete " +
count.toString() +
" file" +
(count == 1 ? "" : "s") +
(containsUploadedFile && containsLocalFile ? " from" : "?")),
actions: actions,
cancelButton: CupertinoActionSheetAction(
child: Text("cancel"),
child: Text("Cancel"),
onPressed: () {
Navigator.of(context, rootNavigator: true).pop();
},
@ -518,7 +518,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
void _showRemoveFromCollectionSheet(BuildContext context) {
final count = widget.selectedFiles.files.length;
final action = CupertinoActionSheet(
title: Text("remove " +
title: Text("Remove " +
count.toString() +
" file" +
(count == 1 ? "" : "s") +
@ -527,11 +527,11 @@ class _OverlayWidgetState extends State<OverlayWidget> {
"?"),
actions: <Widget>[
CupertinoActionSheetAction(
child: Text("remove"),
child: Text("Remove"),
isDestructiveAction: true,
onPressed: () async {
Navigator.of(context, rootNavigator: true).pop();
final dialog = createProgressDialog(context, "removing files...");
final dialog = createProgressDialog(context, "Removing files...");
await dialog.show();
try {
await CollectionsService.instance.removeFromCollection(
@ -547,7 +547,7 @@ class _OverlayWidgetState extends State<OverlayWidget> {
),
],
cancelButton: CupertinoActionSheetAction(
child: Text("cancel"),
child: Text("Cancel"),
onPressed: () {
Navigator.of(context, rootNavigator: true).pop();
},

View file

@ -592,9 +592,9 @@ class _HomeBottomNavigationBarState extends State<HomeBottomNavigationBar> {
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
child: GNav(
curve: Curves.easeOutExpo,
// backgroundColor: Colors.white.withOpacity(0.6),
backgroundColor:
Theme.of(context).bottomAppBarColor,
backgroundColor: Theme.of(context)
.colorScheme
.gNavBackgoundColor,
mainAxisAlignment: MainAxisAlignment.center,
rippleColor: Colors.white.withOpacity(0.2),
hoverColor: Colors.white.withOpacity(0.2),

View file

@ -29,7 +29,7 @@ class _LoginPageState extends State<LoginPage> {
@override
Widget build(BuildContext context) {
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
FloatingActionButtonLocation fabLocation() {
if (isKeypadOpen) {

View file

@ -1,5 +1,6 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:photos/ente_theme_data.dart';
import 'package:photos/services/user_service.dart';
import 'package:photos/ui/common/dynamicFAB.dart';
import 'package:step_progress_indicator/step_progress_indicator.dart';
@ -25,7 +26,7 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
@override
Widget build(BuildContext context) {
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
FloatingActionButtonLocation fabLocation() {
if (isKeypadOpen) {
@ -49,14 +50,17 @@ class _OTTVerificationPageState extends State<OTTVerificationPage> {
? Hero(
tag: "sign_up",
child: Material(
type: MaterialType.transparency,
child: StepProgressIndicator(
totalSteps: 4,
currentStep: 2,
selectedColor: Theme.of(context).buttonColor,
roundedEdges: Radius.circular(10),
unselectedColor: Theme.of(context).bottomAppBarColor,
)),
type: MaterialType.transparency,
child: StepProgressIndicator(
totalSteps: 4,
currentStep: 2,
selectedColor: Theme.of(context).buttonColor,
roundedEdges: Radius.circular(10),
unselectedColor: Theme.of(context)
.colorScheme
.stepProgressUnselectedColor,
),
),
)
: null,
),

View file

@ -75,7 +75,7 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
@override
Widget build(BuildContext context) {
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
FloatingActionButtonLocation fabLocation() {
if (isKeypadOpen) {

View file

@ -32,7 +32,7 @@ class _PasswordReentryPageState extends State<PasswordReentryPage> {
@override
Widget build(BuildContext context) {
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom != 0;
final isKeypadOpen = MediaQuery.of(context).viewInsets.bottom > 125;
FloatingActionButtonLocation fabLocation() {
if (isKeypadOpen) {

View file

@ -25,8 +25,9 @@ class ChildSubscriptionWidget extends StatelessWidget {
children: [
Center(
child: Text(
"you are on a family plan!",
style: TextStyle(fontSize: 14, color: Colors.white),
"You are on a family plan!",
style:
Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 14),
),
),
Padding(
@ -39,7 +40,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
text: TextSpan(
children: [
TextSpan(
text: "please contact ",
text: "Please contact ",
),
TextSpan(
text: familyAdmin,
@ -49,10 +50,10 @@ class ChildSubscriptionWidget extends StatelessWidget {
text: " to manage your family subscription",
),
],
style: TextStyle(
fontFamily: 'Ubuntu',
fontSize: 14,
),
style: Theme.of(context)
.textTheme
.bodyText1
.copyWith(fontSize: 14),
),
),
),
@ -60,7 +61,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
padding: const EdgeInsets.symmetric(vertical: 8),
),
Image.asset(
"assets/family_sharing.jpg",
"assets/family sharing.png",
height: 256,
),
Padding(
@ -99,7 +100,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
text: TextSpan(
children: const [
TextSpan(
text: "please contact ",
text: "Please contact ",
),
TextSpan(
text: "support@ente.io",
@ -109,10 +110,7 @@ class ChildSubscriptionWidget extends StatelessWidget {
text: " for help",
),
],
style: TextStyle(
fontFamily: 'Ubuntu-Regular',
fontSize: 12,
),
style: Theme.of(context).textTheme.overline,
),
),
),

View file

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:logging/logging.dart';
import 'package:photos/ente_theme_data.dart';
import 'package:photos/models/billing_plan.dart';
import 'package:photos/models/subscription.dart';
import 'package:photos/models/user_details.dart';
@ -132,7 +133,9 @@ class _StripeSubscriptionPageState extends State<StripeSubscriptionPage> {
currentStep: 4,
selectedColor: Theme.of(context).buttonColor,
roundedEdges: Radius.circular(10),
unselectedColor: Theme.of(context).bottomAppBarColor,
unselectedColor: Theme.of(context)
.colorScheme
.stepProgressUnselectedColor,
)),
)
: AppBar(

View file

@ -61,7 +61,8 @@ class _RecoveryKeyPageState extends State<RecoveryKeyPage> {
currentStep: 3,
selectedColor: Theme.of(context).buttonColor,
roundedEdges: Radius.circular(10),
unselectedColor: Theme.of(context).bottomAppBarColor,
unselectedColor:
Theme.of(context).colorScheme.stepProgressUnselectedColor,
),
),
)

View file

@ -18,7 +18,7 @@ final _logger = Logger("ShareUtil");
// share is used to share media/files from ente to other apps
Future<void> share(BuildContext context, List<File> files,
{GlobalKey shareButtonKey}) async {
final dialog = createProgressDialog(context, "preparing...");
final dialog = createProgressDialog(context, "Preparing...");
await dialog.show();
final List<Future<String>> pathFutures = [];
for (File file in files) {