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';
class PaginaConversion extends StatefulWidget {
final ListaSeleccionables _lista;
final int _indiceArchivo;
final ElementoSeleccionable _seleccionable;
final Carpeta? _carpeta;
final InfoFormato? _infoFormato;
final Convertible? _archivo;
final Formato _formatoOriginal;
const PaginaConversion({
const PaginaConversion.convertible({
super.key,
required Formato formatoOriginal,
required int indiceArchivo,
required Convertible seleccionable,
required Convertible elemento,
required ListaSeleccionables lista
}): _formatoOriginal = formatoOriginal,
_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;
@override
......@@ -24,8 +42,6 @@ class PaginaConversion extends StatefulWidget {
class _PaginaConversionState extends State<PaginaConversion>
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;
Calidad? _calidadActual = null;
......@@ -36,6 +52,12 @@ class _PaginaConversionState extends State<PaginaConversion>
void initState() {
super.initState();
_tabController = TabController(length: 3, vsync: this);
if(widget._carpeta != null){
_formatoConvertido = widget._infoFormato!.formatoDestino;
}
else{
_formatoConvertido = widget._archivo!.formatoDestino;
}
}
@override
......@@ -52,11 +74,11 @@ class _PaginaConversionState extends State<PaginaConversion>
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_createOriginalFormatBox(),
_createFormatBox(true),
const SizedBox(width: 10.0),
Icon(Icons.chevron_right),
const SizedBox(width: 10.0),
_createConversionFormatBox()
_createFormatBox(false)
],
),
SizedBox(height: 20.0),
......@@ -69,34 +91,21 @@ class _PaginaConversionState extends State<PaginaConversion>
);
}
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() {
Widget _createFormatBox(bool original){
final String nombreFormato;
final Color fondo;
if(original){
nombreFormato = widget._formatoOriginal.name.toUpperCase();
fondo = Colors.black26;
}
else{
if(_formatoConvertido == null){
nombreFormato = ' ';
fondo = Colors.white;
} else {
nombreFormato = _formatoConvertido!.name.toUpperCase();
fondo = Theme.of(context).colorScheme.inversePrimary;
}
}
return DecoratedBox(
......@@ -105,7 +114,7 @@ class _PaginaConversionState extends State<PaginaConversion>
color: Colors.black,
),
borderRadius: BorderRadius.circular(15),
color: _formatoConvertido == null ? Colors.white : Theme.of(context).colorScheme.inversePrimary
color: fondo
),
child: Padding(
padding: const EdgeInsets.all(13.0),
......@@ -156,7 +165,7 @@ class _PaginaConversionState extends State<PaginaConversion>
}
}
Widget _createDefaultConversionPanel() {
Widget _createTabVideos(){
return Material(
clipBehavior: Clip.antiAlias,
shape: BeveledRectangleBorder(
......@@ -179,15 +188,39 @@ class _PaginaConversionState extends State<PaginaConversion>
children: [
_createBotonesPerfilFormato(),
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(
padding: const EdgeInsets.only(top: 16.0),
child: GridView.count(
crossAxisCount: _showProfiles? 1 : 3,
childAspectRatio: _showProfiles ? 6.0 : 1.0,
child: TabBarView(
controller: _tabController,
children: TipoMultimedia.values.map((tipo) {
return GridView.count(
crossAxisCount: 3,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
children: _showProfiles? _createListPerfiles() : _createGridBotonesConversion()
children: _createGridBotonesConversion(tipo: tipo)
);
}).toList()
),
),
),
......@@ -198,7 +231,7 @@ class _PaginaConversionState extends State<PaginaConversion>
);
}
Widget _createTabVideos(){
Widget _createDefaultConversionPanel() {
return Material(
clipBehavior: Clip.antiAlias,
shape: BeveledRectangleBorder(
......@@ -221,39 +254,15 @@ class _PaginaConversionState extends State<PaginaConversion>
children: [
_createBotonesPerfilFormato(),
SizedBox(
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,
height: MediaQuery.of(context).size.height - 460,
child: Padding(
padding: const EdgeInsets.only(top: 16.0),
child: TabBarView(
controller: _tabController,
children: TipoMultimedia.values.map((tipo) {
return GridView.count(
crossAxisCount: 3,
child: GridView.count(
crossAxisCount: _showProfiles? 1 : 3,
childAspectRatio: _showProfiles ? 6.0 : 1.0,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
children: _createGridBotonesConversion(tipo: tipo)
);
}).toList()
children: _showProfiles? _createListPerfiles() : _createGridBotonesConversion()
),
),
),
......@@ -326,7 +335,6 @@ class _PaginaConversionState extends State<PaginaConversion>
formatoPerfil = perfil.extensionMusica;
}
if(formatoPerfil != null){
Color color = Theme.of(context).cardColor;
if(formatoPerfil == widget._formatoOriginal){
......@@ -348,11 +356,8 @@ class _PaginaConversionState extends State<PaginaConversion>
),
);
} : () {
if (_formatoConvertido != formatoPerfil) {
setState(() {
_formatoConvertido = formatoPerfil;
_calidadActual = perfil.calidad;
});
if (_formatoConvertido != formatoPerfil && _calidadActual != perfil.calidad) {
_cambiarFormatoCalidad(formatoPerfil!, perfil.calidad);
}
},
child: Container(
......@@ -395,27 +400,10 @@ class _PaginaConversionState extends State<PaginaConversion>
borderRadius: BorderRadius.circular(20.0),
onTap: _formatoConvertido == elemento ? () {
setState(() {
_formatoConvertido = null;
_calidadActual = null;
_formatoConvertido = _calidadActual = null;
_cambiarFormatoCalidad(null, null);
});
} : () { 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);
}); },
} : () => _cambiarFormatoCalidad(elemento, Calidad.media),
onLongPress: () {
showDialog<void>(
context: context,
......@@ -460,4 +448,25 @@ class _PaginaConversionState extends State<PaginaConversion>
);
}).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