Merge pull request #292 from ente-io/shared-collection-screen-fixes

This commit is contained in:
Vishnu Mohandas 2022-06-11 14:58:40 +05:30 committed by GitHub
commit e15660bd92
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 85 additions and 60 deletions

View file

@ -1,5 +1,3 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';

View file

@ -150,9 +150,9 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
margin: const EdgeInsets.only(bottom: 50),
child: Column(
children: [
Padding(padding: EdgeInsets.all(6)),
const SizedBox(height: 12),
SectionTitle("On device"),
Padding(padding: EdgeInsets.all(8)),
const SizedBox(height: 24),
items.folders.isEmpty
? Padding(
padding: const EdgeInsets.all(22),
@ -196,7 +196,7 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
_sortMenu(),
],
),
Padding(padding: EdgeInsets.all(12)),
const SizedBox(height: 24),
Configuration.instance.hasConfiguredAccount()
? Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
@ -227,7 +227,7 @@ class _CollectionsGalleryWidgetState extends State<CollectionsGalleryWidget>
),
const SizedBox(height: 10),
const Divider(),
const Padding(padding: EdgeInsets.all(8)),
const SizedBox(height: 16),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
@ -618,7 +618,7 @@ class DeviceFolderIcon extends StatelessWidget {
style: Theme.of(context)
.textTheme
.subtitle1
.copyWith(fontSize: 12, fontFamily: "Inter"),
.copyWith(fontSize: 12),
overflow: TextOverflow.ellipsis,
),
),
@ -643,10 +643,8 @@ class CollectionItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
TextStyle albumTitleTextStyle = Theme.of(context)
.textTheme
.subtitle1
.copyWith(fontSize: 14, fontFamily: "Inter");
TextStyle albumTitleTextStyle =
Theme.of(context).textTheme.subtitle1.copyWith(fontSize: 14);
final double sideOfThumbnail =
(MediaQuery.of(context).size.width / 2) - 18.5;
return GestureDetector(
@ -693,7 +691,6 @@ class CollectionItem extends StatelessWidget {
children: [
TextSpan(text: " \u2022 "),
TextSpan(text: snapshot.data.toString()),
//need to query in db and bring this value
],
),
);
@ -728,7 +725,7 @@ class SectionTitle extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.fromLTRB(24, 12, 0, 0),
margin: EdgeInsets.fromLTRB(16, 12, 0, 0),
child: Column(
children: [
Align(

View file

@ -8,7 +8,6 @@ Widget nothingToSeeHere({Color textColor}) {
child: Text(
"Nothing to see here! 👀",
style: TextStyle(
fontFamily: "Inter",
color: textColor.withOpacity(0.35),
),
),

View file

@ -240,7 +240,7 @@ class FadingAppBarState extends State<FadingAppBar> {
},
likeBuilder: (isLiked) {
return Icon(
isLiked ? Icons.favorite_rounded : Icons.favorite_border,
isLiked ? Icons.favorite_rounded : Icons.favorite_border_rounded,
color:
isLiked ? Colors.pinkAccent : Colors.white, //same for both themes
size: 24,

View file

@ -7,6 +7,7 @@ import 'package:fluttertoast/fluttertoast.dart';
import 'package:logging/logging.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/db/files_db.dart';
import 'package:photos/ente_theme_data.dart';
import 'package:photos/events/collection_updated_event.dart';
import 'package:photos/events/local_photos_updated_event.dart';
@ -110,52 +111,60 @@ class _SharedCollectionGalleryState extends State<SharedCollectionGallery>
}
Widget _getSharedCollectionsGallery(SharedCollections collections) {
const double horizontalPaddingOfGridRow = 16;
const double crossAxisSpacingOfGrid = 5;
Size size = MediaQuery.of(context).size;
int albumsCountInOneRow = max(size.width ~/ 220.0, 2);
final double sideOfThumbnail = (size.width / 2) -
horizontalPaddingOfGridRow -
((crossAxisSpacingOfGrid / 2) * (albumsCountInOneRow - 1));
return SingleChildScrollView(
child: Container(
margin: const EdgeInsets.only(bottom: 50),
child: Column(
children: [
Padding(padding: EdgeInsets.all(6)),
const SizedBox(height: 12),
SectionTitle("Incoming"),
Padding(padding: EdgeInsets.all(16)),
const SizedBox(height: 24),
collections.incoming.isNotEmpty
? GridView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return IncomingCollectionItem(
collections.incoming[index],
);
},
itemCount: collections.incoming.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: albumsCountInOneRow,
? Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: GridView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return IncomingCollectionItem(
collections.incoming[index],
);
},
itemCount: collections.incoming.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: albumsCountInOneRow,
mainAxisSpacing: 12,
crossAxisSpacing: crossAxisSpacingOfGrid,
childAspectRatio:
sideOfThumbnail / (sideOfThumbnail + 24),
), //24 is height of album title
),
)
: _getIncomingCollectionEmptyState(),
Padding(padding: EdgeInsets.all(16)),
Divider(height: 0),
Padding(padding: EdgeInsets.all(14)),
const SizedBox(height: 32),
SectionTitle("Outgoing"),
Padding(padding: EdgeInsets.all(16)),
const SizedBox(height: 12),
collections.outgoing.isNotEmpty
? Padding(
padding: const EdgeInsets.fromLTRB(12, 0, 0, 0),
child: ListView.builder(
shrinkWrap: true,
padding: EdgeInsets.only(bottom: 12),
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return OutgoingCollectionItem(
collections.outgoing[index],
);
},
itemCount: collections.outgoing.length,
),
? ListView.builder(
shrinkWrap: true,
padding: EdgeInsets.only(bottom: 12),
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return OutgoingCollectionItem(
collections.outgoing[index],
);
},
itemCount: collections.outgoing.length,
)
: _getOutgoingCollectionEmptyState(),
const SizedBox(height: 32),
],
),
),
@ -179,7 +188,6 @@ class _SharedCollectionGalleryState extends State<SharedCollectionGallery>
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
//mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.outgoing_mail,
@ -305,7 +313,7 @@ class OutgoingCollectionItem extends StatelessWidget {
return GestureDetector(
behavior: HitTestBehavior.opaque,
child: Container(
margin: EdgeInsets.fromLTRB(16, 12, 8, 12),
margin: EdgeInsets.fromLTRB(16, 12, 16, 12),
child: Row(
children: <Widget>[
ClipRRect(
@ -383,12 +391,17 @@ class IncomingCollectionItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
TextStyle albumTitleTextStyle =
Theme.of(context).textTheme.subtitle1.copyWith(fontSize: 14);
final double sideOfThumbnail =
(MediaQuery.of(context).size.width / 2) - 18.5;
return GestureDetector(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.circular(4),
child: Container(
child: SizedBox(
child: Stack(
children: [
Hero(
@ -418,22 +431,40 @@ class IncomingCollectionItem extends StatelessWidget {
),
],
),
height: 160,
width: 160,
height: sideOfThumbnail,
width: sideOfThumbnail,
),
),
Padding(padding: EdgeInsets.all(2)),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: Text(
c.collection.name,
style: TextStyle(
fontSize: 16,
SizedBox(height: 4),
Row(
children: [
Container(
constraints: BoxConstraints(maxWidth: sideOfThumbnail - 40),
child: Text(
c.collection.name,
style: albumTitleTextStyle,
overflow: TextOverflow.ellipsis,
),
overflow: TextOverflow.ellipsis,
),
),
FutureBuilder<int>(
future: FilesDB.instance.collectionFileCount(c.collection.id),
builder: (context, snapshot) {
if (snapshot.hasData && snapshot.data > 0) {
return RichText(
text: TextSpan(
style: albumTitleTextStyle.copyWith(
color:
albumTitleTextStyle.color.withOpacity(0.5)),
children: [
TextSpan(text: " \u2022 "),
TextSpan(text: snapshot.data.toString()),
]));
} else {
return Container();
}
},
),
],
),
],
),