#!/bin/ash

error_exit() {
	if [ "$1" ]; then
		yad $YAD_STD_OPTS --title "FrugalPup-settings v${VER}" --width=220 --text-align=center \
			--text "${1}" \
			--button=gtk-ok:0
	fi
	"$EXE_DIR/frugalpup" &
	exit 1
}

EXE_DIR="$(dirname $(readlink -f ${0}))"
COMN_FN="$EXE_DIR/frugalpup-common"
[ -f "$COMN_FN" ] && . "$COMN_FN"

[ -f "$CONFIG_FN" ] && . "$CONFIG_FN"

[ "$showSAVE" = "yes" ] && SAVE_VAL='TRUE' || SAVE_VAL='FALSE'
[ "$showKERNEL" = "yes" ] && KERNEL_VAL='TRUE' || KERNEL_VAL='FALSE'
[ "$showPFIX" = "yes" ] && PFIX_VAL='TRUE' || PFIX_VAL='FALSE'

FRUGAL_VAL="$frugalPARMS"
MIN_VAL="$minPARMS"
[ "$MIN_VAL" ] || MIN_VAL="$stickPARMS"

DOC_CMD='defaultbrowser https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html'

VALS="$(yad $YAD_STD_OPTS --title "FrugalPup-settings v${VER}" --form --width=500 \
	--text="<big>Control the display of optional advanced dialogs:</big>

A checked box indicates that the dialog is enabled in <span foreground='purple'>FrugalPup</span>." \
	--field="Separate save partition:CHK" $SAVE_VAL \
	--field="Kenrel boot parameters:CHK" $KERNEL_VAL \
	--field="Pfix boot parameter:CHK" $PFIX_VAL \
	--field=":LBL" "" \
	--field="<big>Control which kernel boot parameters are used:</big>:LBL" "" \
	--field="<span foreground='blue'>Web page, documentation of available Kernel boot parameters</span>:FBTN" "$DOC_CMD" \
	--field="<span foreground='purple'>net.ifnames=0</span> causes the ethernet interface to still be <span foreground='purple'>eth0</span>.:LBL" "" \
	--field="Edit the list of kernel boot parameters to show in <span foreground='purple'>FrugalPup</span>.
If list is empty, the <span foreground='purple'>Kernel boot parameters</span> dialog is disabled.:LBL" "" \
	--field="" "$FRUGAL_VAL" \
	--field="Edit the minimalist list of kernel boot parameters,
these are always used by <span foreground='purple'>StickPup</span>, <span foreground='purple'>f2StickPup</span> and <span foreground='purple'>DiskPup</span>.:LBL" "" \
	--field="" "$MIN_VAL" )"
[ $? -eq 0 ] || error_exit
[ "$VALS" ] || error_exit "No values specified."

SAVE_VAL=''; KERNEL_VAL=''; PFIX_VAL=''; FRUGAL_VAL=''; MIN_VAL=''
[ "${VALS%%|*}" = "TRUE" ] && SAVE_VAL='yes'
VALS="${VALS#*|}"
[ "${VALS%%|*}" = "TRUE" ] && KERNEL_VAL='yes'
VALS="${VALS#*|}"
[ "${VALS%%|*}" = "TRUE" ] && PFIX_VAL='yes'
VALS="${VALS#*|}"
VALS="${VALS#*|}"
VALS="${VALS#*|}"
VALS="${VALS#*|}"
VALS="${VALS#*|}"
VALS="${VALS#*|}"
FRUGAL_VAL="${VALS%%|*}"
VALS="${VALS#*|}"
VALS="${VALS#*|}"
MIN_VAL="${VALS%%|*}"

SAVE_DONE=''; KERNEL_DONE=''; PFIX_DONE=''; FRUGAL_DONE=''; MIN_DONE=''
CONFIG_FN_NEW="${CONFIG_FN}.new.txt"
[ -f "$CONFIG_FN_NEW" ] && rm "$CONFIG_FN_NEW"
while IFS='' read ONE_LINE; do
	case $ONE_LINE in
		showSAVE*) echo "showSAVE='$SAVE_VAL'" >> "$CONFIG_FN_NEW"; SAVE_DONE='yes' ;;
		showKERNEL*) echo "showKERNEL='$KERNEL_VAL'" >> "$CONFIG_FN_NEW"; KERNEL_DONE='yes' ;;
		showPFIX*) echo "showPFIX='$PFIX_VAL'" >> "$CONFIG_FN_NEW"; PFIX_DONE='yes' ;;
		frugalPARMS*) echo "frugalPARMS='$FRUGAL_VAL'" >> "$CONFIG_FN_NEW"; FRUGAL_DONE='yes' ;;
		minPARMS*) echo "minPARMS='$MIN_VAL'" >> "$CONFIG_FN_NEW"; MIN_DONE='yes' ;;
		stickPARMS*) echo "minPARMS='$MIN_VAL'" >> "$CONFIG_FN_NEW"; MIN_DONE='yes' ;;
		*) echo "$ONE_LINE" >> "$CONFIG_FN_NEW" ;;
	esac
done < "$CONFIG_FN"

[ "$SAVE_DONE" ] || echo "showSAVE='$SAVE_VAL'" >> "$CONFIG_FN_NEW"
[ "$KERNEL_DONE" ] || echo "showKERNEL='$KERNEL_VAL'" >> "$CONFIG_FN_NEW"
[ "$PFIX_DONE" ] || echo "showPFIX='$PFIX_VAL'" >> "$CONFIG_FN_NEW"
[ "$FRUGAL_DONE" ] || echo "frugalPARMS='$FRUGAL_VAL'" >> "$CONFIG_FN_NEW"
[ "$MIN_DONE" ] || echo "minPARMS='$MIN_VAL'" >> "$CONFIG_FN_NEW"

mv -f "$CONFIG_FN_NEW" "$CONFIG_FN"

"$EXE_DIR/frugalpup" &

exit
