示例#1
0
文件: commands.c 项目: suborb/reelvdr
cCMDMenu::cCMDMenu(cMainMenuItem *item, cMainMenu *osdobject)
  : cOsdMenu(tr("Commands"))
{
  iItem = item;
  OsdObject = osdobject;
  cOsdItem *mItem = NULL;

  SetHasHotkeys();

  if (iItem)
     MYDEBUG ("cMainMenu  FileName %s ItemType %d ", iItem->FileName(), iItem->Type());
  else
     MYDEBUG ("cMainMenu  no valid Item");

  //Add(new cOsdItem(hk(tr("Directory management"))));

  Add(new cOsdItem(hk(tr("Burn image"))));
  if(!iItem || (iItem && iItem->Type() != iDVD))
  {
	  mItem = Last();
	  mItem->SetSelectable(false);
  }

  Add(new cOsdItem(hk(tr("Rename image"))));
  if(!iItem || (iItem && iItem->Type() != iDVD))
  {
    mItem = Last();
    mItem->SetSelectable(false);
  }

  Add(new cOsdItem(hk(tr("Open DVD-tray"))));
#ifdef RBLITE
  Add(new cOsdItem(hk(tr("Close DVD-tray"))));
#endif
  /*Add(new cOsdItem(tr("Play")));
  if(!iItem
     || (iItem && iItem->Type() != iDVD && iItem->Type() != iDevice && iItem->Type()
         != iDataBase))
  {
    mItem = Last();
    mItem->SetSelectable(false);
  }
  */

  Add(new cOsdItem(hk(tr("Delete cache"))));
  Add(new cOsdItem(hk(tr("Format DVD-RW"))));

 /* Add(new cOsdItem(tr("Move image")));
  if(!iItem || (iItem && iItem->Type() != iDVD))
  {
    mItem = Last();
    mItem->SetSelectable(false);
  }
*/
/*
  Add(new cOsdItem(tr("Delete Image")));
  if(!iItem || (iItem && iItem->Type() != iDVD))
  {
    mItem = Last();
    mItem->SetSelectable(false);
  }
  Add(new cOsdItem(tr("Burn Image")));
  if(!iItem || (iItem && iItem->Type() != iDVD))
  {
    mItem = Last();
    mItem->SetSelectable(false);
  }
  Add(new cOsdItem(tr("Read DVD")));
*/
  Display();
}
示例#2
0
void cMenuFavouritesFunction::Set()
{
    Clear();
    SetHasHotkeys();
/*
    cString note_text = cString::sprintf("%s '%s', %s",
                                         channel && channel->GroupSep() ?  tr("For folder") : tr("For channel"),
                                         channel?channel->Name():"undefined",
                                         tr("please choose one of the following options")
                                         );
*/
    cString note_text;
    if (channel && channel->GroupSep())
        note_text = cString::sprintf(tr("For folder '%s' please choose one of the following options:"),
                                         channel ? channel->Name() : "undefined"
                                         );
    else
        note_text = cString::sprintf(tr("For channel '%s' please choose one of the following options:"),
                                         channel ? channel->Name() : "undefined"
                                         );

    AddFloatingText(*note_text, 45);
    Add(new cOsdItem("",osUnknown, false)); // blank line
    // Add(new cOsdItem("",osUnknown, false)); // blank line

    //Add(new cOsdItem(hk(tr("Create new favourites folder"))));
    //Add(new cOsdItem(hk(tr("Move selected favourites"))));
    if (channel) {
        cString  tmp;
        if (channel->GroupSep()) {
            // selected is a fav. folder/bouquet
            //tmp = cString::sprintf("%s: '%s'", tr("Rename folder"), channel->Name());
            tmp = tr("Rename folder");
            Add(new cOsdItem(hk(*tmp)));

            //tmp = cString::sprintf("%s: '%s'", tr("Delete folder"), channel->Name());
            tmp = tr("Delete folder");
            Add(new cOsdItem(hk(*tmp)));

            //tmp = cString::sprintf("%s: '%s'", tr("Move folder"), channel->Name());
            tmp = tr("Move folder");
            Add(new cOsdItem(hk(*tmp)));

            //tmp = cString::sprintf("%s: '%s'", tr("CI-slot assignment for folder"),
            //                        channel->Name());
            tmp = tr("CI-slot assignment for folder");
            Add(new cOsdItem(hk(*tmp)));
        }
        else {
            // selected is a channel
            //tmp = cString::sprintf("%s: '%s'", tr("Move channel"), channel->Name());
            tmp = tr("Move channel");
            Add(new cOsdItem(hk(*tmp)));

            //tmp = cString::sprintf("%s: '%s'", tr("Delete channel"), channel->Name());
            tmp = tr("Delete channel");
            Add(new cOsdItem(hk(*tmp)));

            //tmp = cString::sprintf("%s: '%s'", tr("CI-slot assignment for channel"),
            //                       channel->Name());
            tmp = tr("CI-slot assignment for channel");
            Add(new cOsdItem(hk(*tmp)));
        }
    } // if

    Display();
}
示例#3
0
cMMInputMenu::cMMInputMenu(void):
		cOsdMenu(tr("Streaming Control")) {
	SetHasHotkeys();
	Add(new cOsdItem(hk(tr("Synchronize EPG")),   (eOSState)subSyncEPG));
}
示例#4
0
myMenuCommands::myMenuCommands(const char *_Title,cList<cNestedItem> *_Commands,const char *Parameters):cOsdMenu(_Title)
#else
myMenuCommands::myMenuCommands(const char *_Title,cCommands *_Commands, const char *Parameters):cOsdMenu(_Title)
#endif
{
 SetHasHotkeys();
 commands=_Commands;
#if VDRVERSNUM > 10713
 result=NULL;
 parameters=Parameters;
 for(cNestedItem *Command=commands->First();Command;Command=commands->Next(Command)) {
  const char *s=Command->Text();
  if(Command->SubItems())
   Add(new cOsdItem(hk(cString::sprintf("%s...", s))));
  else if(Parse(s))
   Add(new cOsdItem(hk(title)));
 }
#else
 parameters=Parameters?strdup(Parameters):NULL;
 for(cCommand *command=commands->First();command;command=commands->Next(command))
  Add(new cOsdItem(hk(command->Title())));
#endif
}

