#!/bin/bash

META_FULL_NAME="KShutDown"

if [[ (("$TERM" == "dumb") || ("$TERM" == "xterm")) && ("${1}" != "--launch-in-konsole") ]]; then
	echo "Press Ctrl+C to exit $META_FULL_NAME installer"
	konsole --notabbar --notoolbar --workdir `dirname "${0}"` -T "$META_FULL_NAME Installer" -e ${0} --launch-in-konsole
	exit
fi;

# dirs
DEFAULT_DIR=`kde-config --prefix`
if [ "$DEFAULT_DIR" == "" ]; then
	DEFAULT_DIR=/usr
fi;
INSTALL_DIR=$DEFAULT_DIR

# colors
DEF_C="\E[30;47m"
KEY_C="\E[34;47m"

# configure options
CONFIGURE_OPTIONS=""
FAST_COMPILATION="0"

# i18n
# english
I18N_CHANGE_DIR="Change installation directory (prefix)"
I18N_CHANGES="Changes (q - quit)"
I18N_DISABLE_FAST="Disable fast compilation"
I18N_ENABLE_FAST="Enable fast compilation"
I18N_ENTER_ROOT_PASSWORD="Enter the root password to install $META_FULL_NAME"
I18N_INSTALL="Install"
I18N_LICENSE="License"
I18N_PRESS_ENTER="Press <Enter> to exit"
I18N_QUIT="Quit"

# polish
if [[ ("$LANG" == "pl_PL") || ("$LANG" == "pl") ]]; then
I18N_CHANGE_DIR="Zmie katalog instalacji (prefix)"
I18N_CHANGES="Zmiany (q - wyjcie)"
I18N_DISABLE_FAST="Wycz szybk kompilacj"
I18N_ENABLE_FAST="Wcz szybk kompilacj"
I18N_ENTER_ROOT_PASSWORD="Podaj haso root-a, aby zainstalowa $META_FULL_NAME"
I18N_INSTALL="Instaluj"
I18N_LICENSE="Licencja"
I18N_PRESS_ENTER="Nacinij <Enter>, aby wyj"
I18N_QUIT="Zakocz"
fi;

# internal functions

reset_me()
{
	tput sgr0
}

quit_me()
{
	reset_me
	exit ${1}
}

kill_me()
{
	echo
	echo
	echo "Setup: ${1}"
	echo
	echo "$I18N_PRESS_ENTER"
	read
	quit_me 1
}

setup_show_menu()
{
	echo -e "$DEF_C"
	clear
	echo
	echo "  $META_FULL_NAME Installer"
	echo
	echo -e "  [${KEY_C}I${DEF_C}] $I18N_INSTALL (./configure --prefix=${INSTALL_DIR}, make, su -c \"make install\")"
	echo -e "  [${KEY_C}P${DEF_C}] $I18N_CHANGE_DIR"
	if [ "$FAST_COMPILATION" == "1" ]; then
		echo -e "  [${KEY_C}F${DEF_C}] $I18N_DISABLE_FAST";
	else
		echo -e "  [${KEY_C}F${DEF_C}] $I18N_ENABLE_FAST (--enable-final)";
	fi;
	echo
	echo -e "  [${KEY_C}C${DEF_C}] $I18N_CHANGES"
	echo -e "  [${KEY_C}L${DEF_C}] $I18N_LICENSE (GPL)"
	echo -e "  [${KEY_C}R${DEF_C}] Readme"
	echo
	echo -e "  [${KEY_C}Q${DEF_C}] $I18N_QUIT"
}

while [ 1 ]; do

	setup_show_menu

	read -n 1 -s

	# install
	if [[ ("$REPLY" == "i") || ( "$REPLY" == "I" ) ]]; then
		if [ "$FAST_COMPILATION" == "1" ]; then
			CONFIGURE_OPTIONS="--prefix=${INSTALL_DIR} --enable-final";
		else
			CONFIGURE_OPTIONS="--prefix=${INSTALL_DIR}";
		fi;
		echo
		echo "Configuring with options: $CONFIGURE_OPTIONS"
		echo
		# configure
		if ./configure $CONFIGURE_OPTIONS; then
			echo
			echo "Compiling..."
			echo "This may take a few minutes."
			echo
			# make
			if make; then
				# make install via su
				echo
				echo "$I18N_ENTER_ROOT_PASSWORD (make install):"
				if su -c "make install"; then
					echo
					echo "Thank you for using $META_FULL_NAME!"
					echo
					echo "KShutDown Classic: kshutdown"
					echo "KShutDown Wizard: kshutdown --wizard"
					echo "Command Line Options: kshutdown --help"
					echo "K Menu: Utilities -> KShutDown"
					echo
					echo -e "$I18N_PRESS_ENTER\a"
					read
					quit_me
				else
					kill_me "Installation failed!"
				fi;
			else
				kill_me "Compilation failed!"
			fi;
		else
			echo
			echo
			echo "Setup: Make sure you have installed the \"kdelibs-devel\" package"
			echo "       which is required to compile any KDE application."
			kill_me "Configuration failed!"
		fi;
		quit_me;

	# prefix
	elif [[ ("$REPLY" == "p") || ( "$REPLY" == "P" ) ]]; then
		echo
		echo "Enter a new prefix [${DEFAULT_DIR}]: "
		read -e
		if [ "$REPLY" == "" ]; then
			REPLY=$DEFAULT_DIR
		fi;
		INSTALL_DIR="$REPLY"

	# toggle fast compilation
	elif [[ ("$REPLY" == "f") || ( "$REPLY" == "F" ) ]]; then
		if [[ ("$FAST_COMPILATION" == "0") ]]; then
			FAST_COMPILATION="1";
		else
			FAST_COMPILATION="0";
		fi;

	# changes
	elif [[ ("$REPLY" == "c") || ( "$REPLY" == "C" ) ]]; then
		less "ChangeLog"

	# license
	elif [[ ("$REPLY" == "l") || ( "$REPLY" == "L" ) ]]; then
		less "COPYING"

	# readme
	elif [[ ("$REPLY" == "r") || ( "$REPLY" == "R" ) ]]; then
		less "README"

	# quit
	elif [[ ("$REPLY" == "q") || ( "$REPLY" == "Q" ) ]]; then
		reset_me
		clear
		exit
	fi;

done
