Últimos toques a la aplicación

parent 0a923a47
......@@ -26,16 +26,18 @@ class Carpeta extends ElementoSeleccionable {
// Guardamos los archivos
for(var file in fsEntities.whereType<File>()) {
Archivo archivo = Archivo(id: Uuid().v1(), file: file);
_elementos.add(archivo);
final f = InfoFormato(
formato: archivo.formatoOriginal,
carpeta: this,
seleccionado: true,
subCarpeta: false
);
if(!_formatos.contains(f)){
_formatos.add(f);
if(Formato.fromExtension(file.path.split('.').last) != null){
Archivo archivo = Archivo(id: Uuid().v1(), file: file);
_elementos.add(archivo);
final f = InfoFormato(
formato: archivo.formatoOriginal,
carpeta: this,
seleccionado: true,
subCarpeta: false
);
if(!_formatos.contains(f)){
_formatos.add(f);
}
}
}
......@@ -45,15 +47,17 @@ class Carpeta extends ElementoSeleccionable {
final files = directory.listSync(recursive: true, followLinks: false)
.whereType<File>();
for (var file in files) {
Archivo archivo = Archivo(id: Uuid().v1(), file: file);
_elementosSubcarpetas.add(archivo);
final i = InfoFormato(
formato: archivo.formatoOriginal,
carpeta: this,
seleccionado: incluirSubcarpetas,
subCarpeta: true);
if(!_formatos.contains(i)){
_formatos.add(i);
if(Formato.fromExtension(file.path.split('.').last) != null){
Archivo archivo = Archivo(id: Uuid().v1(), file: file);
_elementosSubcarpetas.add(archivo);
final i = InfoFormato(
formato: archivo.formatoOriginal,
carpeta: this,
seleccionado: incluirSubcarpetas,
subCarpeta: true);
if(!_formatos.contains(i)){
_formatos.add(i);
}
}
}
}
......
......@@ -30,14 +30,14 @@ class PaginaPrincipal extends StatelessWidget {
),
backgroundColor: Theme.of(context).primaryColor,
actions: [
Consumer<ProviderAjustes>(
builder: (context, ajustes, child) {
Consumer2<ListaSeleccionables, ProviderAjustes>(
builder: (context, lista, ajustes, child) {
return IconButton(
icon: Icon(
Icons.settings_outlined,
color: Colors.white,
),
onPressed: () {
onPressed: (lista.convirtiendo)? () {} : () {
Navigator.push(context,
MaterialPageRoute(
builder: (context) {
......
......@@ -126,6 +126,8 @@ class ActionButton extends StatelessWidget {
: await FilePicker.platform.getDirectoryPath();
if(directorioSalida != null) {
_actualizadorProgreso();
final now = DateTime.now();
final nombreZip = "Convertex_"
"${now.day}-${now.month}-${now.year}_"
......@@ -133,8 +135,6 @@ class ActionButton extends StatelessWidget {
final zipFileEncoder = ZipFileEncoder();
zipFileEncoder.create("$directorioSalida/$nombreZip.zip");
_actualizadorProgreso();
final resultsZip = <Future<void>>[];
while(manager.seleccionables.isNotEmpty){
ElementoSeleccionable sel = manager.seleccionables.first;
......
......@@ -144,7 +144,8 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
flex: 3,
child: IconButton(
icon: const Icon(Icons.edit),
onPressed: () {
onPressed: (widget.lista.convirtiendo)? () {} :
() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
......@@ -180,6 +181,9 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
clipper: _MyRectClipper(_controller),
child: Dismissible(
key: Key(elemento.id),
direction: widget.lista.convirtiendo?
DismissDirection.none :
DismissDirection.horizontal,
background: Container(
color: Colors.red,
alignment: Alignment.centerLeft,
......@@ -265,7 +269,8 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
flex: 2,
child: IconButton(
icon: const Icon(Icons.edit),
onPressed: () {
onPressed: (widget.lista.convirtiendo)? () {} :
() {
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return PaginaConfiguracion(
......@@ -274,15 +279,6 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
elemento: elemento,
carpeta: carpeta
);
/*
return PaginaConversion.carpeta(
formatoOriginal: elemento.formatoOriginal,
indiceArchivo: index-1,
carpeta: carpeta,
infoFormato: elemento,
lista: widget.lista
);
*/
}
));
},
......
import 'dart:io';
import 'package:archive/archive_io.dart';
import 'package:ffmpeg_kit_flutter_new/return_code.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
......@@ -143,7 +145,7 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
convertirCopiar(manager);
break;
case 2:
convertirComprimir();
convertirComprimir(manager);
break;
}
},
......@@ -242,9 +244,67 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
}
}
Future<void> convertirComprimir() async {
Future<void> convertirComprimir(ListaSeleccionables manager) async {
if(await ActionButton.comprobacionPermisoArchivos(context)){
print('Hola');
// Averiguamos donde colocar los archivos de salida
String? directorioSalida = widget.providerAjustes.carpetaSalida.isNotEmpty
? widget.providerAjustes.carpetaSalida
: await FilePicker.platform.getDirectoryPath();
if(directorioSalida != null) {
listenerActualizar(manager);
final now = DateTime.now();
final nombreZip = "Convertex_"
"${now.day}-${now.month}-${now.year}_"
"${now.hour}-${now.minute}-${now.second}";
final zipFileEncoder = ZipFileEncoder();
zipFileEncoder.create("$directorioSalida/$nombreZip.zip");
final resultsZip = <Future<void>>[];
while(manager.seleccionables.isNotEmpty){
ElementoSeleccionable sel = manager.seleccionables.first;
// Conversion de carpetas
if(sel is Carpeta){
Directory d = await Directory("$directorioSalida/${sel.nombre}").create();
final resultsConversion = <Future<ReturnCode?>>[];
for (var archivo in sel.elementosSeleccionados) {
resultsConversion.add(Conversor.convertir(archivo, d.path));
}
// Esperamos a la conversión y añadimos a zip
for (final result in resultsConversion) {
await result;
}
resultsZip.add(
zipFileEncoder.addDirectory(d)..then((_) => d.delete(recursive: true))
);
}
// Conversion de archivos
else if (sel is Archivo){
// Esperamos a la conversión y añadimos a zip
await Conversor.convertir(sel, directorioSalida);
File tempFile = await File(
"$directorioSalida/${sel.nombre}.${sel.formatoDestino?.name}"
).create();
resultsZip.add(
zipFileEncoder.addFile(tempFile)..then((_) => tempFile.delete())
);
}
// Esperamos a que la compresión se termine y se borren los
// archivos temporales
if (manager.seleccionables.length == 1) {
for (final result in resultsZip) {
await result;
}
zipFileEncoder.closeSync();
}
// Esto hace que la barra de progreso suba
manager.borraSeleccionable(0);
}
}
}
}
......
......@@ -60,7 +60,8 @@ class ConvertibleWidget extends StatelessWidget {
flex: 2,
child: IconButton(
icon: const Icon(Icons.edit),
onPressed: () {
onPressed: (lista.convirtiendo)? () {} :
() {
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return PaginaConfiguracion(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment