#!/bin/bash
#
#Copyright 2012 - 2018 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/>

# Shows the dialog in which users can enter the new password
function showLoadingServiceDlg() {
	wrapTxtFn "$(_ services.loading)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showServiceConfirmationDlg() {
	wrapTxtFn "$(_ services.delete.confirm)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showConfirmDlg "$ALIGNEDTXT" $HEIGHT;
}

function showServiceDeletedDlg() {
	wrapTxtFn "$(_ services.delete.success)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showMsgDlg "$ALIGNEDTXT" $HEIGHT;
}

function showServiceInsertedDlg() {
	wrapTxtFn "$(_ services.inserted)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showMsgDlg "$ALIGNEDTXT" $HEIGHT;
}

function showServiceUpdatedDlg() {
	wrapTxtFn "$(_ services.updated)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showMsgDlg "$ALIGNEDTXT" $HEIGHT;
}

function showRestartServiceDlg() {
	wrapTxtFn "$(_ services.restarting)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showServiceNotExistsDlg() {
	wrapTxtFn "$(_ services.not_exists)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showMsgDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showFailedToRestartDlg() {
	wrapTxtFn "$(_ services.restart_failed)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showStartServiceDlg() {
	wrapTxtFn "$(_ services.starting)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showFailedToStartDlg() {
	wrapTxtFn "$(_ services.start_failed)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showStopServiceDlg() {
	wrapTxtFn "$(_ services.stopping)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showFailedToStopDlg() {
	wrapTxtFn "$(_ services.stop_failed)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showDisableAutoStartServiceDlg() {
	wrapTxtFn "$(_ services.autostart.disabling)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showFailedToDisableAutoStartDlg() {
	wrapTxtFn "$(_ services.autostart.disable_failed)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showEnableAutoStartServiceDlg() {
	wrapTxtFn "$(_ services.autostart.enabling)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showFailedToEnableAutoStartDlg() {
	wrapTxtFn "$(_ services.autostart.enable_failed)" $(($DEFAULTWIDTH-4))
	centerTxtFn "$WRAPPEDTXT" $(($DEFAULTWIDTH-4))
	valignTxtFn "$CENTEREDTXT"
	showInfoDlg "$ALIGNEDTXT" $HEIGHT
	return $?;
}

function showServicesListDlg() {
	MENU=()
	I=1
	AT=$_OFF;
	RUNNING=$_NO
	X=3;
	for s in $(printf "%s\n" ${!SERVICES[@]} | sort ); do
		if getServiceAutoStartStatusFn $s; then
			AT="\Z2"$(_ dialog.yes);
		else
			AT="\Z1"$(_ dialog.no);
		fi
		if getServiceRunningStatusFn $s; then
			RUNNING="\Z2"$(_ dialog.yes);
		else
			RUNNING="\Z1"$(_ dialog.no);
		fi
		if [ ${#SERVICES} -gt $X ]; then
			X=${#SERVICES}
		fi
		MENU+=($I,"\Zn"$s","$AT","$RUNNING);
		I=$(($I+1))
	done
	MENU+=($I,"\Zn...,\Zn...,\Zn...");
	createTableFn "menu" \
        "#;\Zb"$(_ services.label.service)";\Zb"$(_ services.label.autostart)";\Zb"$(_ services.label.running)\
        "${MENU[@]}";
	
	
	HEIGHT=$((${#MENU[@]}+8));
	if [ $HEIGHT -gt 15 ]; then
		HEIGHT=15;
	fi
	centerTxtFn "$HEADER" $(($DEFAULTWIDTH+11));
	showMenuDlg "$CENTEREDTXT" "$ROWS" ${#MENU[@]} $((${#MENU[@]}+8))
#$HEIGHT
}

function showServiceManageDlg() {
        
	MENU=()
	TBLCOLUMNCENTER=0;
	if getServiceAutoStartStatusFn $NAME; then
		MENU+=("1,\Z1"$(_ services.label.autostart));
	else
		MENU+=("1,\Z2"$(_ services.label.autostart));
	fi
	MENU+=("2,\Zn"$(_ services.label.start_restart));
	MENU+=("3,\Zn"$(_ services.label.stop));
	MENU+=("4,\Zn"$(_ services.label.edit));
	MENU+=("5,\Zn"$(_ services.label.delete));
	createTableFn "menu"\
	"#;\Zb"$(_ services.label.action)\
	"${MENU[@]}";
	
	TBLCOLUMNCENTER=1;
	centerTxtFn "$HEADER" $(($DEFAULTWIDTH+11));
	showMenuDlg "$CENTEREDTXT" "$ROWS" ${#MENU[@]} 11
}

function showServiceEditDlg() {
	DAEMONS=${SERVICES[$1]}
	NAME=$1
	DAEMONS=${DAEMONS//,/ }
	a=${ISALIAS[$1]}; [ -z "$a" ] || DAEMONS="$DAEMONS:$a"
	ELEMENTS=()
	ELEMENTS+=("1,3,$(_ services.label.service),$NAME,16,20,19,0");
	ELEMENTS+=("2,3,$(_ services.label.daemons),$DAEMONS,16,20,19,0");
	
	showInputFormDlg "" 8;
}

function showServiceInsertDlg() {
	IFS=" ";
	DATA=($1)
	IFS=$ORIGINALIFS;

	ELEMENTS=();
	ELEMENTS+=("1,3,$(_ services.label.service),,16,20,19,0");
	ELEMENTS+=("2,3,$(_ services.label.daemons),,16,20,19,0");
	
	showInputFormDlg "" 8;
} 