/*
 * MP3/MPlayer plugin to VDR (C++)
 *
 * (C) 2001,2002 Stefan Huelswitt <huels@iname.com>
 *
 * This code 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 2
 * of the License, or (at your option) any later version.
 *
 * This code 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 this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
 */

#include <vdr/player.h>
#include <vdr/status.h>
#include <vdr/font.h>
#include <vdr/i18n.h>
#include <vdr/plugin.h>
#ifdef HAVE_BEAUTYPATCH
#include <vdr/fontsym.h>
#endif

#include "menu.h"
#include "menu-mplayer.h"
//#include "i18n.h"
//#include "sender.h"
#include "control.h"

cFileSources MPlaySources;

// --- cMenuMPlayBrowse ---------------------------------------------------------

cMenuMPlayBrowse::cMenuMPlayBrowse(void)
:cMenuBrowse(MPlaySources.GetSource(),false,false,tr("MPlayer browser"))
{
  sourcing=false;
  SetButtons();
}

void cMenuMPlayBrowse::SetButtons(void)
{
  SetHelp(tr("Play"), currentdir?tr("Parent"):0, tr("Source"), 0);
  Display();
}

eOSState cMenuMPlayBrowse::Source(bool second)
{
  if(HasSubMenu()) return osContinue;

  if(!second) {
    sourcing=true;
    return AddSubMenu(new cMenuSource(&MPlaySources,tr("MPlayer source")));
    }
  sourcing=false;
  cFileSource *src=cMenuSource::GetSelected();
  if(src) {
    MPlaySources.SetSource(src);
    SetSource(src);
    NewDir(0);
    }
  return osContinue;
}

eOSState cMenuMPlayBrowse::ProcessKey(eKeys Key)
{
  eOSState state=cMenuBrowse::ProcessKey(Key);

  if(!HasSubMenu() && state==osContinue) { // eval the return value from submenus
    if(sourcing) return Source(true);
    }

  if(state==osBack && lastselect) {
    char *name=lastselect->Path();
    char *full=source->BuildName(name);
		
		cControl::Launch(new cClusterControl(full));

    free(full); free(name);
    return osEnd;
    }

  if(state==osUnknown && Key==kYellow) return Source(false);
  return state;
}
