Merge pull request #292 from ente-io/shared-collection-screen-fixes
This commit is contained in:
commit
e15660bd92
5 changed files with 85 additions and 60 deletions
|
@ -1,5 +1,3 @@
|
|||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -8,7 +8,6 @@ Widget nothingToSeeHere({Color textColor}) {
|
|||
child: Text(
|
||||
"Nothing to see here! 👀",
|
||||
style: TextStyle(
|
||||
fontFamily: "Inter",
|
||||
color: textColor.withOpacity(0.35),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
Loading…
Add table
Reference in a new issue