Commit 6550e809 by Diego Pérez Peña

Conflicto extraño resuelto

parents 470c1e15 d2e85981
Showing with 119 additions and 129 deletions
...@@ -4,44 +4,28 @@ import 'package:prueba_multimedia/modelo/modelo.dart'; ...@@ -4,44 +4,28 @@ 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 Carpeta? _carpeta; final ElementoSeleccionable _seleccionable;
final InfoFormato? _infoFormato;
final Convertible? _archivo;
final Formato _formatoOriginal; final Formato _formatoOriginal;
const PaginaConversion.convertible({ const PaginaConversion({
super.key, super.key,
required Formato formatoOriginal, required Formato formatoOriginal,
required int indiceArchivo, required int indiceArchivo,
required Convertible elemento, required Convertible seleccionable,
required ListaSeleccionables lista required ListaSeleccionables lista
}): _formatoOriginal = formatoOriginal, }): _formatoOriginal = formatoOriginal,
_indiceArchivo = indiceArchivo, _indiceArchivo = indiceArchivo,
_archivo = elemento, _seleccionable = seleccionable,
_carpeta = null,
_infoFormato = null,
_lista = lista; _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;
@override @override
State<PaginaConversion> createState() => _PaginaConversionState(); State<PaginaConversion> createState() => _PaginaConversionState();
} }
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;
...@@ -52,12 +36,6 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -52,12 +36,6 @@ 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
...@@ -74,11 +52,11 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -74,11 +52,11 @@ class _PaginaConversionState extends State<PaginaConversion>
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
_createFormatBox(true), _createOriginalFormatBox(),
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),
_createFormatBox(false) _createConversionFormatBox()
], ],
), ),
SizedBox(height: 20.0), SizedBox(height: 20.0),
...@@ -91,21 +69,34 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -91,21 +69,34 @@ class _PaginaConversionState extends State<PaginaConversion>
); );
} }
Widget _createFormatBox(bool original){ Widget _createOriginalFormatBox(){
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(_formatoConvertido == null){
if(original){ nombreFormato = ' ';
nombreFormato = widget._formatoOriginal.name.toUpperCase(); } else {
fondo = Colors.black26; nombreFormato = _formatoConvertido!.name.toUpperCase();
}
else{
if(_formatoConvertido == null){
nombreFormato = ' ';
fondo = Colors.white;
} else {
nombreFormato = _formatoConvertido!.name.toUpperCase();
fondo = Theme.of(context).colorScheme.inversePrimary;
}
} }
return DecoratedBox( return DecoratedBox(
...@@ -114,7 +105,7 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -114,7 +105,7 @@ class _PaginaConversionState extends State<PaginaConversion>
color: Colors.black, color: Colors.black,
), ),
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
color: fondo color: _formatoConvertido == null ? Colors.white : Theme.of(context).colorScheme.inversePrimary
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.all(13.0), padding: const EdgeInsets.all(13.0),
...@@ -165,18 +156,18 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -165,18 +156,18 @@ class _PaginaConversionState extends State<PaginaConversion>
} }
} }
Widget _createTabVideos(){ Widget _createDefaultConversionPanel() {
return Material( return Material(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
shape: BeveledRectangleBorder( shape: BeveledRectangleBorder(
side: BorderSide( side: BorderSide(
color: Colors.black, color: Colors.black,
width: 1 width: 1
), ),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(20.0), topLeft: Radius.circular(20.0),
topRight: Radius.circular(20.0) topRight: Radius.circular(20.0)
) )
), ),
child: Container( child: Container(
height: MediaQuery.of(context).size.height - 380, height: MediaQuery.of(context).size.height - 380,
...@@ -188,39 +179,15 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -188,39 +179,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( crossAxisSpacing: 12,
crossAxisCount: 3, mainAxisSpacing: 12,
crossAxisSpacing: 12, children: _showProfiles? _createListPerfiles() : _createGridBotonesConversion()
mainAxisSpacing: 12,
children: _createGridBotonesConversion(tipo: tipo)
);
}).toList()
), ),
), ),
), ),
...@@ -231,18 +198,18 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -231,18 +198,18 @@ class _PaginaConversionState extends State<PaginaConversion>
); );
} }
Widget _createDefaultConversionPanel() { Widget _createTabVideos(){
return Material( return Material(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
shape: BeveledRectangleBorder( shape: BeveledRectangleBorder(
side: BorderSide( side: BorderSide(
color: Colors.black, color: Colors.black,
width: 1 width: 1
), ),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(20.0), topLeft: Radius.circular(20.0),
topRight: Radius.circular(20.0) topRight: Radius.circular(20.0)
) )
), ),
child: Container( child: Container(
height: MediaQuery.of(context).size.height - 380, height: MediaQuery.of(context).size.height - 380,
...@@ -254,15 +221,39 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -254,15 +221,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) {
crossAxisSpacing: 12, return GridView.count(
mainAxisSpacing: 12, crossAxisCount: 3,
children: _showProfiles? _createListPerfiles() : _createGridBotonesConversion() crossAxisSpacing: 12,
mainAxisSpacing: 12,
children: _createGridBotonesConversion(tipo: tipo)
);
}).toList()
), ),
), ),
), ),
...@@ -335,6 +326,7 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -335,6 +326,7 @@ 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){
...@@ -356,8 +348,11 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -356,8 +348,11 @@ class _PaginaConversionState extends State<PaginaConversion>
), ),
); );
} : () { } : () {
if (_formatoConvertido != formatoPerfil && _calidadActual != perfil.calidad) { if (_formatoConvertido != formatoPerfil) {
_cambiarFormatoCalidad(formatoPerfil!, perfil.calidad); setState(() {
_formatoConvertido = formatoPerfil;
_calidadActual = perfil.calidad;
});
} }
}, },
child: Container( child: Container(
...@@ -400,10 +395,27 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -400,10 +395,27 @@ class _PaginaConversionState extends State<PaginaConversion>
borderRadius: BorderRadius.circular(20.0), borderRadius: BorderRadius.circular(20.0),
onTap: _formatoConvertido == elemento ? () { onTap: _formatoConvertido == elemento ? () {
setState(() { setState(() {
_formatoConvertido = _calidadActual = null; _formatoConvertido = null;
_cambiarFormatoCalidad(null, null); _calidadActual = null;
}); });
} : () => _cambiarFormatoCalidad(elemento, Calidad.media), } : () { setState((){
_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,
...@@ -448,25 +460,4 @@ class _PaginaConversionState extends State<PaginaConversion> ...@@ -448,25 +460,4 @@ 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