#!/bin/sh
# rcrsn51 2013-07-14

export TEXTDOMAIN=peasymp3
export OUTPUT_CHARSET=UTF-8

#. gettext.sh   #old Puppies don't have this

eval_gettext () {
  local myMESSAGE=$(gettext "$1")
  eval echo -n \"$myMESSAGE\"
}
export -f eval_gettext

MAKELIST () {
  DEFAULT=$1
  LIST="<item>$DEFAULT</item>"
  shift
  for I in $@; do
    [ $I != $DEFAULT ] && LIST=$LIST"<item>$I</item>"
  done
  echo -n $LIST
}

SAVE_SETTINGS () {
  echo $DRIVE > $SETFILE
  Xdialog --title " " --msgbox "$(eval_gettext 'Settings saved in $SETFILE')" 0 0
}
export -f SAVE_SETTINGS

PLAY () {
  cddetect_quick -d $DRIVE >/dev/null 2>&1
  if [ $? -ne 0 ]; then
    Xdialog --title " " --msgbox "$(eval_gettext 'No CD detected in $DRIVE')" 0 0
    exit
  fi
  rm -rf $TMPFOLDER
  mkdir $TMPFOLDER
  Xdialog --title " " --msgbox "$(gettext 'Building playlist ...')" 0 0 &
  MSGPID=$!
  if [ $CDDB = "true" ]; then
    I=0 
    cdda2wav -N -L 1 -t 0 -D $DRIVE  2>&1 | grep Track | tr -d  "\'\"<>|/" | cut -d : -f 2- | while read T; do echo -D $DRIVE -t $((++I))+$I > $TMPFOLDER/$(printf "%2.2d" $I)-"$T".cd; done
  else
    TRACKS=$(cdda2wav -N -t 0 -D $DRIVE  2>&1 | grep "total tracks" | cut -d ":" -f 3 | cut -d "," -f 1)
    for I in $(seq 1 $TRACKS); do
      echo -D $DRIVE -t $I+$I > $TMPFOLDER/$(printf "%2.2d" $I)-Track.cd; 
    done 
  fi  
  kill $MSGPID
  case $1 in
    1) peasymp3 $TMPFOLDER & ;;
    2) peasymp3autoplay $TMPFOLDER & ;;
  esac
}
export -f PLAY

EJECT () {
  eject $DRIVE
}
export -f EJECT

############ End of Functions ##############

# check if currently running
if [ -n "$(pidof peasymp3)" ]; then
  Xdialog --title " " --msgbox "$(gettext 'PeasyMP3 is already running!')" 0 0
  exit
fi

export TMPFOLDER="/tmp/peasycdtmp"

export SETFILE=$HOME/.peasycdplayer
[ ! -f $SETFILE ] && echo "/dev/sr0" > $SETFILE

read DEF_DRIVE < $SETFILE
[ -z "$DEF_DRIVE" ] && DEF_DRIVE=\"\"

export PROG1="
<window title=\"Peasy CD Player v1.3\">
<vbox>
  <frame $(gettext 'Audio CD Drive')>
    <hbox>
      <combobox>
        <variable>DRIVE</variable>
        $(MAKELIST $DEF_DRIVE /dev/sr0 /dev/sr1 /dev/sr2)
      </combobox>
      <button>
        <label>$(gettext 'Save')</label>
        <action>SAVE_SETTINGS &</action>
      </button>
    </hbox>
  </frame>  
  <hbox>
    <checkbox>
      <label>$(gettext 'Titles')</label>
      <variable>CDDB</variable>
      <default>false</default>
    </checkbox>
    <text><label>\"     \"</label></text>
    <button>
      <label>$(gettext 'Eject')</label>
      <action>EJECT</action>
    </button>
    <button>
      <label>$(gettext 'Auto')</label>
      <action>PLAY 2 &</action>
      <action>Exit:exit</action>
    </button>
    <button>
      <label>$(gettext 'Play')</label>
      <action>PLAY 1 &</action>
    </button>
    <button><label>$(gettext 'Quit')</label></button>
  </hbox>
</vbox>
</window>
"

gtkdialog3 -c --program PROG1
