Revert "Conflicto extraño resuelto"

This reverts commit 6550e809, reversing
changes made to 470c1e15.
parent 6550e809
Showing with 104 additions and 94 deletions
...@@ -4,18 +4,36 @@ import 'package:prueba_multimedia/modelo/modelo.dart'; ...@@ -4,18 +4,36 @@ import 'package:prueba_multimedia/modelo/modelo.dart';
class PaginaConversion extends StatefulWidget { class PaginaConversion extends StatefulWidget {
final ListaSeleccionables _lista; final ListaSeleccionables _lista;
final int _indiceArchivo; final int _indiceArchivo;
final ElementoSeleccionable _seleccionable; final Carpeta? _carpeta;
final InfoFormato? _infoFormato;
final Convertible? _archivo;
final Formato _formatoOriginal; final Formato _formatoOriginal;
const PaginaConversion({ const PaginaConversion.convertible({
super.key, super.key,
required Formato formatoOriginal, required Formato formatoOriginal,
required int indiceArchivo, required int indiceArchivo,
required Convertible seleccionable, required Convertible elemento,
required ListaSeleccionables lista required ListaSeleccionables lista
}): _formatoOriginal = formatoOriginal, }): _formatoOriginal = formatoOriginal,
_indiceArchivo = indiceArchivo, _indiceArchivo = indiceArchivo,
_seleccionable = seleccionable, _archivo = elemento,
_carpeta = null,
_infoFormato = null,
_lista = lista;
const PaginaConversion.carpeta({
super.key,
required Formato formatoOriginal,
required int indiceArchivo,
required Carpeta carpeta,
required InfoFormato infoFormato,
required ListaSeleccionables lista
}): _formatoOriginal = formatoOriginal,
_indiceArchivo = indiceArchivo,
_archivo = null,
_carpeta = carpeta,
_infoFormato = infoFormato,
_lista = lista; _lista = lista;
@override @override
...@@ -24,8 +42,6 @@ class PaginaConversion extends StatefulWidget { ...@@ -24,8 +42,6 @@ class PaginaConversion extends StatefulWidget {
class _PaginaConversionState extends State<PaginaConversion> class _PaginaConversionState extends State<PaginaConversion>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
// Podríamos hacer que en vez de poder haber nulos sea el mismo formato
// que el de origen de manera predeterminada ?
Formato? _formatoConvertido; Formato? _formatoConvertido;
Calidad? _calidadActual = null; Calidad? _calidadActual = null;
...@@ -36,6 +52,12 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -36,6 +52,12 @@ class _PaginaConversionState extends State<PaginaConversion>
void initState() { void initState() {
super.initState(); super.initState();
_tabController = TabController(length: 3, vsync: this); _tabController = TabController(length: 3, vsync: this);
if(widget._carpeta != null){
_formatoConvertido = widget._infoFormato!.formatoDestino;
}
else{
_formatoConvertido = widget._archivo!.formatoDestino;
}
} }
@override @override
...@@ -52,11 +74,11 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -52,11 +74,11 @@ class _PaginaConversionState extends State<PaginaConversion>
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
_createOriginalFormatBox(), _createFormatBox(true),
const SizedBox(width: 10.0), const SizedBox(width: 10.0),
Icon(Icons.chevron_right), Icon(Icons.chevron_right),
const SizedBox(width: 10.0), const SizedBox(width: 10.0),
_createConversionFormatBox() _createFormatBox(false)
], ],
), ),
SizedBox(height: 20.0), SizedBox(height: 20.0),
...@@ -69,34 +91,21 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -69,34 +91,21 @@ class _PaginaConversionState extends State<PaginaConversion>
); );
} }
Widget _createOriginalFormatBox(){ Widget _createFormatBox(bool original){
final String nombreFormato = widget._formatoOriginal.name.toUpperCase();
return DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black,
),
borderRadius: BorderRadius.circular(15),
color: Colors.black26
),
child: Padding(
padding: const EdgeInsets.all(13.0),
child: Text(
nombreFormato,
style: Theme.of(context).textTheme.titleLarge,
textScaler: TextScaler.linear(1.3)
),
)
);
}
_createConversionFormatBox() {
final String nombreFormato; final String nombreFormato;
final Color fondo;
if(original){
nombreFormato = widget._formatoOriginal.name.toUpperCase();
fondo = Colors.black26;
}
else{
if(_formatoConvertido == null){ if(_formatoConvertido == null){
nombreFormato = ' '; nombreFormato = ' ';
fondo = Colors.white;
} else { } else {
nombreFormato = _formatoConvertido!.name.toUpperCase(); nombreFormato = _formatoConvertido!.name.toUpperCase();
fondo = Theme.of(context).colorScheme.inversePrimary;
}
} }
return DecoratedBox( return DecoratedBox(
...@@ -105,7 +114,7 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -105,7 +114,7 @@ class _PaginaConversionState extends State<PaginaConversion>
color: Colors.black, color: Colors.black,
), ),
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
color: _formatoConvertido == null ? Colors.white : Theme.of(context).colorScheme.inversePrimary color: fondo
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.all(13.0), padding: const EdgeInsets.all(13.0),
...@@ -156,7 +165,7 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -156,7 +165,7 @@ class _PaginaConversionState extends State<PaginaConversion>
} }
} }
Widget _createDefaultConversionPanel() { Widget _createTabVideos(){
return Material( return Material(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
shape: BeveledRectangleBorder( shape: BeveledRectangleBorder(
...@@ -179,15 +188,39 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -179,15 +188,39 @@ class _PaginaConversionState extends State<PaginaConversion>
children: [ children: [
_createBotonesPerfilFormato(), _createBotonesPerfilFormato(),
SizedBox( SizedBox(
height: MediaQuery.of(context).size.height - 460, height: 68,
child: TabBar(
controller: _tabController,
tabs: <Widget>[
Tab(
icon: TipoMultimedia.video.icono,
text: 'Vídeo',
),
Tab(
icon: TipoMultimedia.audio.icono,
text: 'Audio',
),
Tab(
icon: TipoMultimedia.imagen.icono,
text: 'Imagen',
)
]
),
),
SizedBox(
height: MediaQuery.of(context).size.height - 528,
child: Padding( child: Padding(
padding: const EdgeInsets.only(top: 16.0), padding: const EdgeInsets.only(top: 16.0),
child: GridView.count( child: TabBarView(
crossAxisCount: _showProfiles? 1 : 3, controller: _tabController,
childAspectRatio: _showProfiles ? 6.0 : 1.0, children: TipoMultimedia.values.map((tipo) {
return GridView.count(
crossAxisCount: 3,
crossAxisSpacing: 12, crossAxisSpacing: 12,
mainAxisSpacing: 12, mainAxisSpacing: 12,
children: _showProfiles? _createListPerfiles() : _createGridBotonesConversion() children: _createGridBotonesConversion(tipo: tipo)
);
}).toList()
), ),
), ),
), ),
...@@ -198,7 +231,7 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -198,7 +231,7 @@ class _PaginaConversionState extends State<PaginaConversion>
); );
} }
Widget _createTabVideos(){ Widget _createDefaultConversionPanel() {
return Material( return Material(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
shape: BeveledRectangleBorder( shape: BeveledRectangleBorder(
...@@ -221,39 +254,15 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -221,39 +254,15 @@ class _PaginaConversionState extends State<PaginaConversion>
children: [ children: [
_createBotonesPerfilFormato(), _createBotonesPerfilFormato(),
SizedBox( SizedBox(
height: 68, height: MediaQuery.of(context).size.height - 460,
child: TabBar(
controller: _tabController,
tabs: <Widget>[
Tab(
icon: TipoMultimedia.video.icono,
text: 'Vídeo',
),
Tab(
icon: TipoMultimedia.audio.icono,
text: 'Audio',
),
Tab(
icon: TipoMultimedia.imagen.icono,
text: 'Imagen',
)
]
),
),
SizedBox(
height: MediaQuery.of(context).size.height - 528,
child: Padding( child: Padding(
padding: const EdgeInsets.only(top: 16.0), padding: const EdgeInsets.only(top: 16.0),
child: TabBarView( child: GridView.count(
controller: _tabController, crossAxisCount: _showProfiles? 1 : 3,
children: TipoMultimedia.values.map((tipo) { childAspectRatio: _showProfiles ? 6.0 : 1.0,
return GridView.count(
crossAxisCount: 3,
crossAxisSpacing: 12, crossAxisSpacing: 12,
mainAxisSpacing: 12, mainAxisSpacing: 12,
children: _createGridBotonesConversion(tipo: tipo) children: _showProfiles? _createListPerfiles() : _createGridBotonesConversion()
);
}).toList()
), ),
), ),
), ),
...@@ -326,7 +335,6 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -326,7 +335,6 @@ class _PaginaConversionState extends State<PaginaConversion>
formatoPerfil = perfil.extensionMusica; formatoPerfil = perfil.extensionMusica;
} }
if(formatoPerfil != null){ if(formatoPerfil != null){
Color color = Theme.of(context).cardColor; Color color = Theme.of(context).cardColor;
if(formatoPerfil == widget._formatoOriginal){ if(formatoPerfil == widget._formatoOriginal){
...@@ -348,11 +356,8 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -348,11 +356,8 @@ class _PaginaConversionState extends State<PaginaConversion>
), ),
); );
} : () { } : () {
if (_formatoConvertido != formatoPerfil) { if (_formatoConvertido != formatoPerfil && _calidadActual != perfil.calidad) {
setState(() { _cambiarFormatoCalidad(formatoPerfil!, perfil.calidad);
_formatoConvertido = formatoPerfil;
_calidadActual = perfil.calidad;
});
} }
}, },
child: Container( child: Container(
...@@ -395,27 +400,10 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -395,27 +400,10 @@ class _PaginaConversionState extends State<PaginaConversion>
borderRadius: BorderRadius.circular(20.0), borderRadius: BorderRadius.circular(20.0),
onTap: _formatoConvertido == elemento ? () { onTap: _formatoConvertido == elemento ? () {
setState(() { setState(() {
_formatoConvertido = null; _formatoConvertido = _calidadActual = null;
_calidadActual = null; _cambiarFormatoCalidad(null, null);
}); });
} : () { setState((){ } : () => _cambiarFormatoCalidad(elemento, Calidad.media),
_formatoConvertido = elemento;
// TODO: Cambiar calidad del archivo
ElementoSeleccionable resultado;
if(widget._seleccionable is Carpeta){
final formatos = (widget._seleccionable as Carpeta).formatos;
for(InfoFormato f in formatos){
if(f.formatoOriginal == widget._formatoOriginal){
}
}
}
else{
}
widget._lista.actualizaSeleccionable(widget._indiceArchivo, resultado);
}); },
onLongPress: () { onLongPress: () {
showDialog<void>( showDialog<void>(
context: context, context: context,
...@@ -460,4 +448,25 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -460,4 +448,25 @@ class _PaginaConversionState extends State<PaginaConversion>
); );
}).toList(); }).toList();
} }
void _cambiarFormatoCalidad(Formato? destino, Calidad? calidad){
setState((){
_formatoConvertido = destino;
_calidadActual = calidad;
ElementoSeleccionable resultado;
if(widget._carpeta != null){
widget._carpeta!.setFormatoDestino(widget._formatoOriginal, _formatoConvertido);
resultado = widget._carpeta!;
}
else{
widget._archivo!.formatoDestino = _formatoConvertido;
resultado = widget._archivo!;
}
// TODO: ACTUALIZAR CALIDAD
widget._lista.actualizaSeleccionable(widget._indiceArchivo, resultado);
});
}
} }
\ No newline at end of file
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