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