#!/bin/bash
# Installer for Media-Detect
# License: GPL	See http://www.gnu.org/copyleft/gpl.html
VERSION="0.55"
DIR_CHECK=`dirname $0`
if [ $DIR_CHECK = "." ]
then
	CURRENT_DIR="$PWD"
else
	CURRENT_DIR="$DIR_CHECK"
fi
if [ "$DESKTOP" = "kde" ]
then
	USE_DIALOGS=1
	SUFFIX="Dialogs"
else
	USE_DIALOGS=0
	SUFFIX="NoDialogs"
fi
KDIALOG="kdialog --title Media-Detect"
menuStringNoDialogs ()
{
	clear
	echo -e "Media-Detect Installer\n----------------------\n\n"
}
cancelCheck ()
{
	if [ $? = 1 ]
	then
		cancel$SUFFIX
	fi
}
cancelDialogs ()
{
	$KDIALOG --msgbox "Installation aborted.                    "
	exit 1
}
cancelNoDialogs ()
{
	clear
	menuStringNoDialogs
	echo "Installation aborted."
	exit 1
}
collectYesNo ()
{
	ttyOldSettings=$(stty -g)
	stty -echo
	stty -icanon
	YESNO=$(head -c1)
	stty "$ttyOldSettings"
	if [ "$YESNO" = "y" ]
	then
		return 0
	else
		return 1
	fi
}

firstStageFront ()
{
	firstStage$SUFFIX
	cancelCheck
}
firstStageNoDialogs ()
{
	menuStringNoDialogs
	echo "This will install Media-Detect $VERSION. Do you want to continue? (y/N)"
	collectYesNo
	return $?
}
firstStageDialogs ()
{
	$KDIALOG --yesno "This will install Media-Detect $VERSION.  Do you want to continue?"
	return $?
}

secondStageFront ()
{
	secondStage$SUFFIX
	cancelCheck
}
secondStageNoDialogs ()
{
	BIN_CHOICE="0"
	until [[ $BIN_CHOICE -ge 1 && $BIN_CHOICE -le 4 ]]
	do
		menuStringNoDialogs
		echo -e "Select a directory for the Media-Detect scripts:\n1) /usr/bin (Default)\n2) /usr/local/bin\n3) Other...\n4) Cancel"
		read BIN_CHOICE
		if [ -z "$BIN_CHOICE" ]
		then
			BIN_CHOICE=1
		fi
	done
	if [ "$BIN_CHOICE" = "4" ]
	then
		return 1
	else
		case $BIN_CHOICE in
			"1")BIN_DIR="/usr/bin";;
			"2")BIN_DIR="/usr/local/bin";;
			"3")echo -e "\nPlease enter a directory for the Media-Detect scripts:";read BIN_DIR;;
		esac
	fi
	if [ ! -e "$BIN_DIR" ]
	then
		menuStringNoDialogs
		echo -e "The directory $BIN_DIR does not exist.\nDo you want this installer to create it? (y/N)"
		collectYesNo
		cancelCheck
		CREATE_BIN_DIR=0
	fi
}
secondStageDialogs ()
{
	BIN_CHOICE=`$KDIALOG --radiolist "Please select a directory for the Media-Detect scripts:" 1 "/usr/bin (Default)" on 2 "/usr/local/bin" off 3 "Other..." off`
	cancelCheck
	case $BIN_CHOICE in
		"1")BIN_DIR="/usr/bin";;
		"2")BIN_DIR="/usr/local/bin";;
		"3")BIN_DIR=`$KDIALOG --inputbox "Please type a directory name below:            "`
	esac
	if [ ! -e "$BIN_DIR" ]
	then
		$KDIALOG --warningyesno "The directory $BIN_DIR does not exist. Do you want\nthis installer to create it?"
		cancelCheck
		CREATE_BIN_DIR=0
	fi
}

