#!/bin/sh
# rcrsn51 2013-06-15

export TEXTDOMAIN=peasymp3
export OUTPUT_CHARSET=UTF-8

export PIDFILE="/tmp/carousel.pid"  	#for Stop
export PIDFILE2="/tmp/carousel.pid2"	#for Pause

DOPLAY () {
  while [ 1 ]; do 
    for DISC in "$A" "$B" "$C" "$D" "$E" "$F"; do
      [ -d "$DISC" ] && peasymp3 "$DISC" -b
    done
  done
}
export -f DOPLAY

PLAY () {
  [ -f $PIDFILE ] && exit
  DOPLAY &
  echo $! > $PIDFILE
}
export -f PLAY

PAUSE () {
  PID=$(pidof aplay)
  [ -z "$PID" ] && PID=$(pidof ffplay| awk '{print $NF}')
  if [ -n "$PID" ]; then
    kill -STOP $PID
    echo $PID > $PIDFILE2
  fi
}
export -f PAUSE

RESUME () {
  if [ -f $PIDFILE2 ]; then
    kill -CONT $(cat $PIDFILE2) 2>/dev/null
    rm $PIDFILE2
  fi
}
export -f RESUME

NEXTTRACK () {		#skip a track
  RESUME
  killall lame aplay ffplay timidity
}
export -f NEXTTRACK

NEXTDISC () {		#skip a disc
  RESUME
  killall peasymp3 lame aplay ffplay timidity
}
export -f NEXTDISC

##########################

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

export PROG1="
<window title=\"PeasyMP3 Carousel\">
<vbox>
  <frame $(gettext 'Load up to six media folders       ')>
    <hbox>
      <entry accept=\"directory\">
         <variable>A</variable>
       </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <action type=\"fileselect\">A</action>
      </button>
    </hbox>
    <hbox>
      <entry accept=\"directory\">
         <variable>B</variable>
       </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <action type=\"fileselect\">B</action>
      </button>
    </hbox>
    <hbox>
      <entry accept=\"directory\">
         <variable>C</variable>
      </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <action type=\"fileselect\">C</action>
      </button>
    </hbox>
    <hbox>
      <entry accept=\"directory\">
         <variable>D</variable>
      </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <action type=\"fileselect\">D</action>
      </button>
    </hbox>
    <hbox>
      <entry accept=\"directory\">
         <variable>E</variable>
       </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <action type=\"fileselect\">E</action>
      </button>
    </hbox>
    <hbox>
      <entry accept=\"directory\">
         <variable>F</variable>
       </entry>
      <button>
        <input file stock=\"gtk-open\"></input>
        <action type=\"fileselect\">F</action>
      </button>
    </hbox>
  </frame>
  <hbox>
    <button>
      <label>$(gettext 'Play')</label>
    </button>
    <button>
      <label>$(gettext 'Cancel')</label>
    </button>
  </hbox>
 </vbox>
</window>
"

export PROG2="
<window title=\"PeasyMP3 Carousel\">
<vbox>
  <hbox>
    <button>
      <label>$(gettext 'Pause')</label>
      <action>PAUSE</action>
    </button>
    <button>
      <label>$(gettext 'Resume')</label>
      <action>RESUME</action>
    </button>
    <button>
      <label>$(gettext 'Next Track')</label>
      <action>NEXTTRACK</action>
    </button>
    <button>
      <label>$(gettext 'Next Disc')</label>
      <action>NEXTDISC</action>
    </button>
    <button>
      <label>$(gettext 'Volume')</label>
      <action>rxvt -e alsamixer &</action>
    </button>
    <button>
      <label>$(gettext 'Quit')</label>
    </button>
  </hbox>
 </vbox>
</window>
"

I=$IFS; IFS=""
for STATEMENTS in  $(gtkdialog3 --program PROG1); do
  eval $STATEMENTS
done
IFS=$I

[ "$EXIT" = "$(gettext 'Cancel')" -o "$EXIT" = "abort" ] && exit

rm -f $PIDFILE $PIDFILE2
export A B C D E F
PLAY
gtkdialog3 --program PROG2

RESUME
kill $(cat $PIDFILE)
rm $PIDFILE
killall peasymp3 lame aplay ffplay timidity
