//
// C++ Interface: commands-plugins
//
// Description: 
//
//
// Author: Holger Brunn <holger.brunn@stud.uni-karlsruhe.de>, (C) 2006
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef ROASTER_COMMANDS_PLUGINS_H
#define ROASTER_COMMANDS_PLUGINS_H

#include <vdr/tools.h>
#include "commands.h"

/**
	@author Holger Brunn <holger.brunn@stud.uni-karlsruhe.de>
*/
class cRoasterCommandAnyPlugin : public cRoasterCommand
{
  protected:
    cString Extensions;
    cString ServiceID;
    bool ServiceAvailable;
  public:
    cRoasterCommandAnyPlugin(const char* Name);
    bool Matches(const char* Filename);
    bool Execute(cOsdMenu* Menu, char* DestinationFile, char* CurrentFile);
};

struct MPlayerServiceData {
  int result;
  union {
    const char *filename;
  } data;
};

class cRoasterCommandMPlayerPlugin : public cRoasterCommandAnyPlugin
{
  public:
    cRoasterCommandMPlayerPlugin();
    bool Execute(cOsdMenu* Menu, char* DestinationFile, char* CurrentFile);
    bool Matches(const char* Filename);
};

struct MP3ServiceData {
  int result;
  union {
    const char *filename;
  } data;
};

class cRoasterCommandMP3Plugin : public cRoasterCommandAnyPlugin
{
  public:
    cRoasterCommandMP3Plugin();
    bool Execute(cOsdMenu* Menu, char* DestinationFile, char* CurrentFile);
    bool Matches(const char* Filename);
};

class cRoasterCommandImagePlugin : public cRoasterCommandAnyPlugin
{
  public:
    cRoasterCommandImagePlugin();
};

#endif
