#!/bin/bash
. bean_func.fnc

tmplist=/tmp/_bean_folsort_tmplist.txt
br="
"

_sort()
{
	# 変数の宣言
	local i
	local j
	
	# 指定されたフォルダを変数に格納
	local rel="$1"
	
	# 親フォルダの指定がなかった場合は終了
	if [ "a${rel}" = "a" ] ; then
		echo フォルダを指定してください。
		echo 例: foldersort /mnt/sdb1
		exit 1
	fi
	
	# 親フォルダが存在しなかった場合も終了
	if [ ! -d "${rel}" ]; then
		echo フォルダが存在しません。
		exit 1
	fi
	
	# 区切り文字を改行に
	_IFS="$IFS";IFS="${br}"
	
	# 親フォルダの絶対パスを取得
	local abs=$(cd $(dirname "${rel}") && pwd)/$(basename "${rel}")
	
	# 親フォルダへ移動
	cd "${abs}"
	
	# 一時フォルダを作成
	mkdir ./_sorttmp_
	mv * ./_sorttmp_/ 2> /dev/null
	cd ./_sorttmp_
	
	# フォルダ名をリストアップして順番に移動させる
	for i in `ls -1 -v` ; do
		mv "${i}" ../
		echo ${i}
	done
	echo ----------
	
	# 一時フォルダを削除
	cd ../
	rmdir ./_sorttmp_
	
	# 子フォルダをリストアップして順番に処理
	for i in `find . -type d | tail -n +2 | LANG=C sort -f -n` ; do
		
		# 子フォルダに移動
		cd "${i}"
		echo ${i}
		
		# 一時フォルダを作成
		mkdir ./_sorttmp_
		mv * ./_sorttmp_/ 2> /dev/null
		cd ./_sorttmp_
		
		# ファイル名をリストアップして順番に移動させる
		for j in `ls -1 -v` ; do
			mv "${j}" ../
			echo ${j}
		done
		echo ----------
		
		# 一時フォルダを削除
		cd ../
		rmdir ./_sorttmp_
		
		# 親フォルダに戻る
		cd "$abs"
		
	done
	
	# 区切り文字を戻す
	IFS="$_IFS"
}

# 端末に渡された後の処理
if [ "$1" == "--start-sorting" ] ; then
	
	# 区切り文字を改行に
	_IFS="$IFS";IFS="${br}"
	
	# リストを一行ずつ処理
	for i in $(cat "${tmplist}") ; do
		_sort "$i"
	done
	
	# 区切り文字を戻す
	IFS="$_IFS"
	
	rm -f "${tmplist}"
	
	echo 処理が終了しました。Enterでウインドウを閉じます。
	read ans
	exit 0
fi

# 引数が無ければドロップ窓を出す
if [ $# -gt 0 ] ; then
	for i in "$@" ; do
		filelist="${filelist}${br}${i}"
	done
	filelist=$(echo "${filelist}" | tail -n +2)
else
	filelist=$(yad --title="linuxBean USBメモリ・SDカードのソート" \
	--window-icon=drive-removable-media-usb --image=drive-removable-media-usb \
	--borders=10 --on-top --center --dnd \
	--text "このウインドウにフラッシュドライブ（USBメモリ・SDカードなど）のフォルダをドロップした後、OKを押してみてください。\n\nファイルの記録順を「数字の大きさ→アルファベット順」に並べ替えることで、安価な音楽プレイヤー等に見られる「意図した曲順通りに再生されない問題」を解消します。")
	
	if [ $? -gt 0 ] ; then
		exit 1
	fi
	
	filelist=$(Bean_PathConv "${filelist}" | sort | uniq)
fi

if [ "${filelist}" == "" ] ; then
	exit 1
fi

echo "${filelist}" > "${tmplist}"

x-terminal-emulator -e "$0" --start-sorting 
