⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 video disk recorder - linux
💻 C
字号:
/* * menu.c: A menu for still pictures * * See the README file for copyright information and how to reach the author. * * $Id: menu.c 1.1 2008/01/13 11:35:18 kls Exp $ */#include "menu.h"#include <vdr/tools.h>#include "entry.h"#include "player.h"char PictureDirectory[PATH_MAX] = "";static bool PathStartsWith(const char *Path, const char *Name){  if (Path && Name) {     while (*Name) {           if (*Path++ != *Name++)              return false;           }     if (*Path && *Path != '/')        return false;     return true;     }  return false;}static const char *NextLevel(const char *Path){  if (Path) {     const char *p = strchr(Path, '/');     return p ? p + 1 : NULL;     }  return Path;}cPictureEntry *cPictureMenu::pictures = NULL;cPictureMenu::cPictureMenu(const cPictureEntry *PictureEntry, const char *Path):cOsdMenu(tr("Pictures")){  pictureEntry = PictureEntry;  if (!pictureEntry)     pictureEntry = pictures = new cPictureEntry(PictureDirectory, NULL, true);  if (pictureEntry->Parent()) {     if (!pictureEntry->Parent()->Parent())        SetTitle(pictureEntry->Name()); // Year     else        SetTitle(cString::sprintf("%s: %s", pictureEntry->Parent()->Name(), *HandleUnderscores(pictureEntry->Name()))); // Year/Description     }  Set(Path);}cPictureMenu::~cPictureMenu(){  if (pictures && pictureEntry && !pictureEntry->Parent())     DELETENULL(pictures);}void cPictureMenu::Set(const char *Path){  Clear();  const cList<cPictureEntry> *l = pictureEntry->Entries();  if (l) {     for (const cPictureEntry *e = l->First(); e; e = l->Next(e)) {         cString Name = HandleUnderscores(e->Name());         if (!e->IsDirectory())            Name.Truncate(-4); // don't display the ".mpg" extension         Add(new cOsdItem(HandleUnderscores(Name)), PathStartsWith(Path, e->Name()));         }     }  SetHelp(Count() ? trVDR("Button$Play") : NULL, NULL, NULL, cPictureControl::Active() ? trVDR("Button$Stop") : NULL);  if (Current() >= 0) {     const char *p = NextLevel(Path);     if (p)        SelectItem(p);     }}eOSState cPictureMenu::SelectItem(const char *Path, bool SlideShow){  cOsdItem *Item = Get(Current());  if (Item) {     const cList<cPictureEntry> *l = pictureEntry->Entries();     if (l) {        cPictureEntry *pe = l->Get(Current());        if (pe) {           if (SlideShow) {              cControl::Launch(new cPictureControl(pictures, pe, true));              pictures = NULL; // cPictureControl takes ownership              return osEnd;              }           if (pe->IsDirectory())              return AddSubMenu(new cPictureMenu(pe, Path));           else if (!Path) {              cControl::Launch(new cPictureControl(pictures, pe));              pictures = NULL; // cPictureControl takes ownership              return osEnd;              }           }        }     }  return osContinue;}eOSState cPictureMenu::ProcessKey(eKeys Key){  eOSState state = cOsdMenu::ProcessKey(Key);  if (state == osUnknown) {     switch (Key) {       case kRed:       case kPlay:   return SelectItem(NULL, true);       case kBlue:       case kStop:   if (cPictureControl::Active())                        return osStopReplay;                     break;       case kOk:     return SelectItem();       default:      break;       }     }  return state;}cPictureMenu *cPictureMenu::CreatePictureMenu(void){  return new cPictureMenu(NULL, cPictureControl::LastDisplayed());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -