Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rafa Castillo Passols
/
Prototipo-Multimedia
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6550e809
authored
Mar 21, 2025
by
Diego Pérez Peña
1
Browse files
Options
_('Browse Files')
Download
Plain Diff
Conflicto extraño resuelto
parents
470c1e15
d2e85981
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
129 deletions
lib/paginas/pagina_conversion.dart
lib/paginas/pagina_conversion.dart
View file @
6550e809
...
...
@@ -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:
[
_create
FormatBox
(
true
),
_create
OriginalFormatBox
(
),
const
SizedBox
(
width:
10.0
),
Icon
(
Icons
.
chevron_right
),
const
SizedBox
(
width:
10.0
),
_create
FormatBox
(
false
)
_create
ConversionFormatBox
(
)
],
),
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
_create
TabVideos
()
{
Widget
_create
DefaultConversionPanel
()
{
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
_create
DefaultConversionPanel
()
{
Widget
_create
TabVideos
()
{
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
;
_ca
mbiarFormatoCalidad
(
null
,
null
)
;
_formatoConvertido
=
null
;
_ca
lidadActual
=
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
}
Diego Pérez Peña
@dpp00022
mentioned in commit
287ae626
Mar 21, 2025
mentioned in commit
287ae626
mentioned in commit 287ae626a31dc3eeefbc5cd15ffac7dc34b6c4f7
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment