/* * Image plugin to VDR (C++) * * (C) 2004-2011 Andreas Brachold * based on (C) 2003 Kai Tobias Burwieck * * This code is distributed under the terms and conditions of the * GNU GENERAL PUBLIC LICENSE. See the file COPYING for details. * */ #include #include #include #include #include #include #include #include #include #include "image.h" #include "menu.h" #include "data-image.h" #include "menu-image.h" #include "control-image.h" #include #include // --- cMenuImageBrowse --------------------------------------------------------- cMenuImageBrowse::cMenuImageBrowse(void) : cMenuBrowse(ImageSources.GetSource(), true,tr("Image browser")) { sourcing = false; SetButtons(); } void cMenuImageBrowse::SetButtons(void) { SetHelp(tr("Play"), 0, tr("Data medium"), currentdir ? tr("Parent") : 0); Display(); } eOSState cMenuImageBrowse::Source(bool second) { if(HasSubMenu()) return osContinue; if(!second) { sourcing = true; return AddSubMenu(new cMenuSource(&ImageSources, tr("Image source"))); } sourcing = false; cFileSource *src = cMenuSource::GetSelected(); if(src) { ImageSources.SetSource(src); SetSource(src); NewDir(0); } return osContinue; } eOSState cMenuImageBrowse::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); cDirItem *item = cMenuBrowse::GetSelected(); if(item) { //FIXME use a nonblocking way //OSD_InfoMsg(tr("Building slide show...")); cSlideShow *newss = new cSlideShow(item); if(newss->Load() && newss->Count()) { cImageControl::SetSlideShow(newss); state = osEnd; } else { OSD_ErrorMsg(tr("No files!")); delete newss; state = osContinue; } lastselect = NULL; } free(full); free(name); } if(state == osUnknown && Key == kYellow) return Source(false); return state; }