#!/bin/bash
{
	#////////////////////////////////////
	# DietPi Launcher
	#
	#////////////////////////////////////
	# Created by Daniel Knight / daniel.knight@dietpi.com / dietpi.com
	#
	#////////////////////////////////////
	#
	# Info:
	# - filename /DietPi/dietpi/dietpi-launcher
	# - Whiptail menu with list of all DietPi programs etc.
	#
	#////////////////////////////////////

	#Import DietPi-Globals ---------------------------------------------------------------
	. /DietPi/dietpi/func/dietpi-globals
	G_CHECK_ROOT_USER
	G_CHECK_ROOTFS_RW
	export G_PROGRAM_NAME='DietPi-Launcher'
	#Import DietPi-Globals ---------------------------------------------------------------

	#/////////////////////////////////////////////////////////////////////////////////////
	# MENUS
	#/////////////////////////////////////////////////////////////////////////////////////
	PROGRAM_NAME="DietPi-Launcher"

	CHOICE=0
	OPTION=0
	TARGETMENUID=0
	LAST_SELECTED_ITEM="dietpi-config"

	#TARGETMENUID=0
	Menu_Main(){

		local option_name=()

		option_name+=("" "────Install Optimized Software──────────────");((index++))
		option_name+=("DietPi-Software" "Install optimized software thats ready to run.");((index++))
		option_name+=("" "────Configuration───────────────────────────");((index++))
		option_name+=("DietPi-Config" "Feature rich config tool for your device.");((index++))

		if (( $(dpkg --get-selections | grep -ci -m1 '^alsa-utils') )); then

			option_name+=("DietPi-JustBoom" "Launches EQ and MPD audio options menu")

		fi

		option_name+=("DietPi-AutoStart" "Choose what software runs after boot.");((index++))

		#+ add dietpi-cloudshell if installed.
		if [ -f /DietPi/dietpi/.installed ] && (( $(cat /DietPi/dietpi/.installed | grep -ci -m1 'aSOFTWARE_INSTALL_STATE\[62\]=2') )); then

			option_name+=("DietPi-CloudShell" "Adjust update rate, scenes settings and more.");((index++))

		fi

		option_name+=("DietPi-Cron" "Modify the start times of cron jobs.");((index++))
		option_name+=("DietPi-Process_Tool" "Tweak Nice, Affinity, Schedulers for programs.");((index++))
		option_name+=("DietPi-Drive_Manager" "Setup and control multiple external drives.");((index++))
		option_name+=("" "────DietPi Updates──────────────────────────");((index++))
		option_name+=("DietPi-Update" "Keep your DietPi system upto date.");((index++))
		option_name+=("" "────Backups / Sync──────────────────────────");((index++))
		option_name+=("DietPi-Backup" "Backup and restore your DietPi system.");((index++))
		option_name+=("DietPi-Sync" "Duplicate (Sync) one directory to another.");((index++))
		option_name+=("" "────Maintenance─────────────────────────────");((index++))
		option_name+=("DietPi-Cleaner" "Remove unwanted junk from your system.");((index++))
		option_name+=("" "────Misc────────────────────────────────────");((index++))
		option_name+=("DietPi-BugReport" "Found a bug? Let us know!");((index++))
		option_name+=("DietPi-CpuInfo" "Displays CPU Temp, frequencies, type etc.");((index++))
		option_name+=("DietPi-LetsEncrypt" "Frontend for Lets Encrypt, free SSL certs");((index++))
		option_name+=("DietPi-MorseCode" "Converts and outputs a text file to morsecode.");((index++))


		OPTION=$(whiptail --title "$PROGRAM_NAME" --menu "Please select a program to run:" --cancel-button "Exit" --backtitle "$PROGRAM_NAME" --default-item "$LAST_SELECTED_ITEM" 18 76 10 "${option_name[@]}" 3>&1 1>&2 2>&3)
		CHOICE=$?

		unset option_name

		#Run program
		if (( $CHOICE == 0 )); then

			if [ "$OPTION" != "" ]; then

				LAST_SELECTED_ITEM="$OPTION"

				#convert to lowercase
				local command=$(echo "${OPTION,,}")

				#Run
				if [ -f "/DietPi/dietpi/$command" ]; then

					/DietPi/dietpi/"$command"

				# - different location
				elif [ -f "/DietPi/dietpi/misc/$command" ]; then

					/DietPi/dietpi/misc/"$command"

				# - different location
				elif [ -f "/DietPi/dietpi/func/$command" ]; then

					/DietPi/dietpi/func/"$command"

				fi

				#+ Wait for user input.
				if [ "$command" = "dietpi-cpuinfo" ] ||
					[ "$command" = "dietpi-update" ] ||
					[ "$command" = "dietpi-morsecode" ]; then

					echo -e ""
					read -p " - Press any key to exit...."

				fi

			fi

		#Exit
		else

			whiptail --title "Exit $PROGRAM_NAME?" --yesno "Exit $PROGRAM_NAME?" --backtitle "$PROGRAM_NAME" --yes-button "Ok" --no-button "Back" --defaultno 9 55
			CHOICE=$?
			if (( $CHOICE == 0 )); then

				TARGETMENUID=-1

			fi

		fi

	}


	#/////////////////////////////////////////////////////////////////////////////////////
	# Main Loop
	#/////////////////////////////////////////////////////////////////////////////////////
	#Start Menu
	while (( $TARGETMENUID > -1 )); do

		#Clear Screen buffer
		clear

		if (( $TARGETMENUID == 0 )); then
			Menu_Main

		fi

	done

	#-----------------------------------------------------------------------------------
	exit
	#-----------------------------------------------------------------------------------
}