myMenuCommands::~myMenuCommands()
{
#if VDRVERSNUM > 10713
 free(result);
#else
 free(parameters);
#endif
}

#if VDRVERSNUM > 10713
bool myMenuCommands::Parse(const char *s)
{
 const char *p=strchr(s,':');
 if(p) {
  int l=p-s;
  if(l>0) {
   char t[l+1];
   stripspace(strn0cpy(t,s,l+1));
   l=strlen(t);
   if(l>1&&t[l-1]=='?') {
    t[l-1]=0;
    confirm=true;
   }
   else
    confirm=false;
   title=t;
   command=skipspace(p+1);
   return true;
  }
 }
 return false;
}
#endif

#if VDRVERSNUM > 10713
eOSState myMenuCommands::Execute()
{
 cNestedItem *Command=commands->Get(Current());
 if(Command) {
  if(Command->SubItems())
   return AddSubMenu(new myMenuCommands(Title(),Command->SubItems(),parameters));
  if(Parse(Command->Text())) {
   if(!confirm||Interface->Confirm(cString::sprintf("%s?",*title))) {
    Skins.Message(mtStatus,cString::sprintf("%s...",*title));
    free(result);
    result=NULL;
    cString cmdbuf;
    if(!isempty(parameters))
     cmdbuf=cString::sprintf("%s %s",*command,*parameters);
    const char *cmd=*cmdbuf?*cmdbuf:*command;
    dsyslog("executing command '%s'",cmd);
    cPipe p;
    if(p.Open(cmd,"r")) {
     int l=0;
     int c;
     while((c=fgetc(p))!=EOF) {
      if(l%20==0)
       result=(char *)realloc(result,l+21);
      result[l++]=char(c);
     }
     if(result)
      result[l]=0;
     p.Close();
    }
    else
     esyslog("ERROR: can't open pipe for command '%s'",cmd);
    Skins.Message(mtStatus,NULL);
    if(result)
     return AddSubMenu(new cMenuText(title,result,fontFix));
    return osEnd;
   }
  }
 }
 return osContinue;
}
#else
eOSState myMenuCommands::Execute()
{
 cCommand *command=commands->Get(Current());
 if(command)
 {
  char *buffer=NULL;
  bool confirmed=false;
#ifdef CMDSUBMENUVERSNUM
  if (command->hasChilds())
  {
   AddSubMenu(new myMenuCommands(command->Title(), command->getChilds(), parameters));
   return osContinue;
  }
#endif
  if(command->Confirm())
  {
   if(asprintf(&buffer,"%s?",command->Title())!=-1)
   {
    confirmed=Interface->Confirm(buffer);
    free(buffer);
   }
  } else {
    confirmed=true;
  }
  if(confirmed)
  {
   if(asprintf(&buffer, "%s...",command->Title())!=-1)
   {
    Skins.Message(mtStatus,buffer);
    free(buffer);
   }
   const char *Result=command->Execute(parameters);
   Skins.Message(mtStatus,NULL);
   if(Result)
    return AddSubMenu(new cMenuText(command->Title(),Result,fontFix));
   return osEnd;
  }
 }
 return osContinue;
}
#endif

eOSState myMenuCommands::ProcessKey(eKeys Key)
{
 eOSState state=cOsdMenu::ProcessKey(Key);

 if(state==osUnknown)
 {
  switch(Key)
  {
   case kRed:
   case kGreen:
   case kYellow:
   case kBlue: return osContinue;
   case kOk: return Execute();
   default: break;
  }
 }
 return state;
}