--Funciones del Explorador

dofile("APP/explorador/funciones.lua")
dofile("APP/explorador/mini.lua")

--ms0:/ o ef0:/
msef=0

propiedad=""
pos_p=1
porta=""
part1=""
newname=""
actual=1
elegida=1
kill=false
propi=false
nuevo=false
creada=1
scroll=0
posicionamiento=""

with=1
pos_tarea=0


--Cuadros de colision tareas
tareas_c={}
	
tareas_c[1]={x=247,y=60,w=190,h=10}
tareas_c[2]={x=247,y=75,w=190,h=10}
tareas_c[3]={x=247,y=90,w=190,h=10}
tareas_c[4]={x=247,y=105,w=190,h=10}
tareas_c[5]={x=247,y=120,w=190,h=10}
tareas_c[6]={x=247,y=135,w=190,h=10}
tareas_c[7]={x=247,y=150,w=190,h=10}
tareas_c[8]={x=247,y=165,w=190,h=10}
tareas_c[9]={x=247,y=180,w=190,h=10}


rutas_c={}
for i=1,4 do
rutas_c[i]={x=3,y=145+18*i,w=105,h=15,n=ini.read("APP/explorador/config.ini","a"..i,"ms0"),r=ini.read("APP/explorador/config.ini","b"..i,"ms0:/")}
end


rutas_c[5]={x=8,y=249,w=26,h=14,n={},e=false}
for i=1,4 do
	rutas_c[5].n[i]={x=38-15+15*i,y=249,w=15,h=14,n=i}
end

rutas_c[6]={x=16,y=95,w=27,h=21}
rutas_c[7]={x=61,y=95,w=21,h=22}



flechas_exp={}
flechas_exp[1]={x=27,y=43,w=32,h=33}
flechas_exp[2]={x=59,y=47,w=22,h=24}

close={x=444,y=3,w=29,h=18}
minim={x=414,y=3,w=29,h=18}

workDir=files.list("ms0:/")
lugar="ms0:/"
tables={}

icons={}
for i=1,16 do
icons[i]=image.load("APP/explorador/iconos/"..i..".png")
end

posicion=0

zip_exing=""



function explorador()
liberar(4)
actualizar_m()

lugar=files.nofile(workDir[1].name)
movi_title=1

while true do
controls.read()
fondo:blit(0,0)

if #workDir==0 then
	posicionamiento=lugar
	workDir=files.list(files.nofile(lugar))
end

lugar=files.nofile(workDir[1].name)
if screen.textwidth(lugar,0.8)>400 then
	title=lugar:sub(math.ceil(movi_title),math.ceil(movi_title)+40)
	screen.print(12,6,title,0.8,blanco,0)

	movi_title=movi_title+0.05
	if movi_title+40>#lugar then movi_title=1 end
else
	screen.print(12,6,lugar,0.8,blanco,0)
end


posicion=0
if #workDir>0 then
	for w=1,#workDir do
		--En pantalla
		if tables[w].y>0 and tables[w].y<272 then
			if col(p,tables[w]) then posicion=w end
			icons[tables[w].i]:blit(tables[w].x,tables[w].y+5)
			if posicion==w then
				if #files.nopath(workDir[w].name)>18 then 
					screen.print(pspfont,tables[w].x,tables[w].y+55,files.nopath(workDir[w].name):sub(1,18).."...",0.8,azul,0)
				else
					screen.print(pspfont,tables[w].x,tables[w].y+55,files.nopath(workDir[w].name),0.8,azul,0)
				end
			else
				if #files.nopath(workDir[w].name)>18 then 
					screen.print(pspfont,tables[w].x,tables[w].y+55,files.nopath(workDir[w].name):sub(1,18).."...",0.8,rojo,0)
				else
					screen.print(pspfont,tables[w].x,tables[w].y+55,files.nopath(workDir[w].name),0.8,rojo,0)
				end
			end
		end
	end
end

if controls.press("circle") then 
	propi=false
	tareas_e=false
	nuevo=false
	opndcon=false
end

