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
b213c38b
authored
May 27, 2025
by
Diego Pérez Peña
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Últimos toques a la aplicación
parent
0a923a47
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
100 additions
and
39 deletions
lib/modelo/carpeta.dart
lib/paginas/pagina_principal.dart
lib/widgets/action_button.dart
lib/widgets/carpeta_widget.dart
lib/widgets/convertex_fab_bar.dart
lib/widgets/convertible_widget.dart
lib/modelo/carpeta.dart
View file @
b213c38b
...
@@ -26,16 +26,18 @@ class Carpeta extends ElementoSeleccionable {
...
@@ -26,16 +26,18 @@ class Carpeta extends ElementoSeleccionable {
// Guardamos los archivos
// Guardamos los archivos
for
(
var
file
in
fsEntities
.
whereType
<
File
>())
{
for
(
var
file
in
fsEntities
.
whereType
<
File
>())
{
Archivo
archivo
=
Archivo
(
id:
Uuid
().
v1
(),
file:
file
);
if
(
Formato
.
fromExtension
(
file
.
path
.
split
(
'.'
).
last
)
!=
null
){
_elementos
.
add
(
archivo
);
Archivo
archivo
=
Archivo
(
id:
Uuid
().
v1
(),
file:
file
);
final
f
=
InfoFormato
(
_elementos
.
add
(
archivo
);
formato:
archivo
.
formatoOriginal
,
final
f
=
InfoFormato
(
carpeta:
this
,
formato:
archivo
.
formatoOriginal
,
seleccionado:
true
,
carpeta:
this
,
subCarpeta:
false
seleccionado:
true
,
);
subCarpeta:
false
if
(!
_formatos
.
contains
(
f
)){
);
_formatos
.
add
(
f
);
if
(!
_formatos
.
contains
(
f
)){
_formatos
.
add
(
f
);
}
}
}
}
}
...
@@ -45,15 +47,17 @@ class Carpeta extends ElementoSeleccionable {
...
@@ -45,15 +47,17 @@ class Carpeta extends ElementoSeleccionable {
final
files
=
directory
.
listSync
(
recursive:
true
,
followLinks:
false
)
final
files
=
directory
.
listSync
(
recursive:
true
,
followLinks:
false
)
.
whereType
<
File
>();
.
whereType
<
File
>();
for
(
var
file
in
files
)
{
for
(
var
file
in
files
)
{
Archivo
archivo
=
Archivo
(
id:
Uuid
().
v1
(),
file:
file
);
if
(
Formato
.
fromExtension
(
file
.
path
.
split
(
'.'
).
last
)
!=
null
){
_elementosSubcarpetas
.
add
(
archivo
);
Archivo
archivo
=
Archivo
(
id:
Uuid
().
v1
(),
file:
file
);
final
i
=
InfoFormato
(
_elementosSubcarpetas
.
add
(
archivo
);
formato:
archivo
.
formatoOriginal
,
final
i
=
InfoFormato
(
carpeta:
this
,
formato:
archivo
.
formatoOriginal
,
seleccionado:
incluirSubcarpetas
,
carpeta:
this
,
subCarpeta:
true
);
seleccionado:
incluirSubcarpetas
,
if
(!
_formatos
.
contains
(
i
)){
subCarpeta:
true
);
_formatos
.
add
(
i
);
if
(!
_formatos
.
contains
(
i
)){
_formatos
.
add
(
i
);
}
}
}
}
}
}
}
...
...
lib/paginas/pagina_principal.dart
View file @
b213c38b
...
@@ -30,14 +30,14 @@ class PaginaPrincipal extends StatelessWidget {
...
@@ -30,14 +30,14 @@ class PaginaPrincipal extends StatelessWidget {
),
),
backgroundColor:
Theme
.
of
(
context
).
primaryColor
,
backgroundColor:
Theme
.
of
(
context
).
primaryColor
,
actions:
[
actions:
[
Consumer
<
ProviderAjustes
>(
Consumer
2
<
ListaSeleccionables
,
ProviderAjustes
>(
builder:
(
context
,
ajustes
,
child
)
{
builder:
(
context
,
lista
,
ajustes
,
child
)
{
return
IconButton
(
return
IconButton
(
icon:
Icon
(
icon:
Icon
(
Icons
.
settings_outlined
,
Icons
.
settings_outlined
,
color:
Colors
.
white
,
color:
Colors
.
white
,
),
),
onPressed:
()
{
onPressed:
(
lista
.
convirtiendo
)?
()
{}
:
(
)
{
Navigator
.
push
(
context
,
Navigator
.
push
(
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
(
context
)
{
builder:
(
context
)
{
...
...
lib/widgets/action_button.dart
View file @
b213c38b
...
@@ -126,6 +126,8 @@ class ActionButton extends StatelessWidget {
...
@@ -126,6 +126,8 @@ class ActionButton extends StatelessWidget {
:
await
FilePicker
.
platform
.
getDirectoryPath
();
:
await
FilePicker
.
platform
.
getDirectoryPath
();
if
(
directorioSalida
!=
null
)
{
if
(
directorioSalida
!=
null
)
{
_actualizadorProgreso
();
final
now
=
DateTime
.
now
();
final
now
=
DateTime
.
now
();
final
nombreZip
=
"Convertex_"
final
nombreZip
=
"Convertex_"
"
${now.day}
-
${now.month}
-
${now.year}
_"
"
${now.day}
-
${now.month}
-
${now.year}
_"
...
@@ -133,8 +135,6 @@ class ActionButton extends StatelessWidget {
...
@@ -133,8 +135,6 @@ class ActionButton extends StatelessWidget {
final
zipFileEncoder
=
ZipFileEncoder
();
final
zipFileEncoder
=
ZipFileEncoder
();
zipFileEncoder
.
create
(
"
$directorioSalida
/
$nombreZip
.zip"
);
zipFileEncoder
.
create
(
"
$directorioSalida
/
$nombreZip
.zip"
);
_actualizadorProgreso
();
final
resultsZip
=
<
Future
<
void
>>[];
final
resultsZip
=
<
Future
<
void
>>[];
while
(
manager
.
seleccionables
.
isNotEmpty
){
while
(
manager
.
seleccionables
.
isNotEmpty
){
ElementoSeleccionable
sel
=
manager
.
seleccionables
.
first
;
ElementoSeleccionable
sel
=
manager
.
seleccionables
.
first
;
...
...
lib/widgets/carpeta_widget.dart
View file @
b213c38b
...
@@ -144,7 +144,8 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
...
@@ -144,7 +144,8 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
flex:
3
,
flex:
3
,
child:
IconButton
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
edit
),
icon:
const
Icon
(
Icons
.
edit
),
onPressed:
()
{
onPressed:
(
widget
.
lista
.
convirtiendo
)?
()
{}
:
()
{
Navigator
.
push
(
Navigator
.
push
(
context
,
context
,
MaterialPageRoute
(
builder:
(
context
)
{
MaterialPageRoute
(
builder:
(
context
)
{
...
@@ -180,6 +181,9 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
...
@@ -180,6 +181,9 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
clipper:
_MyRectClipper
(
_controller
),
clipper:
_MyRectClipper
(
_controller
),
child:
Dismissible
(
child:
Dismissible
(
key:
Key
(
elemento
.
id
),
key:
Key
(
elemento
.
id
),
direction:
widget
.
lista
.
convirtiendo
?
DismissDirection
.
none
:
DismissDirection
.
horizontal
,
background:
Container
(
background:
Container
(
color:
Colors
.
red
,
color:
Colors
.
red
,
alignment:
Alignment
.
centerLeft
,
alignment:
Alignment
.
centerLeft
,
...
@@ -265,7 +269,8 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
...
@@ -265,7 +269,8 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
flex:
2
,
flex:
2
,
child:
IconButton
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
edit
),
icon:
const
Icon
(
Icons
.
edit
),
onPressed:
()
{
onPressed:
(
widget
.
lista
.
convirtiendo
)?
()
{}
:
()
{
Navigator
.
push
(
context
,
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
{
MaterialPageRoute
(
builder:
(
context
)
{
return
PaginaConfiguracion
(
return
PaginaConfiguracion
(
...
@@ -274,15 +279,6 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
...
@@ -274,15 +279,6 @@ class _CarpetaWidgetState extends State<CarpetaWidget>
elemento:
elemento
,
elemento:
elemento
,
carpeta:
carpeta
carpeta:
carpeta
);
);
/*
return PaginaConversion.carpeta(
formatoOriginal: elemento.formatoOriginal,
indiceArchivo: index-1,
carpeta: carpeta,
infoFormato: elemento,
lista: widget.lista
);
*/
}
}
));
));
},
},
...
...
lib/widgets/convertex_fab_bar.dart
View file @
b213c38b
import
'dart:io'
;
import
'dart:io'
;
import
'package:archive/archive_io.dart'
;
import
'package:ffmpeg_kit_flutter_new/return_code.dart'
;
import
'package:file_picker/file_picker.dart'
;
import
'package:file_picker/file_picker.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:provider/provider.dart'
;
import
'package:provider/provider.dart'
;
...
@@ -143,7 +145,7 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
...
@@ -143,7 +145,7 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
convertirCopiar
(
manager
);
convertirCopiar
(
manager
);
break
;
break
;
case
2
:
case
2
:
convertirComprimir
();
convertirComprimir
(
manager
);
break
;
break
;
}
}
},
},
...
@@ -242,9 +244,67 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
...
@@ -242,9 +244,67 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
}
}
}
}
Future
<
void
>
convertirComprimir
()
async
{
Future
<
void
>
convertirComprimir
(
ListaSeleccionables
manager
)
async
{
if
(
await
ActionButton
.
comprobacionPermisoArchivos
(
context
)){
if
(
await
ActionButton
.
comprobacionPermisoArchivos
(
context
)){
print
(
'Hola'
);
// Averiguamos donde colocar los archivos de salida
String
?
directorioSalida
=
widget
.
providerAjustes
.
carpetaSalida
.
isNotEmpty
?
widget
.
providerAjustes
.
carpetaSalida
:
await
FilePicker
.
platform
.
getDirectoryPath
();
if
(
directorioSalida
!=
null
)
{
listenerActualizar
(
manager
);
final
now
=
DateTime
.
now
();
final
nombreZip
=
"Convertex_"
"
${now.day}
-
${now.month}
-
${now.year}
_"
"
${now.hour}
-
${now.minute}
-
${now.second}
"
;
final
zipFileEncoder
=
ZipFileEncoder
();
zipFileEncoder
.
create
(
"
$directorioSalida
/
$nombreZip
.zip"
);
final
resultsZip
=
<
Future
<
void
>>[];
while
(
manager
.
seleccionables
.
isNotEmpty
){
ElementoSeleccionable
sel
=
manager
.
seleccionables
.
first
;
// Conversion de carpetas
if
(
sel
is
Carpeta
){
Directory
d
=
await
Directory
(
"
$directorioSalida
/
${sel.nombre}
"
).
create
();
final
resultsConversion
=
<
Future
<
ReturnCode
?>>[];
for
(
var
archivo
in
sel
.
elementosSeleccionados
)
{
resultsConversion
.
add
(
Conversor
.
convertir
(
archivo
,
d
.
path
));
}
// Esperamos a la conversión y añadimos a zip
for
(
final
result
in
resultsConversion
)
{
await
result
;
}
resultsZip
.
add
(
zipFileEncoder
.
addDirectory
(
d
)..
then
((
_
)
=>
d
.
delete
(
recursive:
true
))
);
}
// Conversion de archivos
else
if
(
sel
is
Archivo
){
// Esperamos a la conversión y añadimos a zip
await
Conversor
.
convertir
(
sel
,
directorioSalida
);
File
tempFile
=
await
File
(
"
$directorioSalida
/
${sel.nombre}
.
${sel.formatoDestino?.name}
"
).
create
();
resultsZip
.
add
(
zipFileEncoder
.
addFile
(
tempFile
)..
then
((
_
)
=>
tempFile
.
delete
())
);
}
// Esperamos a que la compresión se termine y se borren los
// archivos temporales
if
(
manager
.
seleccionables
.
length
==
1
)
{
for
(
final
result
in
resultsZip
)
{
await
result
;
}
zipFileEncoder
.
closeSync
();
}
// Esto hace que la barra de progreso suba
manager
.
borraSeleccionable
(
0
);
}
}
}
}
}
}
...
...
lib/widgets/convertible_widget.dart
View file @
b213c38b
...
@@ -60,7 +60,8 @@ class ConvertibleWidget extends StatelessWidget {
...
@@ -60,7 +60,8 @@ class ConvertibleWidget extends StatelessWidget {
flex:
2
,
flex:
2
,
child:
IconButton
(
child:
IconButton
(
icon:
const
Icon
(
Icons
.
edit
),
icon:
const
Icon
(
Icons
.
edit
),
onPressed:
()
{
onPressed:
(
lista
.
convirtiendo
)?
()
{}
:
()
{
Navigator
.
push
(
context
,
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
{
MaterialPageRoute
(
builder:
(
context
)
{
return
PaginaConfiguracion
(
return
PaginaConfiguracion
(
...
...
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