#! /bin/sh
# ADIS map handling

MAPCMD=map_coord
MAPCFG=mapsconf.ads
K_WIN="Карта"

RGM=$1

if [ ! -f $MAPCFG ] || [ ! $1 ]; then
# Nothing to do
	MAPCMD=
elif [ $RGM = 0 ]; then
# Close map
	wmctrl -c $K_WIN
	MAPCMD=
elif [ $RGM = -1 ]; then
# Auto clean map
	VIEW=
elif [ $RGM = -2 ]; then
# User clean map
	VIEW=
elif [ $RGM = -3 ]; then
# Hide map
	wmctrl -r $K_WIN -b add,hidden
	MAPCMD=
else
# Show on map
	VIEW=`echo "$2" | sed 's/ /%20/g'`
fi

while [ $MAPCMD ]; do
	ps -C $MAPCMD &> /dev/null
	if [ $? = 0 ]; then
		if [ ! $VIEW ] && [ $RGM = -1 ]; then
			ps -C win_focus &> /dev/null
			if [ $? != 0 ] ; then
			# This is full screen map. Auto cleaner does not run
				break;
			fi
		fi
		wmctrl -R $K_WIN
		dbus-send --session --dest=org.adis.map_coord --type=method_call\
		/ local.map_coord.adis_map_dbus.change_view string:$VIEW
		break
	fi
	. win_format
	if [ ! $X_KARTA ] && [ ! $VIEW ]; then
		break
	fi
	HOST=`cat $MAPCFG | cut -d/ -f3`
	HOST=`echo $HOST | cut -d: -f1`
	ping -c1 -W2 $HOST &> /dev/null
	if [ $? != 0 ]; then
		break
	fi

	# Start map
	$MAPCMD &> /dev/null &
	sleep 3
	if [ -z $H_KARTA ]; then
		wmctrl -r $K_WIN -b add,maximized_vert
	fi
	if [ $X_KARTA ]; then
		wmctrl -r $K_WIN -b remove,maximized_horz
		if [ -z $H_KARTA ]; then
			wmctrl -r $K_WIN -e "0,$X_KARTA,-1,$W_KARTA,-1"
		else
			wmctrl -r $K_WIN -e "0,$X_KARTA,0,$W_KARTA,$H_KARTA"
		fi
	else
		wmctrl -r $K_WIN -b add,maximized_horz
		killall win_focus &> /dev/null
	fi
	if [ $VIEW ]; then
		dbus-send --session --dest=org.adis.map_coord --type=method_call\
		/ local.map_coord.adis_map_dbus.change_view string:$VIEW
	fi
	break
done