if not propi then

	if controls.press("r") and posicion>0 then
		abrir_barra()
	end

	if not tareas_e and not nuevo and not opndcon then
		if controls.press("cross") and posicion!=0 then 
			if workDir[posicion].directory then	
				tareas_e=false
				adelante()
			elseif files.ext(workDir[posicion].name)=="satd" then 
				ruta=ini.read(workDir[posicion].name,"Ruta","Nd") 
				if #files.list(ruta)>0 then
					workDir=files.list(ruta)
					explorador()
				else
					vac()
				end
			elseif files.ext(workDir[posicion].name)=="zip" then
				zip_exing=files.nofile(workDir[posicion].name)
				explorador_zip() 
			elseif files.ext(workDir[posicion].name)=="app" then 
				appa=tonumber(ini.read(workDir[posicion].name,"app","1"))
				if appa!=nil then
					runapp(appa/8-5)
				end
			end
		end
		if zip_exing!="" then
			if controls.press("left") then workDir=files.list(zip_exing) zip_exing="" explorador() end
		else
			if controls.press("cross") and col(p,flechas_exp[1]) then 
				posicionamiento=lugar
				workDir=files.list(files.nofile(lugar))
				explorador() 
			end
			if controls.press("cross") and col(p,flechas_exp[2]) and posicionamiento!="" then 
				if #files.list(posicionamiento)>0 then 
					workDir=files.list(posicionamiento) 
					explorador() 
				else 
					vac()
				end
			end
		end
	end
end

if controls.l() then 
	if msef==0 then
		if files.exists("ef0:/") then
			msef=1
			workDir=files.list("ef0:/")
			explorador()	
		end
	else
		msef=0
		workDir=files.list("ms0:/")
		explorador()	
	end
end


screen.print(51,80,"Herramientas",0.6,negro,0,"center")
screen.print(51,128,"Accesos\nDirectos",0.6,negro,0,"center")


for i=1,4 do
	if col(p,rutas_c[i]) then
		draw.fillrect(rutas_c[i].x,rutas_c[i].y,rutas_c[i].w,rutas_c[i].h,sky)
		if controls.press("cross") then
			if files.exists(rutas_c[i].r) then
				if #files.list(rutas_c[i].r)>0 then
					workDir=files.list(rutas_c[i].r)
					explorador()
				else
					vac(false,rutas_c[i].r)
				end
			end
		end
	end
	screen.print(51,rutas_c[i].y+2,rutas_c[i].n,0.6,negro,0,"center")
end

if col(p,rutas_c[5]) then
	if controls.press("cross") then
		if rutas_c[5].e then
			rutas_c[5].e=false
		else
			rutas_c[5].e=true
		end
	end
end

if rutas_c[5].e then
	for i=1,4 do
		if col(p,rutas_c[5].n[i]) then
			draw.rect(rutas_c[5].n[i].x,rutas_c[5].n[i].y,rutas_c[5].n[i].w,rutas_c[5].n[i].h,negro)
			if controls.press("cross") then
				if keyboard==1 then
					a=teclado(1,"Título",10,"")
					b=teclado(1,"Dirección",80,"ms0:/")
				else
					a=os.osk("Titulo","",10,1,2)
					b=os.osk("Direccion","ms0:/",80,1,2)
				end
				if b!="" and a!="" then
					ini.write("APP/explorador/config.ini","a"..i,a)
					ini.write("APP/explorador/config.ini","b"..i,b)
					rutas_c[i].n=a
					rutas_c[i].r=b
				end
			end
		end	
		screen.print(rutas_c[5].n[i].x+7,rutas_c[5].n[i].y+1,rutas_c[5].n[i].n,0.5,negro,0,"center")
	end
end

for i=6,7 do
	if col(p,rutas_c[i]) then
		draw.rect(rutas_c[i].x,rutas_c[i].y,rutas_c[i].w,rutas_c[i].h,negro)
		if controls.press("cross") then
			if i==6 then
				if keyboard==1 then
					srch=teclado(1,"Búsqueda",20,"")
				else
					srch=os.osk("Titulo","",20,1,2)
				end
				ruta=files.list(lugar)
				results={}
				for i=1,#ruta do
					respuesta=listar(ruta[i].name,srch)
					if respuesta!=false then
						results[#results+1]=respuesta
					end
				end

				if #results>0 then
					respuesta=os.message("Búsqueda finalizada\nResultados encontrados: "..#results.."\n¿Deseas verlos?",1)
					if respuesta==1 then
						os.message(table.concat(results,"\n"))
					end
				else
					os.message("Búsqueda finalizada\nNo hay resultados")
				end
			else
				workDir=files.list(lugar)
				explorador()
			end
		end
	end
end



barra_ab()

if pos_tarea>0 then
	propiedades()
end
if pos_tarea!=0 then
	new_file()
	abrir_con()
	tareas()
end

if not propi then
	if controls.square() then
		cursor0:blit(p.x,p.y)
		if not tareas_e and not nuevo then
			if controls.press("down") and tables[#workDir].y>25 then
				for i=1,#workDir do
					tables[i].y=tables[i].y-90 
				end
			end
			if controls.press("up") and tables[1].y<0 then
				for i=1,#workDir do
					tables[i].y=tables[i].y+90 
				end
			end
		end
	else
		puntero()
	end
end

if controls.press("cross") then
	if col(p,close) then sistema() end
end

screen.flip()
if controls.start() then sistema() end
end
end


