#!/bin/sh
#
# Script Name: xbmc_conf
# Description: Enable/Disable XBMC autostart via the fluxbox menu 
#              and manage the screen DPI via the fluxbox menu
# Author     : Konstantinos Mantzaris <kmanjaris@gmail.com>
# Web Site   : http://SlaXBMC.blogspot.com
#

xbmc_enable() {
   if [ "`grep '#~/.fluxbox/autostart.sh' $HOME/.fluxbox/startup`" != "" ] ; then 
      sed -i "s!#~/.fluxbox/autostart.sh!~/.fluxbox/autostart.sh!g" $HOME/.fluxbox/startup
      sed -i 's/\[exec\] (Enable XBMC Autostart)/#\[exec\] (Enable XBMC Autostart)/g' $HOME/.fluxbox/menu
      sed -i 's/#\[exec\] (Disable XBMC Autostart)/\[exec\] (Disable XBMC Autostart)/g' $HOME/.fluxbox/menu
      if [ "`grep '#pulseaudio --start' $HOME/.fluxbox/startup`" == "" ] ; then
         sed -i "s!pulseaudio --start!#pulseaudio --start!g" $HOME/.fluxbox/startup
      fi
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
   fi
}

xbmc_disable() {
   if [ "`grep '#~/.fluxbox/autostart.sh' $HOME/.fluxbox/startup`" == "" ] ; then
      sed -i "s!~/.fluxbox/autostart.sh!#~/.fluxbox/autostart.sh!g" $HOME/.fluxbox/startup
      sed -i 's/#\[exec\] (Enable XBMC Autostart)/\[exec\] (Enable XBMC Autostart)/g' $HOME/.fluxbox/menu
      sed -i 's/\[exec\] (Disable XBMC Autostart)/#\[exec\] (Disable XBMC Autostart)/g' $HOME/.fluxbox/menu
      if [ "`grep '#\[exec\]   (Enable PulseAudio)' $HOME/.fluxbox/menu`" != "" ] ; then
         sed -i "s!#pulseaudio --start!pulseaudio --start!g" $HOME/.fluxbox/startup
      fi
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
   fi
}

dpi_default() {
   if [ -f /usr/bin/startx ] ; then
      sed -i '/defaultserverargs=/c\defaultserverargs=""' /usr/bin/startx
      dpi_reset
      sed -i 's/\[exec\] (Set Default DPI)/#\[exec\] (Set Default DPI)/g' $HOME/.fluxbox/menu
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
      dpi_msg
   fi
}

dpi_96() {
   if [ -f /usr/bin/startx ] ; then
      sed -i '/defaultserverargs=/c\defaultserverargs=" -dpi 96"' /usr/bin/startx
      dpi_reset
      sed -i 's/\[exec\] (Set DPI to 96)/#\[exec\] (Set DPI to 96)/g' $HOME/.fluxbox/menu
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
      dpi_msg
   fi
}

dpi_100() {
   if [ -f /usr/bin/startx ] ; then
      sed -i '/defaultserverargs=/c\defaultserverargs=" -dpi 100"' /usr/bin/startx
      dpi_reset
      sed -i 's/\[exec\] (Set DPI to 100)/#\[exec\] (Set DPI to 100)/g' $HOME/.fluxbox/menu
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
      dpi_msg
   fi
}

dpi_120() {
   if [ -f /usr/bin/startx ] ; then
      sed -i '/defaultserverargs=/c\defaultserverargs=" -dpi 120"' /usr/bin/startx
      dpi_reset
      sed -i 's/\[exec\] (Set DPI to 120)/#\[exec\] (Set DPI to 120)/g' $HOME/.fluxbox/menu
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
      dpi_msg
   fi
}

dpi_150() {
   if [ -f /usr/bin/startx ] ; then
      sed -i '/defaultserverargs=/c\defaultserverargs=" -dpi 150"' /usr/bin/startx
      dpi_reset
      sed -i 's/\[exec\] (Set DPI to 150)/#\[exec\] (Set DPI to 150)/g' $HOME/.fluxbox/menu
      /usr/bin/fluxbox -reconfig 2>&1>/dev/null
      dpi_msg
   fi
}

dpi_reset() {
    sed -i 's/#\[exec\] (Set Default DPI)/\[exec\] (Set Default DPI)/g' $HOME/.fluxbox/menu
    sed -i 's/#\[exec\] (Set DPI to 96)/\[exec\] (Set DPI to 96)/g' $HOME/.fluxbox/menu
    sed -i 's/#\[exec\] (Set DPI to 100)/\[exec\] (Set DPI to 100)/g' $HOME/.fluxbox/menu
    sed -i 's/#\[exec\] (Set DPI to 120)/\[exec\] (Set DPI to 120)/g' $HOME/.fluxbox/menu
    sed -i 's/#\[exec\] (Set DPI to 150)/\[exec\] (Set DPI to 150)/g' $HOME/.fluxbox/menu
}

dpi_msg() {
    xterm -bg black -fg white -fa "Luxi Mono" -fs 16 -ls -e dialog --title "DPI Screen Settings" --msgbox "\nPlease restart the system for the changes to take effect"  8 50
}

case "$1" in
'enable')
  xbmc_enable
  ;;
'disable')
  xbmc_disable
  ;;
'dpiDefault')
  dpi_default
  ;;
'dpi96')
  dpi_96
  ;;
'dpi100')
  dpi_100
  ;;
'dpi120')
  dpi_120
  ;;
'dpi150')
  dpi_150
  ;;
*)
  echo "Usage: `basename $0` [enable|disable|dpiDefault|dpi96|dpi100|dpi120|dpi150]"
esac
