diff options
Diffstat (limited to 'setup-image.c')
-rw-r--r-- | setup-image.c | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/setup-image.c b/setup-image.c new file mode 100644 index 0000000..8cf05d0 --- /dev/null +++ b/setup-image.c @@ -0,0 +1,145 @@ +/* + * Image plugin to VDR (C++) + * + * (C) 2004 Andreas Brachold <vdr04-at-deltab.de> + * (C) 2003 Kai Tobias Burwieck <kai-at-burwieck.net> + * + * based on MP3/MPlayer plugin to VDR (C++) + * (C) 2001,2002 Stefan Huelswitt <huels-at-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 <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <vdr/tools.h> +#include <vdr/config.h> +#include "setup-image.h" +#include "i18n.h" + +cImageSetup ImageSetup; + +const int cImageSetup::m_cSSMin = 2; +const int cImageSetup::m_cSSMax = 300; + +// --- cImageSetup ----------------------------------------------------------- + +cImageSetup::cImageSetup(void) + +{ + SlideShow = 0; + SSsec = 10; + strncpy(TempDir, "/tmp/image", sizeof(TempDir)); +#if VDRVERSNUM < 10307 + ShowDate = 1; +#endif + AutoRepeat = 0; + ShowNumbers = 1; +#if VDRVERSNUM >= 10308 + m_bLiveAudio = 0; +#endif + m_bHousekeeping = 1; +} + +bool cImageSetup::SetupParse(const char *szName, const char *szValue) +{ + if(!strcasecmp(szName, "SlideShow")) SlideShow = atoi(szValue); + else if(!strcasecmp(szName, "SSsec")) + { + SSsec = atoi(szValue); + if(SSsec < m_cSSMin) SSsec = cImageSetup::m_cSSMin; + if(SSsec > m_cSSMax) SSsec = cImageSetup::m_cSSMax; + } + else if(!strcasecmp(szName, "TempDir")) strn0cpy(TempDir,szValue,sizeof(TempDir)); +#if VDRVERSNUM < 10307 + else if(!strcasecmp(szName, "ShowDate")) ShowDate = atoi(szValue); +#endif + else if(!strcasecmp(szName, "AutoRepeat")) AutoRepeat = atoi(szValue); + else if(!strcasecmp(szName, "ShowNumbers")) ShowNumbers = atoi(szValue); +#if VDRVERSNUM >= 10308 + else if(!strcasecmp(szName, "LiveAudio")) m_bLiveAudio = atoi(szValue); +#endif + else if(!strcasecmp(szName, "Housekeeping")) m_bHousekeeping = atoi(szValue); + else return false; + return true; +} + +// --- cMenuSetupImage -------------------------------------------------------- +void cMenuSetupImage::Store(void) +{ + ImageSetup = m_tmpSetup; + SetupStore("SlideShow", ImageSetup.SlideShow); + SetupStore("SSsec", ImageSetup.SSsec); + SetupStore("TempDir", ImageSetup.TempDir); +#if VDRVERSNUM < 10307 + SetupStore("ShowDate", ImageSetup.ShowDate); +#endif + SetupStore("AutoRepeat", ImageSetup.AutoRepeat); + SetupStore("ShowNumbers", ImageSetup.ShowNumbers); +#if VDRVERSNUM >= 10308 + SetupStore("LiveAudio", ImageSetup.m_bLiveAudio); +#endif + SetupStore("Housekeeping", ImageSetup.m_bHousekeeping); +} + +cMenuSetupImage::cMenuSetupImage(void) +: m_tmpSetup(ImageSetup) +{ + SetSection(tr("Image")); + Add(new cMenuEditBoolItem(tr("SlideShow ?"), &m_tmpSetup.SlideShow, tr("no"), tr("yes"))); + Add(new cMenuEditIntItem (tr("Slide duration (sec)"), &m_tmpSetup.SSsec, cImageSetup::m_cSSMin, cImageSetup::m_cSSMax)); + Add(new cMenuEditBoolItem(tr("Repeat SlideShow"), &m_tmpSetup.AutoRepeat, tr("no"), tr("yes"))); +#if VDRVERSNUM < 10307 + Add(new cMenuEditBoolItem(tr("Show Filedate on OSD"), &m_tmpSetup.ShowDate, tr("no"), tr("yes"))); +#endif + Add(new cMenuEditBoolItem(tr("Show Numbers on index image"), &m_tmpSetup.ShowNumbers, tr("no"), tr("yes"))); +#if VDRVERSNUM >= 10308 + Add(new cMenuEditBoolItem(tr("Live Audio from primary Device"), &m_tmpSetup.m_bLiveAudio, tr("no"), tr("yes"))); +#endif + Add(new cMenuEditStrItem (tr("Directory with temporary files"), m_tmpSetup.TempDir,sizeof(m_tmpSetup.TempDir), "abcdefghijklmopqrstuvwxyz/-")); + Add(new cMenuEditBoolItem(tr("Remove temporary files"), &m_tmpSetup.m_bHousekeeping, tr("no"), tr("yes"))); +} + + + + + +void cImageSetup::SetEnv(void) const +{ + unsigned int i; + struct cImageCommandEnv { + const char* szEnv; + const char* szValue; + } nEnvironTable [] = + { + {"ASPECT_RATIO",Setup.VideoFormat?"16:9":"4:3"}, // Get from DVB-Setup + {"CONVERT_TEMPDIR",TempDir}, + }; + + for(i=0;i < sizeof(nEnvironTable)/sizeof(*nEnvironTable);++i) + { + if(nEnvironTable[i].szValue) { + if(0!= setenv(nEnvironTable[i].szEnv, nEnvironTable[i].szValue,1)) + esyslog("imageplugin: can't setenv '%s = %s'", nEnvironTable[i].szEnv, nEnvironTable[i].szValue); + } + else { + if(0!= unsetenv(nEnvironTable[i].szEnv)) + esyslog("imageplugin: can't unsetenv '%s'", nEnvironTable[i].szEnv); + } + } +} |