Commit 470c1e15 by Diego Pérez Peña

Página de conversión y página de metadatos actualizadas

parent f1d29c6d
......@@ -30,14 +30,13 @@ class Carpeta extends ElementoSeleccionable{
_directory = directory, _formatos = formatos,
super(nombre: directory.path.split('/').last, icon: const Icon(Icons.folder_outlined));
Carpeta setFormatoDestino(Formato original, Formato destino){
void setFormatoDestino(Formato original, Formato? destino){
final formatosAlt = formatos.toList();
for(InfoFormato i in formatosAlt){
if(i.formatoOriginal == original){
i.formatoDestino = destino;
}
}
return Carpeta.fromList(id: id, directory: directory, formatos: formatosAlt);
}
@override
......@@ -76,4 +75,10 @@ class InfoFormato {
// TODO: <implement>
}
}
@override
bool operator ==(Object other) {
if(other is InfoFormato) return this.formatoOriginal == other.formatoOriginal;
return super == other;
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import 'package:uuid/uuid.dart';
import 'carpeta.dart';
import 'elemento_seleccionable.dart';
import 'archivo.dart';
import 'formato.dart';
class ListaSeleccionables extends ChangeNotifier {
final _seleccionables = <ElementoSeleccionable>[];
......@@ -27,7 +28,7 @@ class ListaSeleccionables extends ChangeNotifier {
void addCarpeta(Directory directory){
_seleccionables.add(Carpeta(id: const Uuid().v1(),
directory: directory));
directory: directory, formatos: <Formato, bool>{Formato.mp4: false, Formato.mp3: true}));
notifyListeners();
}
}
\ No newline at end of file
......@@ -5,12 +5,16 @@ import 'package:prueba_multimedia/paginas/paginas.dart';
class PaginaConfiguracion extends StatefulWidget {
final ListaSeleccionables _lista;
final int _indice;
final ElementoSeleccionable _elementoAsociado;
const PaginaConfiguracion({
super.key,
required elementoAsociado
}): _elementoAsociado = elementoAsociado;
required ListaSeleccionables lista,
required int indice,
required ElementoSeleccionable elemento
}): _lista = lista, _indice = indice, _elementoAsociado = elemento;
@override
State<PaginaConfiguracion> createState() => _PaginaConfiguracionState();
......@@ -37,11 +41,7 @@ class _PaginaConfiguracionState extends State<PaginaConfiguracion> {
)
),
),
body: Consumer<ListaSeleccionables>(
builder: (context, manager, child){
return _construirCuerpo(manager);
},
),
body: _construirCuerpo(widget._lista),
bottomNavigationBar: _construirBarraNavegacion()
);
}
......@@ -67,40 +67,32 @@ class _PaginaConfiguracionState extends State<PaginaConfiguracion> {
if(widget._elementoAsociado is Convertible){
final arch = widget._elementoAsociado as Convertible;
if(_categoriaActiva == 0){
return PaginaConversion(lista: manager, formatoOriginal: arch.formatoOriginal);
return PaginaConversion.convertible(
lista: manager,
indiceArchivo: widget._indice,
elemento: arch,
formatoOriginal: arch.formatoOriginal
);
}
else if(_categoriaActiva == 2){
return PaginaMetadatos(formato: arch.formatoOriginal);
else if(_categoriaActiva == 2 || arch.formatoOriginal.tipoMultimedia != TipoMultimedia.video){
return PaginaMetadatos(
lista: manager,
archivo: arch,
indiceSeleccionable: widget._indice
);
}
else{
if(arch.formatoOriginal.tipoMultimedia == TipoMultimedia.video){
return PaginaFotograma();
}
// Página de metadatos
return PaginaMetadatos(formato: arch.formatoOriginal);
}
}
// Páginas de carpetas y formato de archivo para carpeta
// TODO: Carpeta de ejemplo, cargar carpetas de verdad
return PaginaConfiguracionCarpeta(formatosCarpeta: [
InfoFormato(formato: Formato.jpg,
nombreCarpeta: widget._elementoAsociado.nombre,
subCarpeta: false,
archivos: []),
InfoFormato(formato: Formato.mp4,
nombreCarpeta: widget._elementoAsociado.nombre,
subCarpeta: false,
archivos: []),
InfoFormato(formato: Formato.tif,
nombreCarpeta: widget._elementoAsociado.nombre,
subCarpeta: true,
archivos: []),
InfoFormato(formato: Formato.png,
nombreCarpeta: widget._elementoAsociado.nombre,
subCarpeta: true,
archivos: [])
]);
return PaginaConfiguracionCarpeta(
lista: manager,
carpeta: widget._elementoAsociado as Carpeta,
indice: widget._indice
);
}
BottomNavigationBar? _construirBarraNavegacion(){
......
......@@ -3,10 +3,21 @@ import 'package:prueba_multimedia/modelo/modelo.dart';
import 'package:prueba_multimedia/paginas/paginas.dart';
class PaginaConfiguracionCarpeta extends StatefulWidget {
final ListaSeleccionables _lista;
final List<InfoFormato> _formatosCarpeta;
const PaginaConfiguracionCarpeta({super.key, required List<InfoFormato> formatosCarpeta}):
_formatosCarpeta = formatosCarpeta;
final int _indice;
final Carpeta _carpeta;
PaginaConfiguracionCarpeta({
super.key,
required ListaSeleccionables lista,
required int indice,
required Carpeta carpeta
}):
_lista = lista,
_indice = indice,
_carpeta = carpeta,
_formatosCarpeta = carpeta.formatos;
@override
State<PaginaConfiguracionCarpeta> createState() => _PaginaConfiguracionCarpetaState();
......@@ -83,6 +94,7 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
onChanged: (bool? value) {
setState(() {
_incluirSubcarpetas = value!;
widget._lista.actualizaSeleccionable(widget._indice, widget._carpeta);
});
})
],
......@@ -194,7 +206,11 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
() {
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return PaginaConfiguracion(elementoAsociado: i.conversion);
return PaginaConfiguracion(
indice: widget._formatosCarpeta.indexOf(i),
elemento: i.conversion,
lista: widget._lista,
);
}
));
},
......
......@@ -2,9 +2,27 @@ import 'package:flutter/material.dart';
import 'package:prueba_multimedia/modelo/modelo.dart';
class PaginaMetadatos extends StatefulWidget {
final Formato _formato;
const PaginaMetadatos({super.key, required formato}): _formato = formato;
final ListaSeleccionables _lista;
late final Formato _formato;
final Convertible _archivo;
final int _indiceArchivo;
PaginaMetadatos({
super.key,
required ListaSeleccionables lista,
required Convertible archivo,
required int indiceSeleccionable
}):
_archivo = archivo,
_indiceArchivo = indiceSeleccionable,
_lista = lista {
if(_archivo.formatoDestino == null){
_formato = _archivo.formatoOriginal;
}
else{
_formato = _archivo.formatoDestino!;
}
}
@override
State<PaginaMetadatos> createState() => _PaginaMetadatosState();
......
......@@ -19,7 +19,7 @@ class PaginaPrincipalLlena extends StatelessWidget {
return const SizedBox(height: 8.0);
},
itemBuilder: (context, index) {
return SeleccionableWidget(seleccionable: seleccionables[index]);
return SeleccionableWidget(indice: index, seleccionable: seleccionables[index], lista: listaSeleccionables);
},
),
);
......
......@@ -3,9 +3,11 @@ import 'package:prueba_multimedia/paginas/paginas.dart';
import 'package:prueba_multimedia/modelo/modelo.dart';
class SeleccionableWidget extends StatelessWidget {
final int indice;
final ElementoSeleccionable seleccionable;
final ListaSeleccionables lista;
const SeleccionableWidget({super.key, required this.seleccionable});
const SeleccionableWidget({super.key, required this.indice, required this.seleccionable, required this.lista});
// TODO: ACTUALIZAR PARA MOSTRAR FORMATOS Y CAMBIOS
@override
......@@ -32,7 +34,7 @@ class SeleccionableWidget extends StatelessWidget {
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return PaginaConfiguracion(elementoAsociado: seleccionable);
return PaginaConfiguracion(indice: indice, elemento: seleccionable, lista: lista);
}));
},
)
......
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