Add a separate folder for videos

This commit is contained in:
Vishnu Mohandas 2020-06-21 05:35:15 +05:30
parent 8b6685c3e2
commit c4dfc72aac
4 changed files with 29 additions and 0 deletions

View file

@ -105,6 +105,17 @@ class FileDB {
return _convertToFiles(results);
}
Future<List<File>> getAllVideos() async {
final db = await instance.database;
final results = await db.query(
table,
where:
'$columnLocalId IS NOT NULL AND $columnFileType = 1 AND $columnIsDeleted = 0',
orderBy: '$columnCreateTimestamp DESC',
);
return _convertToFiles(results);
}
Future<List<File>> getAllInFolder(int folderId) async {
final db = await instance.database;
final results = await db.query(

View file

@ -0,0 +1,10 @@
import 'package:photos/models/file.dart';
import 'package:photos/models/file_type.dart';
import 'package:photos/models/filters/gallery_items_filter.dart';
class VideoFileFilter implements GalleryItemsFilter {
@override
bool shouldInclude(File file) {
return file.fileType == FileType.video;
}
}

View file

@ -59,6 +59,9 @@ class _DeviceFolderPageState extends State<DeviceFolderPage> {
}
List<File> _getFilteredFiles(List<File> unfilteredFiles) {
if (widget.folder.filter == null) {
return unfilteredFiles;
}
final List<File> filteredFiles = List<File>();
for (File file in unfilteredFiles) {
if (widget.folder.filter.shouldInclude(file)) {

View file

@ -9,6 +9,7 @@ import 'package:photos/favorite_files_repository.dart';
import 'package:photos/models/device_folder.dart';
import 'package:photos/models/filters/favorite_items_filter.dart';
import 'package:photos/models/filters/folder_name_filter.dart';
import 'package:photos/models/filters/video_file_filter.dart';
import 'package:photos/ui/device_folder_page.dart';
import 'package:photos/ui/loading_widget.dart';
import 'package:photos/ui/thumbnail_widget.dart';
@ -84,6 +85,10 @@ class _DeviceFolderGalleryWidgetState extends State<DeviceFolderGalleryWidget> {
FavoriteFilesRepository.instance.getLiked().toList());
folders.insert(0, DeviceFolder("Favorites", file, FavoriteItemsFilter()));
}
final videos = await FileDB.instance.getAllVideos();
if (videos.length > 0) {
folders.insert(0, DeviceFolder("Videos", videos[0], VideoFileFilter()));
}
return folders;
}