#!/bin/bash
#
#Copyright 2012 - 2017 CurlyMo, mk01 & mkreisl <development@xbian.org>
#
#This file is part of XBian - XBMC on the Raspberry Pi.
# 
#XBian is free software: you can redistribute it and/or modify it under the
#terms of the GNU General Public License as published by the Free Software
#Foundation, either version 3 of the License, or (at your option) any later
#version.
#
#XBian is distributed in the hope that it will be useful, but WITHOUT ANY
#WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
#FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
#details.
#
#You should have received a copy of the GNU General Public License along
#with XBian. If not, see <http://www.gnu.org/licenses/>

#|------------------------------------|
#|          Global variables          |
#|------------------------------------|

# The arguments this module accepts
ARGUMENTS=(list select update);
VIDEOFLAGS=("hdmi_force_hotplug" "hdmi_ignore_hotplug" "hdmi_ignore_cec_init" "hdmi_ignore_cec" "disable_overscan" "disable_splash");
declare -A VIDEOSETTINGS;

#|------------------------------------|
#|          Include files             |
#|------------------------------------|

source $BASEPATH/modules/videoflags/functions
if [ $GUIMODE -eq 1 ]; then
	source $BASEPATH/modules/videoflags/dialogs
fi
source $BASEPATH/functions/config

#|------------------------------------|
#|           Main program             |
#|------------------------------------|

# Executes the GUI version of this module
function showGUIFn() {
	getVideoFlagsFn;
	showVideoFlagsDlg;
	if [ $? -eq 0 ]; then
		updateVideoFlagsFn "$RETURN"
		if [ $? -eq 0 ]; then
			showVideoFlagsSuccessDlg;
		else
			showErrorDlg;
		fi
	fi
}

# Executes the command line version of this module
#  $1 Argument [String]
#  $2 Password [String]
# Returns
#  *Update [Integer]
#  - 1: Success
#  - 0: Failed
function showCMDFn() {
	case $1 in
		list)
			for FLAG in ${VIDEOFLAGS[@]}; do
				echo "$FLAG";
			done;
		;;
		select)
			if [ $# -eq 2 ]; then
				if [ $(printf "%s\n" ${VIDEOFLAGS[@]} | grep -c -o "$2") -gt 0 ]; then
					getVideoFlagsFn;
					echo ${VIDEOSETTINGS["|$2|"]};
				else
					echo 0;
				fi
			else
				echo 0;
			fi
		;;
		update)
			if [ $# -eq 3 ]; then
				if [ $(printf "%s\n" ${VIDEOFLAGS[@]} | grep -c -o "$2") -gt 0 ]; then
					if [[ $3 =~ ^[01] ]]; then
						updateConfigVarFn "$2" "$3";
						selectConfigVarFn "$2"
						if [[ "$RETURN" =~ "=$3" ]]; then
							echo 1;
							askForRebootFn;
						else
							echo 0;
						fi
					else
						echo 0;
					fi
				else
					echo 0;
				fi
			else
				echo 0;
			fi
		;;		
	esac;
}
