Refactor ya terminado

parent 08a7cf84
...@@ -35,8 +35,8 @@ class Carpeta extends ElementoSeleccionable { ...@@ -35,8 +35,8 @@ class Carpeta extends ElementoSeleccionable {
*/ */
_formatos.add( _formatos.add(
InfoFormato ( InfoFormato (
carpeta: this,
formato: f, formato: f,
nombreCarpeta: directory.path.split('/').last,
subCarpeta: false subCarpeta: false
) )
); );
...@@ -90,39 +90,21 @@ class Carpeta extends ElementoSeleccionable { ...@@ -90,39 +90,21 @@ class Carpeta extends ElementoSeleccionable {
} }
/**
* Creo que es una clase que ha creado para poder manejar las entidades
* que pueden haber dentro de una carpeta (podría ser Seleccionable)
*/
class InfoFormato {
final bool _subcarpeta;
bool seleccionado;
final Convertible _conversion;
bool get subcarpeta => _subcarpeta; class InfoFormato extends Convertible {
Convertible get conversion => _conversion; final Carpeta _carpeta;
Formato get formatoOriginal => _conversion.formatoOriginal; bool seleccionado;
Formato? get formatoDestino => _conversion.formatoDestino;
set formatoDestino(Formato? destino) => _conversion.formatoDestino = destino; Carpeta get carpeta => _carpeta;
InfoFormato({required Formato formato, InfoFormato({required Formato formato, required Carpeta carpeta,
required String nombreCarpeta,
required bool subCarpeta,
bool? seleccionado}): bool? seleccionado}):
_subcarpeta = subCarpeta, seleccionado = seleccionado ?? !subCarpeta, _carpeta = carpeta,
_conversion = Convertible(id: const Uuid().v1(), nombre: '$nombreCarpeta > ${formato.name}', seleccionado = seleccionado ?? false,
icon: Icon(Icons.find_in_page_outlined), formatoOriginal: formato); super(
id: const Uuid().v1(),
void convertir(){ nombre: '${carpeta.nombre} > ${formato.name}',
if(_conversion.formatoDestino != null){ icon: const Icon(Icons.find_in_page_outlined),
// TODO: <implement> formatoOriginal: formato
} );
}
@override
bool operator ==(Object other) {
if(other is InfoFormato) return formatoOriginal == other.formatoOriginal;
return super == other;
}
} }
\ No newline at end of file
...@@ -158,7 +158,6 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta> ...@@ -158,7 +158,6 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
] ]
) )
), ),
/*
Checkbox( Checkbox(
tristate: true, tristate: true,
value: _allOfType[t], value: _allOfType[t],
...@@ -167,14 +166,15 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta> ...@@ -167,14 +166,15 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
_allOfType[t] = value ?? _allOfType[t] = value ??
((_allOfType[t] == null)? true : !(_allOfType[t]!)); ((_allOfType[t] == null)? true : !(_allOfType[t]!));
for(InfoFormato i in widget._formatosCarpeta){ for(InfoFormato i in widget._formatosCarpeta){
if(_formatos[t]!.contains(i.formatoOriginal) && !(!_incluirSubcarpetas && i.subcarpeta)){ if(_formatos[t]!.contains(i.formatoOriginal)
&& !(!_incluirSubcarpetas && i.carpeta.incluyeSubcarpetas)){
_seleccionados[i.formatoOriginal] = _allOfType[t]!; _seleccionados[i.formatoOriginal] = _allOfType[t]!;
widget._carpeta.pressAltSeleccionado(widget._carpeta.formatos.indexOf(i)); widget._carpeta.pressAltSeleccionado(widget._carpeta.formatos.indexOf(i));
} }
} }
widget._lista.actualizaSeleccionable(widget._indice, widget._carpeta); widget._lista.actualizaSeleccionable(widget._indice, widget._carpeta);
}); });
})*/ })
], ],
)); ));
} }
...@@ -213,11 +213,10 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta> ...@@ -213,11 +213,10 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
), ),
Wrap( Wrap(
children: [ children: [
/*
Material( Material(
child: Checkbox( child: Checkbox(
value: _seleccionados[i.formatoOriginal]!, value: _seleccionados[i.formatoOriginal]!,
onChanged: (i.subcarpeta && !_incluirSubcarpetas)? null : onChanged: (i.carpeta.incluyeSubcarpetas && !_incluirSubcarpetas)? null :
(bool? value) { (bool? value) {
setState(() { setState(() {
_seleccionados[i.formatoOriginal] = value!; _seleccionados[i.formatoOriginal] = value!;
...@@ -227,17 +226,20 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta> ...@@ -227,17 +226,20 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
widget._lista.actualizaSeleccionable(widget._indice, widget._carpeta); widget._lista.actualizaSeleccionable(widget._indice, widget._carpeta);
}); });
}), }),
), */ ),
IconButton( IconButton(
icon: const Icon(Icons.edit), icon: const Icon(Icons.edit),
onPressed: ((i.subcarpeta && !_incluirSubcarpetas) || !_seleccionados[i.formatoOriginal]!)? null : onPressed: ((i.carpeta.incluyeSubcarpetas && !_incluirSubcarpetas)
|| !_seleccionados[i.formatoOriginal]!) ? null :
() { () {
Navigator.push(context, Navigator.push(context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return PaginaConfiguracion( return PaginaConversion.carpeta(
indice: widget._indice, formatoOriginal: i.formatoOriginal,
elemento: i.conversion, indiceArchivo: widget._indice,
lista: widget._lista, carpeta: widget._carpeta,
infoFormato: i,
lista: widget._lista
); );
} }
)); ));
...@@ -248,7 +250,7 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta> ...@@ -248,7 +250,7 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
], ],
); );
if(i.subcarpeta) { if(i.carpeta.incluyeSubcarpetas) {
listaSubcarpeta.add(fila); listaSubcarpeta.add(fila);
} else { } else {
listaCarpeta.add(fila); listaCarpeta.add(fila);
......
...@@ -62,32 +62,36 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -62,32 +62,36 @@ class _PaginaConversionState extends State<PaginaConversion>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( // TODO: HECHO PARA QUE NO PETE PERO HABRÁ QUE REVISAR.
mainAxisAlignment: MainAxisAlignment.spaceBetween, // PONER UN SCAFOLD Y FACOTIRZAR
children: [ return Material(
Padding( child: Column(
padding: const EdgeInsets.all(15.0), mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Column( children: [
mainAxisAlignment: MainAxisAlignment.start, Padding(
children: [ padding: const EdgeInsets.all(15.0),
SizedBox(height: 8.0), child: Column(
Row( mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center, children: [
children: [ const SizedBox(height: 8.0),
_createFormatBox(true), Row(
const SizedBox(width: 10.0), mainAxisAlignment: MainAxisAlignment.center,
Icon(Icons.chevron_right), children: [
const SizedBox(width: 10.0), _createFormatBox(true),
_createFormatBox(false) const SizedBox(width: 10.0),
], const Icon(Icons.chevron_right),
), const SizedBox(width: 10.0),
SizedBox(height: 20.0), _createFormatBox(false)
_createCalidadSelectionPanel() ],
], ),
const SizedBox(height: 20.0),
_createCalidadSelectionPanel()
],
),
), ),
), _createConversionSelectionPanel()
_createConversionSelectionPanel() ],
], ),
); );
} }
......
...@@ -27,8 +27,7 @@ class _CarpetaWidgetState extends State<CarpetaWidget> ...@@ -27,8 +27,7 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
late final AnimationController _controller; late final AnimationController _controller;
/// Archivos (o carpetas si es recursivo) que el usuario no ha eliminado /// Archivos (o carpetas si es recursivo) que el usuario no ha eliminado
/// de la lista y que coinciden con los formatos elegidos /// de la lista y que coinciden con los formatos elegidos
// TODO: REFECATORIZAR USANDO List<ElementoSeleccionable> List<InfoFormato> seleccionados = [];
List<ElementoSeleccionable> seleccionados = [];
bool open = false; bool open = false;
double rotAngle = 0; double rotAngle = 0;
double height = 0; double height = 0;
...@@ -51,25 +50,10 @@ class _CarpetaWidgetState extends State<CarpetaWidget> ...@@ -51,25 +50,10 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
seleccionados = []; seleccionados = [];
/* for(var i in widget.carpeta.formatos) {
* TODO: POR AHORA COMO ESTOY REFACTORIZANDO NO VOY A FILTRAR POR FORMATO if(i.seleccionado && i.carpeta.incluyeSubcarpetas){
* El objetivo es que se muestren solo los archivos de los formatos indicados
* en la pagina de configuración de la carpeta. Como estoy refactorizando
* el InfoFormato y este widget ahora utiliza los ElementoSeleccionable
* POR AHORA no voy a filtrar por formatos, PERO LO PONDRÉ CUANDO ACABE
*/
for(var fse in widget.carpeta.elementos) {
/*
if(i.seleccionado && (widget.carpeta.incluyeSubcarpetas || !i.subcarpeta)){
seleccionados.add(i); seleccionados.add(i);
} }
*/
// Luego aplicar filtros de formatos aqui
if (fse is Directory && widget.carpeta.incluyeSubcarpetas) {
seleccionados.add(Carpeta(id: const Uuid().v1(), directory: fse));
} else {
seleccionados.add(Archivo(id: const Uuid().v1(), file: fse as File));
}
} }
if(seleccionados.isEmpty){ if(seleccionados.isEmpty){
_controller.reset(); _controller.reset();
...@@ -184,11 +168,9 @@ class _CarpetaWidgetState extends State<CarpetaWidget> ...@@ -184,11 +168,9 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
return seleccionados.map((elemento) { return seleccionados.map((elemento) {
index++; index++;
String? formatoOrigenYDestino; String? formatoOrigenYDestino;
if (elemento is Convertible) { formatoOrigenYDestino = elemento.formatoOriginal.name.toUpperCase();
formatoOrigenYDestino = elemento.formatoOriginal.name.toUpperCase(); if(elemento.formatoDestino != null) {
if(elemento.formatoDestino != null) { formatoOrigenYDestino += " > ${elemento.formatoDestino!.name.toUpperCase()}";
formatoOrigenYDestino += " > ${elemento.formatoDestino!.name.toUpperCase()}";
}
} }
return Positioned( return Positioned(
...@@ -230,7 +212,6 @@ class _CarpetaWidgetState extends State<CarpetaWidget> ...@@ -230,7 +212,6 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
'excluido de ${carpeta.nombre}' 'excluido de ${carpeta.nombre}'
), ),
action: SnackBarAction( action: SnackBarAction(
// TODO: HABRÍA QUE ACTUALIZAR EL ESTADO ?
label: 'Deshacer', label: 'Deshacer',
onPressed: () { seleccionados.insert(index-1, elemento); } onPressed: () { seleccionados.insert(index-1, elemento); }
), ),
...@@ -247,7 +228,7 @@ class _CarpetaWidgetState extends State<CarpetaWidget> ...@@ -247,7 +228,7 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Flexible(flex: 1, child: Icon(Icons.find_in_page_outlined)), const Flexible(flex: 1, child: Icon(Icons.find_in_page_outlined)),
const Flexible(flex: 1, child: SizedBox(width: 10)), const Flexible(flex: 1, child: SizedBox(width: 10)),
Flexible( Flexible(
flex: 13, flex: 13,
...@@ -286,10 +267,12 @@ class _CarpetaWidgetState extends State<CarpetaWidget> ...@@ -286,10 +267,12 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
onPressed: () { onPressed: () {
Navigator.push(context, Navigator.push(context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return PaginaConfiguracion( return PaginaConversion.carpeta(
indice: widget.indice, formatoOriginal: elemento.formatoOriginal,
elemento: elemento as Convertible, indiceArchivo: index-1,
lista: widget.lista, carpeta: carpeta,
infoFormato: elemento,
lista: widget.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