thirdStageFront ()
{
	thirdStage$SUFFIX
	cancelCheck
}
thirdStageNoDialogs ()
{	
	MAN_CHOICE=0
	until [[ $MAN_CHOICE -ge 1 && $MAN_CHOICE -le 4 ]]
	do
		menuStringNoDialogs
		echo -e "Please select a directory for the Media-Detect manual page:\n1) /usr/share/man/man1 (Default)\n2) /usr/local/man/man1\n3) Other...\n4) Cancel"
		read MAN_CHOICE
		if [ -z "$MAN_CHOICE" ]
		then
			MAN_CHOICE=1
		fi
	done
	if [ "$MAN_CHOICE" = "4" ]
	then
		return 1
	else
		case $MAN_CHOICE in
			"1")MAN_DIR="/usr/share/man/man1";;
			"2")MAN_DIR="/usr/local/man/man1";;
			"3")echo -e "\nPlease enter a directory for the Media-Detect manual page:";read MAN_DIR;;
		esac
	fi
	if [ ! -e "$MAN_DIR" ]
	then
		menuStringNoDialogs
		echo -e "The directory $MAN_DIR does not exist.\nDo you want this installer to create it?\n(Not recommended! Please review your man page\nconfiguration file, usually /etc/man.conf)\n(y/N)"
		collectYesNo
                cancelCheck
                CREATE_MAN_DIR=0
	fi
}
thirdStageDialogs ()
{
	MAN_CHOICE=`$KDIALOG --radiolist "Please select a directory for the Media-Detect manual page:" 1 "/usr/share/man/man1 (Default)" on 2 "/usr/local/man/man1" off 3 "Other..." off`
	cancelCheck
	case $MAN_CHOICE in
		"1")MAN_DIR="/usr/share/man/man1";;
		"2")MAN_DIR="/usr/local/man/man1";;
		"3")MAN_DIR=`$KDIALOG --inputbox "Please type a directory name below:            "`
	esac
	if [ ! -e "$MAN_DIR" ]
	then
		$KDIALOG --warningyesno "The directory $MAN_DIR does not exist. Do you want\nthis installer to create it? (Not recommended! Please review your\nman page configuration file, usually /etc/man.conf)"
		cancelCheck
		CREATE_MAN_DIR=0
	fi
}
firstStageFront
secondStageFront
thirdStageFront
if [ "$CREATE_BIN_DIR" = "0" ]
then
	echo "mkdir $BIN_DIR" >> $CURRENT_DIR/suInstallScript
fi
if [ "$CREATE_MAN_DIR" = "0" ]
then
	echo "mkdir $MAN_DIR" >> $CURRENT_DIR/suInstallScript
fi
echo "cp $CURRENT_DIR/media-detect $BIN_DIR/media-detect" >> $CURRENT_DIR/suInstallScript
echo "cp $CURRENT_DIR/media-menu $BIN_DIR/media-menu" >> $CURRENT_DIR/suInstallScript
echo "cp $CURRENT_DIR/docs/media-detect.1 $MAN_DIR/media-detect.1" >> $CURRENT_DIR/suInstallScript
echo "chmod 755 $BIN_DIR/media-detect" >> $CURRENT_DIR/suInstallScript
echo "chmod 755 $BIN_DIR/media-menu" >> $CURRENT_DIR/suInstallScript

if [ "$UID" != "0" ]
then
	ROOT_PROMPT="This installer needs superuser (root) privileges.\nYou will now be prompted for the root password."
	ERROR="There was an error running the install script.\nMaybe you mistyped the password?"
	if [ "$USE_DIALOGS" = "0" ]
	then
		menuStringNoDialogs
		echo -e "$ROOT_PROMPT"
		su -c "/bin/bash $CURRENT_DIR/suInstallScript"
		if [ $? = 1 ]
		then
			echo -e "\n$ERROR"
			exit 1
		fi
	else
		$KDIALOG --msgbox "$ROOT_PROMPT"
		kdesu -c /bin/bash $CURRENT_DIR/suInstallScript
		if [ $? = 1 ]
		then
			$KDIALOG --sorry "$ERROR"
			exit 1
		fi
	fi
	rm $CURRENT_DIR/suInstallScript
else
	/bin/bash $CURRENT_DIR/suInstallScript
	rm $CURRENT_DIR/suInstallScript
fi
if [ "$USE_DIALOGS" = "0" ]
then
	echo -e "\nInstallation complete."
	sleep 2
else
	$KDIALOG --msgbox "Installation complete.                  "
fi
exit 0
