diff options
57 files changed, 2942 insertions, 643 deletions
@@ -1,6 +1,22 @@ VDR Plugin 'extrecmenu' Revision History ---------------------------------------- +2010-xx-xx: Version 1.2.1 +- [amair] Merged following changes from v1.3-devel head (Submitted by Joe_D @vdr-portal.de). +- [amair] Lifetime and priority for TS recording can be edited again. +- [amair] Use international characters for renaming recordings and creating directories like VDR. +- [amair] Don't use the VDR cutter by default as this crashes VDR (Can be enabled by defining USE_VDR_CUTTER). +- [amair] Updated Italian translation (Submitted by Diego Pierotto). +- [amair] Enable support for PIN plugin if USE_PINPLUGIN is set to "1" in Make.config. +- [amair] Reorganiced contrib directory. +- [amair] Fixed compiler warnings and errors. +- [amair] Use VDR's cutting feature (Submitted by Helmut Auer). +- [amair] Added HDD archive feature (Submitted by Carsten Siebholz). +- [amair] Updated VDRSymbols font to version 20100612. +- [amair] Included Rating patch (Submitted by Carsten Siebholz). +- [amair] Remove obsolete i18n files and scripts. +- [amair] Require at least VDR v1.6.0 or v1.7.14. + 2010-05-29: Version 1.2 [amair] - New homepage: http://projects.vdr-developer.org/projects/show/plg-extrecmenu @@ -34,6 +34,10 @@ TMPDIR = /tmp -include $(VDRDIR)/Make.config +ifdef USE_PINPLUGIN +DEFINES += -DUSE_PINPLUGIN +endif + ### The version number of VDR's plugin API (taken from VDR's "config.h"): APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) @@ -51,8 +55,7 @@ DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' ### The object files (add further files here): -OBJS = $(PLUGIN).o mymenurecordings.o mymenueditrecording.o myreplaycontrol.o \ - mymenucommands.o mymenusetup.o tools.o i18n.o +OBJS = $(PLUGIN).o mymenurecordings.o mymenueditrecording.o myreplaycontrol.o mymenucommands.o mymenusetup.o tools.o ### The main target: @@ -87,7 +90,7 @@ $(I18Npot): $(wildcard *.c) xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o $@ $^ %.po: $(I18Npot) - msgmerge -U --no-wrap --no-location --backup=none -q $@ $< + msgmerge -U --no-wrap --no-location --backup=none --no-fuzzy-matching -q $@ $< @touch $@ $(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo @@ -1,9 +1,11 @@ This is a "plugin" for the Video Disk Recorder (VDR). -Original author: Martin Prochnow (nordlicht@martins-kabuff.de) Current maintainers: see project's homepage Project's homepage: http://projects.vdr-developer.org/projects/show/plg-extrecmenu +Original author: Martin Prochnow (nordlicht@martins-kabuff.de) +Original homepage: http://martins-kabuff.de/extrecmenu_en.html + See the file COPYING for license information. I want to thank to following contributors: @@ -14,6 +16,7 @@ I want to thank to following contributors: - Diego <vdr-italian@tiscali.it> for the italian translation - Andreas Mair <andreas@vdr-developer.org> for the true type font containg the icons +- Carsten Siebholz for adding HDD Archive compatibility ------------------------------------------------------------------------------- Description @@ -44,15 +47,27 @@ Installation ------------------------------------------------------------------------------- Installation of the plugin itselfs is like any other plugin installation. +Compile time configuration +------------------------------------------------------------------------------- +Some features of the ExtRecMenu must be activated before compiling the plugin. +This configuration has to be added to the Make.config file in the VDR's source +directory if you want to use it. + +USE_PINPLUGIN = 1 +Add support for protected recordings by using the PIN plugin. + +Font including required symbols +------------------------------------------------------------------------------- In addition you have to copy the true type font in the ttf/-directory to a location where freetype will find it (usually /usr/share/fonts/truetype) and select it in the OSD setup menu of VDR so that the icons which this plugin uses can be displayed. -Also check the Makefile if you use the PIN-plugin. You have to place the script -'dvdarchive.sh' from the scripts/-directory within your $PATH (maybe adjust the -permissions) for the DVDArchive-patch functionality. See the top of -'dvdarchive.sh' for the adjustments you maybe have to take. +Notes +------------------------------------------------------------------------------- +You have to place the script 'dvdarchive.sh' from the scripts/-directory within +your $PATH (maybe adjust the permissions) for the DVDArchive-patch functionality. +See the top of 'dvdarchive.sh' for the adjustments you maybe have to take. If your /video-directory is a nfs mount, you have to mount it with the option 'hard' to make renaming and moving of recordings possible. diff --git a/contrib/hddarchive/README b/contrib/hddarchive/README new file mode 100644 index 0000000..68b674e --- /dev/null +++ b/contrib/hddarchive/README @@ -0,0 +1,28 @@ +The hddarchive feature of the extrecmenu plugin is similar to +the dvdarchive feature. Except that the recordings are moved to a +HDD and not burned to a DVD. +In my case, I have an external USB docking station for SATA HDDs in which +I plug in the HDD with the recording to play. + + +Installation +============ + +1. Copy the 'hddarchive.sh' to the same directory like 'dvdarchive.sh' + (in Gentoo Linux it is /usr/bin/hddarchive.sh) +2. Copy the 'hddarchive.conf' to the same directory like 'dvdarchive.conf' + (in Gentoo Linux it is located in /etc/vdr/) +3. Edit the 'hddarchive.conf'. MOUNTPOINT should be an existing path, in + which the HDD will be mounted. +4. Copy the script 'vdr_move_to_hdd.sh' to /usr/local/bin/ +5. Edit /usr/local/bin/vdr_move_to_hdd.sh: check that ARCHIVEHDD is the same + as MOUNTPOINT in 3. + VDRSETTINGSFILE is the path to the gentoo vdr config file (/etc/conf.d/vdr). + This is only used to get the envvar ${VIDEO}. Alternative, You can set + VIDEO=... manually. +6. Add the content of ./reccmds/reccmds.custom.conf to Your reccmds.conf. +7. Create a file hdd.vdr in the root direcory on each archive HDD (/hdd.vdr) + The content is used to identify the HDD and should be unique. + I have used 2 digits 01, 02... "99 harddisks ought to be enough for anybody" ;-) +8. If you use the "live" plugin you may want to patch it with + ./patches/live-ArchiveHDD.patch to support the archive HDDs. diff --git a/contrib/hddarchive/hddarchive.conf b/contrib/hddarchive/hddarchive.conf new file mode 100644 index 0000000..c07e213 --- /dev/null +++ b/contrib/hddarchive/hddarchive.conf @@ -0,0 +1,17 @@ +# config file for /usr/bin/hddarchive.sh +# this is used by vdr-extrecmenu for hddarchives + +# Mountpoint, the same as in fstab +MOUNTPOINT="/mnt/archive-hdd" # no trailing '/' + +# Log warnings/errors in syslog. 1 = yes, 0 = no. +SYSLOG=1 + +# Create a length.vdr after mounting the dvd for the played recording. 1 = yes, 0 = no. +# Only for non-vfat and with index.vdr only on dvd. +GETLENGTH=1 + +# Put debug infos in file $DEBUGLOG. Only if $DEBUG=1. +DEBUG=0 +DEBUGLOG="/tmp/hddarchive.sh-debug.log" + diff --git a/contrib/hddarchive/patches/live-ArchiveHDD.patch b/contrib/hddarchive/patches/live-ArchiveHDD.patch new file mode 100644 index 0000000..d9c053e --- /dev/null +++ b/contrib/hddarchive/patches/live-ArchiveHDD.patch @@ -0,0 +1,487 @@ +diff -Nurb live-0.2.0-org/i18n-generated.h live-0.2.0/i18n-generated.h +--- live-0.2.0-org/i18n-generated.h 2008-04-30 21:43:49.000000000 +0200 ++++ live-0.2.0/i18n-generated.h 2008-10-10 12:03:33.000000000 +0200 +@@ -501,6 +501,41 @@ + "", + #endif + }, ++ { "On archive HDD No.", ++ "Auf Archiv-HDD Nr.", ++ "", ++ "In archivio HDD No.", ++ "", ++ "", ++ "Sur le HDD archive no°", ++ "", ++ "Arkistointi-HDD:llä numero", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++#if VDRVERSNUM >= 10302 ++ "", ++#endif ++#if VDRVERSNUM >= 10307 ++ "", ++#endif ++#if VDRVERSNUM >= 10313 ++ "", ++#endif ++#if VDRVERSNUM >= 10316 ++ "", ++#endif ++#if VDRVERSNUM >= 10342 ++ "", ++#endif ++#if VDRVERSNUM >= 10502 ++ "", ++#endif ++ }, + { "Couldn't find channel or no channels available.", + "Kann das Programm nicht finden oder keine vorhanden.", + "", +diff -Nurb live-0.2.0-org/i18n.cpp live-0.2.0/i18n.cpp +--- live-0.2.0-org/i18n.cpp 2007-08-19 21:48:54.000000000 +0200 ++++ live-0.2.0/i18n.cpp 2008-10-10 12:03:33.000000000 +0200 +@@ -3564,7 +3564,7 @@ + { "On archive DVD No.", // English + "Auf Archiv-DVD Nr.", // Deutsch + "", // Slovenski +- "", // Italiano ++ "In archivio DVD No.", // Italiano + "", // Nederlands + "", // Português + "Sur le DVD archive no°", // Français +@@ -3583,6 +3583,28 @@ + "", // Dansk + "", // Czech + }, ++ { "On archive HDD No.", // English ++ "Auf Archiv-HDD Nr.", // Deutsch ++ "", // Slovenski ++ "In archivio HDD No.", // Italiano ++ "", // Nederlands ++ "", // Português ++ "Sur le HDD archive no°", // Français ++ "", // Norsk ++ "Arkistointi-HDD:llä numero", ++ "", // Polski ++ "", // Español ++ "", // Greek ++ "", // Svenska ++ "", // Românã ++ "", // Magyar ++ "", // Català ++ "", // Russian ++ "", // Hrvatski ++ "", // Eesti ++ "", // Dansk ++ "", // Czech ++ }, + { "Starts between", // English + "Beginnt zwischen", // Deutsch + "", // Slovenski +diff -Nurb live-0.2.0-org/po/ca_ES.po live-0.2.0/po/ca_ES.po +--- live-0.2.0-org/po/ca_ES.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/ca_ES.po 2008-10-10 12:03:33.000000000 +0200 +@@ -59,6 +59,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/cs_CZ.po live-0.2.0/po/cs_CZ.po +--- live-0.2.0-org/po/cs_CZ.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/cs_CZ.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/da_DK.po live-0.2.0/po/da_DK.po +--- live-0.2.0-org/po/da_DK.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/da_DK.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/de_DE.po live-0.2.0/po/de_DE.po +--- live-0.2.0-org/po/de_DE.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/de_DE.po 2008-10-10 12:03:33.000000000 +0200 +@@ -59,6 +59,9 @@ + msgid "On archive DVD No." + msgstr "Auf Archiv-DVD Nr." + ++msgid "On archive HDD No." ++msgstr "Auf Archiv-HDD Nr." ++ + msgid "Couldn't find channel or no channels available." + msgstr "Kann das Programm nicht finden oder keine vorhanden." + +diff -Nurb live-0.2.0-org/po/el_GR.po live-0.2.0/po/el_GR.po +--- live-0.2.0-org/po/el_GR.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/el_GR.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/es_ES.po live-0.2.0/po/es_ES.po +--- live-0.2.0-org/po/es_ES.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/es_ES.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/et_EE.po live-0.2.0/po/et_EE.po +--- live-0.2.0-org/po/et_EE.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/et_EE.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/fi_FI.po live-0.2.0/po/fi_FI.po +--- live-0.2.0-org/po/fi_FI.po 2008-04-27 12:49:36.000000000 +0200 ++++ live-0.2.0/po/fi_FI.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "Arkistointi-DVD:llä numero" + ++msgid "On archive HDD No." ++msgstr "Arkistointi-HDD:llä numero" ++ + msgid "Couldn't find channel or no channels available." + msgstr "Kanavaa ei löydy tai yhtään kanavaa ei ole saatavilla." + +diff -Nurb live-0.2.0-org/po/fr_FR.po live-0.2.0/po/fr_FR.po +--- live-0.2.0-org/po/fr_FR.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/fr_FR.po 2008-10-10 12:03:33.000000000 +0200 +@@ -60,6 +60,9 @@ + msgid "On archive DVD No." + msgstr "Sur le DVD archive no°" + ++msgid "On archive HDD No." ++msgstr "Sur le HDD archive noä" ++ + msgid "Couldn't find channel or no channels available." + msgstr "Impossible de trouver la chaîne ou pas de chaînes disponibles." + +diff -Nurb live-0.2.0-org/po/hr_HR.po live-0.2.0/po/hr_HR.po +--- live-0.2.0-org/po/hr_HR.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/hr_HR.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/hu_HU.po live-0.2.0/po/hu_HU.po +--- live-0.2.0-org/po/hu_HU.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/hu_HU.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/it_IT.po live-0.2.0/po/it_IT.po +--- live-0.2.0-org/po/it_IT.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/it_IT.po 2008-10-10 12:03:33.000000000 +0200 +@@ -59,6 +59,9 @@ + msgid "On archive DVD No." + msgstr "In archivio DVD No." + ++msgid "On archive HDD No." ++msgstr "In archivio HDD No." ++ + msgid "Couldn't find channel or no channels available." + msgstr "Impossibile trovare canale o canali disponibili." + +diff -Nurb live-0.2.0-org/po/nl_NL.po live-0.2.0/po/nl_NL.po +--- live-0.2.0-org/po/nl_NL.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/nl_NL.po 2008-10-10 12:03:33.000000000 +0200 +@@ -60,6 +60,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/nn_NO.po live-0.2.0/po/nn_NO.po +--- live-0.2.0-org/po/nn_NO.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/nn_NO.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/pl_PL.po live-0.2.0/po/pl_PL.po +--- live-0.2.0-org/po/pl_PL.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/pl_PL.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/pt_PT.po live-0.2.0/po/pt_PT.po +--- live-0.2.0-org/po/pt_PT.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/pt_PT.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/ro_RO.po live-0.2.0/po/ro_RO.po +--- live-0.2.0-org/po/ro_RO.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/ro_RO.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/ru_RU.po live-0.2.0/po/ru_RU.po +--- live-0.2.0-org/po/ru_RU.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/ru_RU.po 2008-10-10 12:03:33.000000000 +0200 +@@ -57,6 +57,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/sl_SI.po live-0.2.0/po/sl_SI.po +--- live-0.2.0-org/po/sl_SI.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/sl_SI.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/sv_SE.po live-0.2.0/po/sv_SE.po +--- live-0.2.0-org/po/sv_SE.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/sv_SE.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/po/tr_TR.po live-0.2.0/po/tr_TR.po +--- live-0.2.0-org/po/tr_TR.po 2008-04-21 00:35:22.000000000 +0200 ++++ live-0.2.0/po/tr_TR.po 2008-10-10 12:03:33.000000000 +0200 +@@ -58,6 +58,9 @@ + msgid "On archive DVD No." + msgstr "" + ++msgid "On archive HDD No." ++msgstr "" ++ + msgid "Couldn't find channel or no channels available." + msgstr "" + +diff -Nurb live-0.2.0-org/recman.cpp live-0.2.0/recman.cpp +--- live-0.2.0-org/recman.cpp 2008-10-10 12:06:17.000000000 +0200 ++++ live-0.2.0/recman.cpp 2008-10-10 12:09:00.000000000 +0200 +@@ -1,5 +1,4 @@ + #include <unistd.h> +-#include <cstring> + #include <string> + #include <sstream> + #include <fstream> +@@ -13,6 +12,7 @@ + #include "recman.h" + + #define INDEXFILESUFFIX "/index.vdr" ++#define LENGTHFILESUFFIX "/length.vdr" + + using namespace std::tr1; + using namespace std; +@@ -101,24 +101,28 @@ + Recordings.DelByName(name.c_str()); + } + +- bool RecordingsManager::IsArchived(cRecording const * recording) ++ int RecordingsManager::GetArchiveType(cRecording const * recording) + { + string filename = recording->FileName(); + +- string vdrFile = filename + "/001.vdr"; +- if (0 == access(vdrFile.c_str(), R_OK)) +- return false; +- +- filename += "/dvd.vdr"; +- return (0 == access(filename.c_str(), R_OK)); ++ string dvdFile = filename + "/dvd.vdr"; ++ if (0 == access(dvdFile.c_str(), R_OK)) { ++ return 1; ++ } ++ string hddFile = filename + "/hdd.vdr"; ++ if (0 == access(hddFile.c_str(), R_OK)) { ++ return 2; ++ } ++ return 0; + } + +- string const RecordingsManager::GetArchiveId(cRecording const * recording) ++ string const RecordingsManager::GetArchiveId(cRecording const * recording, int archiveType) + { + string filename = recording->FileName(); + +- filename += "/dvd.vdr"; +- ifstream dvd(filename.c_str()); ++ if (archiveType==1) { ++ string dvdFile = filename + "/dvd.vdr"; ++ ifstream dvd(dvdFile.c_str()); + + if (dvd) { + string archiveDisc; +@@ -130,17 +134,35 @@ + } + return archiveDisc; + } ++ } else if(archiveType==2) { ++ string hddFile = filename + "/hdd.vdr"; ++ ifstream hdd(hddFile.c_str()); ++ ++ if (hdd) { ++ string archiveDisc; ++ hdd >> archiveDisc; ++ return archiveDisc; ++ } ++ } + return ""; + } + + string const RecordingsManager::GetArchiveDescr(cRecording const * recording) + { ++ int archiveType; + string archived; +- if (IsArchived(recording)) { ++ archiveType = GetArchiveType(recording); ++ if (archiveType==1) { + archived += " ["; + archived += tr("On archive DVD No."); + archived += ": "; +- archived += GetArchiveId(recording); ++ archived += GetArchiveId(recording, archiveType); ++ archived += "]"; ++ } else if (archiveType==2) { ++ archived += " ["; ++ archived += tr("On archive HDD No."); ++ archived += ": "; ++ archived += GetArchiveId(recording, archiveType); + archived += "]"; + } + return archived; +@@ -266,6 +266,13 @@ + } + delete index; + #endif ++ if (RecLength == 0) { ++ cString lengthFile = cString::sprintf("%s%s", m_recording->FileName(), LENGTHFILESUFFIX); ++ ifstream length(*lengthFile); ++ if(length) ++ length >> RecLength; ++ } ++ + return RecLength; + } + +diff -Nurb live-0.2.0-org/recman.h live-0.2.0/recman.h +--- live-0.2.0-org/recman.h 2008-04-08 19:52:00.000000000 +0200 ++++ live-0.2.0/recman.h 2008-10-10 12:03:33.000000000 +0200 +@@ -78,14 +78,14 @@ + * Determine wether the recording has been archived on + * removable media (e.g. DVD-ROM) + */ +- static bool IsArchived(cRecording const * recording); ++ static int GetArchiveType(cRecording const * recording); + + /** + * Provide an identification of the removable media + * (e.g. DVD-ROM Number or Name) where the recording has + * been archived. + */ +- static std::string const GetArchiveId(cRecording const * recording); ++ static std::string const GetArchiveId(cRecording const * recording, int archiveType); + + static std::string const GetArchiveDescr(cRecording const * recording); + diff --git a/contrib/hddarchive/reccmds/reccmds.custom.conf b/contrib/hddarchive/reccmds/reccmds.custom.conf new file mode 100644 index 0000000..92869ea --- /dev/null +++ b/contrib/hddarchive/reccmds/reccmds.custom.conf @@ -0,0 +1 @@ +Move to Archive-HDD: /usr/share/vdr/bin/vdr-bg.sh /usr/local/bin/vdr_move_to_hdd.sh diff --git a/contrib/hddarchive/reccmds/reccmds.custom.conf.de b/contrib/hddarchive/reccmds/reccmds.custom.conf.de new file mode 100644 index 0000000..2a12f98 --- /dev/null +++ b/contrib/hddarchive/reccmds/reccmds.custom.conf.de @@ -0,0 +1 @@ +Auf Archiv-HDD verschieben: /usr/share/vdr/bin/vdr-bg.sh /usr/local/bin/vdr_move_to_hdd.sh diff --git a/contrib/hddarchive/vdr_move_to_hdd.sh b/contrib/hddarchive/vdr_move_to_hdd.sh new file mode 100644 index 0000000..c50ef28 --- /dev/null +++ b/contrib/hddarchive/vdr_move_to_hdd.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +#LOGFILE=~/vdr_move_to_hdd.log + +#ARCHIVEHDD=~/Archive-HDD +ARCHIVEHDD=/mnt/archive-hdd + +#VDRSETTINGSFILE=~/vdr +VDRSETTINGSFILE=/etc/conf.d/vdr + +source ${VDRSETTINGSFILE} + +HDDMOUNTED=0 + + +#echo "" > ${LOGFILE} + +# Test, if recording has already moved? +if [ -f ${SRC_FULLPATH}/hdd.vdr ]; then + svdrpsend.pl mesg "Recording has already been moved to Archive-HDD!" +# echo "Recording has already been moved to Archive-HDD!" >> ${LOGFILE} + exit 1 +fi + + +# Test, if Archive-HDD can be mounted +if [ ! -f ${ARCHIVEHDD}/hdd.vdr ]; then + mount ${ARCHIVEHDD} + HDDMOUNTED=1 +fi +if [ ! -f ${ARCHIVEHDD}/hdd.vdr ]; then + svdrpsend.pl mesg "Archive-HDD could not be mounted!" +# echo "Archive-HDD could not be mounted!" >> ${LOGFILE} + exit 1 +fi + + +#echo "PARAMETER = $1" >> ${LOGFILE} +#echo "VDRSETTINGSFILE= ${VDRSETTINGSFILE}" >> ${LOGFILE} +#echo "VIDEO = ${VIDEO}" >> ${LOGFILE} +#echo "ARCHIVEHDD = ${ARCHIVEHDD}" >> ${LOGFILE} +#echo "" >> ${LOGFILE} + +VID_FULLPATH="`cd \"$VIDEO\" 2>/dev/null && pwd || echo \"$VIDEO\"`/" +#echo "VID_FULLPATH = ${VID_FULLPATH}" >> ${LOGFILE} + +SRC_FULLPATH="`cd \"$1\" 2>/dev/null && pwd || echo \"${1}\"`/" +#echo "SRC_FULLPATH = ${SRC_FULLPATH}" >> ${LOGFILE} +#echo "" >> ${LOGFILE} + + + +#RELPATH=$(echo ${SRC_FULLPATH} | sed -e "s#$VID_FULLPATH##") +RELPATH=${SRC_FULLPATH#$VID_FULLPATH} +#echo "RELPATH = ${RELPATH}" >> ${LOGFILE} + +MODPATH=$(echo "$RELPATH" | awk ' +BEGIN{ + FS="/"; +} +{ + MODPATH=""; + #printf "0: %s\n", MODPATH; + for (i=1; i<=NF; i++) { + if ((i==NF-2) && (index($i, "%")==1)) { # cutted movie + #printf "replace\n"; + MODPATH=MODPATH "" substr ($i, 2); + } else { + #printf "original\n"; + MODPATH=MODPATH "" $i; + } + if (i<NF) MODPATH=MODPATH "/"; + #printf "%i:%s %s\n", i, $i, MODPATH; + } + printf "%s", MODPATH; +}' ARCHIVEHDD="$ARCHIVEHDD") +#echo "MODPATH = ${MODPATH}" >> ${LOGFILE} + +mkdir -p ${ARCHIVEHDD}/${MODPATH} +for i in ${SRC_FULLPATH}/0??.vdr; do + if [ -e "${i}" ]; then + B=$(basename $i) + svdrpsend.pl mesg "Moving $B..." +# sleep 5 + mv ${i} ${ARCHIVEHDD}/${MODPATH} + fi +done +for i in ${SRC_FULLPATH}/0????.ts; do + if [ -e "${i}" ]; then + B=$(basename $i) + svdrpsend.pl mesg "Moving $B..." +# sleep 5 + mv ${i} ${ARCHIVEHDD}/${MODPATH} + fi +done +mv ${SRC_FULLPATH}/index.vdr ${ARCHIVEHDD}/${MODPATH} +mv ${SRC_FULLPATH}/index ${ARCHIVEHDD}/${MODPATH} +cp ${SRC_FULLPATH}/info.vdr ${ARCHIVEHDD}/${MODPATH} +cp ${SRC_FULLPATH}/info ${ARCHIVEHDD}/${MODPATH} +rm ${SRC_FULLPATH}/resume.vdr +rm ${SRC_FULLPATH}/resume +rm ${SRC_FULLPATH}/marks.vdr +rm ${SRC_FULLPATH}/marks +cp ${ARCHIVEHDD}/hdd.vdr ${SRC_FULLPATH}/ + + +if [ "${HDDMOUNTED}" == "1" ]; then +# svdrpsend.pl mesg "umount." +# sleep 5 + umount ${ARCHIVEHDD} +#else +# svdrpsend.pl mesg "NO umount." +# sleep 5 +fi + +svdrpsend.pl mesg "Successfully moved Recording to Archive-HDD." diff --git a/contrib/rating/README b/contrib/rating/README new file mode 100644 index 0000000..e4da43d --- /dev/null +++ b/contrib/rating/README @@ -0,0 +1,12 @@ +The rating feature of the extrecmenu plugin gives the possibility +to rate recordings. These ratings are shown in the Recordings menu +with up to 5 stars. + + +Installation +============ + +1. Copy ./vdr-rate-recording.sh to Your local file system +2. Edit your reccmds.conf file: add entries to rate a recording. + You may want to use ./reccmds/reccmds.custom.conf as a starting point. + Modify the path to vdr-rate-recording.sh (if neccessary) diff --git a/contrib/rating/reccmds/reccmds.custom.conf b/contrib/rating/reccmds/reccmds.custom.conf new file mode 100644 index 0000000..0555e4d --- /dev/null +++ b/contrib/rating/reccmds/reccmds.custom.conf @@ -0,0 +1,12 @@ +=== Rate Recording === : echo "no function" +-rate with 10: /usr/share/vdr/bin/vdr-rate-recording.sh 10 +-rate with 9: /usr/share/vdr/bin/vdr-rate-recording.sh 9 +-rate with 8: /usr/share/vdr/bin/vdr-rate-recording.sh 8 +-rate with 7: /usr/share/vdr/bin/vdr-rate-recording.sh 7 +-rate with 6: /usr/share/vdr/bin/vdr-rate-recording.sh 6 +-rate with 5: /usr/share/vdr/bin/vdr-rate-recording.sh 5 +-rate with 4: /usr/share/vdr/bin/vdr-rate-recording.sh 4 +-rate with 3: /usr/share/vdr/bin/vdr-rate-recording.sh 3 +-rate with 2: /usr/share/vdr/bin/vdr-rate-recording.sh 2 +-rate with 1: /usr/share/vdr/bin/vdr-rate-recording.sh 1 +-remove rating: /usr/share/vdr/bin/vdr-rate-recording.sh 0 diff --git a/contrib/rating/reccmds/reccmds.custom.conf.de b/contrib/rating/reccmds/reccmds.custom.conf.de new file mode 100644 index 0000000..89c875d --- /dev/null +++ b/contrib/rating/reccmds/reccmds.custom.conf.de @@ -0,0 +1,12 @@ +=== Aufnahme bewerten === : echo "no function" +-bewerte mit 10: /usr/share/vdr/bin/vdr-rate-recording.sh 10 +-bewerte mit 9: /usr/share/vdr/bin/vdr-rate-recording.sh 9 +-bewerte mit 8: /usr/share/vdr/bin/vdr-rate-recording.sh 8 +-bewerte mit 7: /usr/share/vdr/bin/vdr-rate-recording.sh 7 +-bewerte mit 6: /usr/share/vdr/bin/vdr-rate-recording.sh 6 +-bewerte mit 5: /usr/share/vdr/bin/vdr-rate-recording.sh 5 +-bewerte mit 4: /usr/share/vdr/bin/vdr-rate-recording.sh 4 +-bewerte mit 3: /usr/share/vdr/bin/vdr-rate-recording.sh 3 +-bewerte mit 2: /usr/share/vdr/bin/vdr-rate-recording.sh 2 +-bewerte mit 1: /usr/share/vdr/bin/vdr-rate-recording.sh 1 +-entferne Bewertung: /usr/share/vdr/bin/vdr-rate-recording.sh 0 diff --git a/contrib/rating/vdr-rate-recording.sh b/contrib/rating/vdr-rate-recording.sh new file mode 100644 index 0000000..30b43b1 --- /dev/null +++ b/contrib/rating/vdr-rate-recording.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +[ $? -ne 2 ] && echo "Usage: $0 <path to the VDR recording> <rating 0 - 10>" && exit 1 + +rm ${2}/rated.vdr >/dev/null 2>&1 +if [ ! ${1} = "0" ]; then + echo "${1}" > $2/rated.vdr +fi diff --git a/contrib/reclist/README b/contrib/reclist/README new file mode 100644 index 0000000..7f5ae33 --- /dev/null +++ b/contrib/reclist/README @@ -0,0 +1,42 @@ +The reclist is independent of the extrecmenu plugin. +It's nothing else than a set of scripts to create a 'database' of all +recordings. And to create different user defined outputs of this DB. + + +Installation +============ + +1. Copy the include scripts to /usr/local/bin +2. Edit vdr_set_values_for_recording_lists.sh to meet Your needs. + VIDEODIR should contain Your video directory (eg: /video) + RECLISTDIR is the directory, the list will be created in + RECLISTFILE is the filename of the list + All other parameters are values to define the layout of the output +3. Edit Your commands.conf file: + You may want to use ./commands/commands.reclist.conf as a starting point. + Modify the path to vdr_get_recordings.sh and + vdr_generate_recording_list.sh (if neccessary) + + +Explanation of the scripts +-------------------------- +vdr_set_values_for_recording_lists.sh + sets values to generate the list and to generate the user defined outputs +vdr_get_recordings.sh + scans all recordings and calls 'vdr_add_recording.sh' for each recording +vdr_add_recording.sh + calls 'vdr_create_recording_list_entry.awk' to create an entry for each recording +vdr_create_recording_list_entry.awk + does the real work. It extracts the neccessary values out of info or info.vdr + and stores them in the reclist. Currently these values will be extracted: + Title, Genre, Country, Year, Length, Date, Size, Media, Path. +vdr_generate_recording_list.sh + creates the user defined outputs of the list. + usage: vdr_generate_recording_list.sh <type> <what> + where <type> = (title|genre|country|year|length|date|size|media|path) + and <what> = (all|head|tail) + 'all' shows all entries, 'head' shows the first n entries, 'tail' the last n entries + where n id the LINES_PER_PAGE defined in vdr_set_values_for_recording_lists.sh +vdr_crop_output.sh + is just a script for convenience. It can crop a lengthy output to the first/last + LINES_PER_PAGE lines diff --git a/contrib/reclist/commands/commands.reclist.conf b/contrib/reclist/commands/commands.reclist.conf new file mode 100644 index 0000000..bfe7b9b --- /dev/null +++ b/contrib/reclist/commands/commands.reclist.conf @@ -0,0 +1,15 @@ +List of Recordings commands { + generate list of recordings : /usr/share/vdr/bin/vdr-bg.sh /usr/local/bin/vdr_get_recordings.sh + Recordings sorted by title : vdr_generate_recording_list.sh title all + Recordings sorted by genre : vdr_generate_recording_list.sh genre all + Recordings sorted by country : vdr_generate_recording_list.sh country all + Recordings sorted by year : vdr_generate_recording_list.sh year all + Recordings sorted by length : vdr_generate_recording_list.sh length all + Recordings sorted by media : vdr_generate_recording_list.sh media all + Recordings sorted by path : vdr_generate_recording_list.sh path all + Recordings sorted by size : vdr_generate_recording_list.sh size tail + '' (w/o Tatort+Kochen) : vdr_generate_recording_list.sh size all | grep -v "Kochen/" | grep -v "Tatort/" | vdr_crop_output.sh tail + '' (w/o Tatort,Kochen+Musik) : vdr_generate_recording_list.sh size all | grep -v "Kochen/" | grep -v "Tatort/" | grep -v "Musik/" | vdr_crop_output.sh tail + '' (only Movies) : vdr_generate_recording_list.sh size all | grep "Spielfilme/" | vdr_crop_output.sh tail + show newest Recordings : vdr_generate_recording_list.sh date tail +} diff --git a/contrib/reclist/commands/commands.reclist.conf.de b/contrib/reclist/commands/commands.reclist.conf.de new file mode 100644 index 0000000..fc2b0b6 --- /dev/null +++ b/contrib/reclist/commands/commands.reclist.conf.de @@ -0,0 +1,15 @@ +Liste der Aufnahmen { + generiere Liste der Aufnahmen : /usr/share/vdr/bin/vdr-bg.sh /usr/local/bin/vdr_get_recordings.sh + Aufnahmen sortiert nach Titel : vdr_generate_recording_list.sh title all + Aufnahmen sortiert nach Genre : vdr_generate_recording_list.sh genre all + Aufnahmen sortiert nach Land : vdr_generate_recording_list.sh country all + Aufnahmen sortiert nach Jahr : vdr_generate_recording_list.sh year all + Aufnahmen sortiert nach Länge : vdr_generate_recording_list.sh length all + Aufnahmen sortiert nach Medium : vdr_generate_recording_list.sh media all + Aufnahmen sortiert nach Verzeichnis : vdr_generate_recording_list.sh path all + Aufnahmen sortiert nach Größe : vdr_generate_recording_list.sh size tail + '' (ohne Tatort+Kochen) : vdr_generate_recording_list.sh size all | grep -v "Kochen/" | grep -v "Tatort/" | vdr_crop_output.sh tail + '' (ohne Tatort,Kochen+Musik) : vdr_generate_recording_list.sh size all | grep -v "Kochen/" | grep -v "Tatort/" | grep -v "Musik/" | vdr_crop_output.sh tail + '' (nur Spielfilme) : vdr_generate_recording_list.sh size all | grep "Spielfilme/" | vdr_crop_output.sh tail + neueste Aufnahmen anzeigen : vdr_generate_recording_list.sh date tail +} diff --git a/contrib/reclist/vdr_add_recording.sh b/contrib/reclist/vdr_add_recording.sh new file mode 100644 index 0000000..1ca4b42 --- /dev/null +++ b/contrib/reclist/vdr_add_recording.sh @@ -0,0 +1,13 @@ +#!/bin/sh + + +echo "${1}" | \ + awk -f /usr/local/bin/vdr_create_recording_list_entry.awk basedir="${VIDEODIR}" Seperator="${SEPERATOR}" \ + LenTitle="${LEN_TITLE}" \ + LenGenre="${LEN_GENRE}" \ + LenCountry="${LEN_COUNTRY}" \ + LenYear="${LEN_YEAR}" \ + LenLength="${LEN_LENGTH}" \ + LenDate="${LEN_DATE}" \ + LenSize="${LEN_SIZE}" \ + LenMedia="${LEN_MEDIA}" >> ${RECLISTDIR}/${RECLISTFILE}
\ No newline at end of file diff --git a/contrib/reclist/vdr_create_recording_list_entry.awk b/contrib/reclist/vdr_create_recording_list_entry.awk new file mode 100644 index 0000000..ba6fe60 --- /dev/null +++ b/contrib/reclist/vdr_create_recording_list_entry.awk @@ -0,0 +1,302 @@ +BEGIN { + debug=4; + BLANK=" "; + TAG_RECORDING=".rec"; + + + # set default values if not defined + if (basedir == "") {basedir="/var/vdr/data/_video/";} + if (Seperator == "") {Seperator="|";} + if (LenTitle == "") {LenTitle=50;} + if (LenGenre == "") {LenGenre=20;} + if (LenCountry == "") {LenCountry=5;} + if (LenYear == "") {LenYear=4;} + if (LenLength == "") {LenLength=4;} + if (LenDate == "") {LenDate=10;} + if (LenSize == "") {LenSize=9;} + if (LenMedia == "") {LenMedia=8;} +} + +{ + InputParam=$0 + InfoFile=InputParam; + if (debug>0) printf("InfoFile :%s\n", InfoFile) > "/dev/stderr"; + InfoFileBasename=""; + + Title=""; + SubTitle=""; + Genre=""; + Country=""; + Year=""; + Length=""; + Date=""; + Size=""; + Media="Internal"; + Path=""; + + Len=""; + Nr="----"; + FullDir=""; + + n = split (InfoFile, p, "/"); + if (debug>2) { + for (i=1; i<=n; i++) { + printf("p[%d] :%s\n", i, p[i]) > "/dev/stderr"; + } + } + if (n>2) { + Dir = p[1]; + FullDir = p[1]; + if (debug>2) printf("FullDir1 :%s\n", FullDir) > "/dev/stderr"; + InfoFileBasename = p[n]; + for (i=2; i<=n-1; i++) { + if (i<=n-2) { + Dir = Dir "/" p[i]; + if (debug>2) printf("Dir 2 :%s\n", Dir) > "/dev/stderr"; + } else { + Date = substr(p[i],1, 10); + if (debug>2) printf("Date :%s\n", Date) > "/dev/stderr"; + } + FullDir = FullDir "/" p[i]; + if (debug>2) printf("FullDir2 :%s\n", FullDir) > "/dev/stderr"; + } + if (index(Dir, basedir)==1) { + Path = substr(Dir, length(basedir)+1); + if (debug>2) printf("Path :%s\n", Path) > "/dev/stderr"; + } + } + if (FullDir != "") { + EscDir = FullDir; + gsub(/\"/, "\\\"", EscDir); + if (debug>0) printf("EscDir :%s\n", EscDir) > "/dev/stderr"; + getsize = "du \""EscDir"\""; + if ((getsize | getline duRes) > 0) { + n = split(duRes, s, " "); + Size = s[1]; + if (debug>1) printf("Size :%s\n", Size) > "/dev/stderr"; + close(getsize) + } + } + + + # check, if recording is valid (not deleted) + if (match(EscDir, /rec$/)) { + + # check for length file + LenFile=InputParam; + sub( InfoFileBasename, "length.vdr", LenFile ); + if (debug>0) printf("Looking for length...\n") > "/dev/stderr"; + if (debug>1) printf("LenFile1 :%s\n", LenFile) > "/dev/stderr"; + getline Len < LenFile; + if (debug>1) printf("Len 1 :%s\n", Len) > "/dev/stderr"; + if (Len != "") { + Length = sprintf("%d:%02d", Len/60, Len%60); + } else { + IndexFile=InputParam; + sub( InfoFileBasename, "index.vdr", IndexFile ); + gsub(/\"/, "\\\"", IndexFile); + if (debug>1) printf("IndexFile:%s\n", IndexFile) > "/dev/stderr"; + $1=""; + "stat -L -c %s \""IndexFile"\" 2>/dev/null" | getline; + if (debug>2) printf("Len 2 :%s\t%s\n", $1, IndexFile) > "/dev/stderr"; + if ($1 != "") { + Len=($1/12000); + if (debug>1) printf("Len 3 :%s\n", Len) > "/dev/stderr"; + Length = sprintf("%d:%02d", Len/60, Len%60); + } + } + + + # check for archive DVD + ExtFile=InputParam; + sub( InfoFileBasename, "dvd.vdr", ExtFile ); + if (debug>0) printf("Looking for archive DVD...\n") > "/dev/stderr"; + if (debug>1) printf("ExtFile1 :%s\n", ExtFile) > "/dev/stderr"; + getline Nr < ExtFile; + if (debug>1) printf("Nr 1 :%s\n", Nr) > "/dev/stderr"; + if (Nr != "----") { + Media="DVD "Nr; + } else { + # check for archive HDD + ExtFile=InputParam; + sub( InfoFileBasename, "hdd.vdr", ExtFile ); + if (debug>0) printf("Looking for archive HDD...\n") > "/dev/stderr"; + if (debug>1) printf("ExtFile2 :%s\n", ExtFile) > "/dev/stderr"; + getline Nr < ExtFile; + if (debug>1) printf("Nr 2 :%s\n", Nr) > "/dev/stderr"; + if (Nr != "----") { + Media="HDD "Nr; + } + } + + + do { + rc=getline line < InfoFile; + if ( rc>0 ) { + if ( substr(line, 1, 1)=="T" ) { + Title=substr(line, 3); + } else if ( substr(line, 1, 1)=="S" ) { + SubTitle=substr(line, 3); + } else if ( substr(line, 1, 1)=="D" ) { + + # D Horrorfilm, USA 1999||... + line=substr(line, 3); + # Horrorfilm, USA 1999||... + if (debug>2) printf("line3:%s\n", line) > "/dev/stderr"; + + if (debug>0) printf("Looking for values...\n") > "/dev/stderr"; + + # get Genre from tag (...|Genre: xxx|...) + Genre2=line; + if (debug>0) printf("Looking for Genre... ( tag '...|Genre: xxx|...' )\n") > "/dev/stderr"; + startIndex=index(Genre2, "|Genre: "); + if (startIndex>0) { + Genre3=substr(Genre2, startIndex+8); + if (debug>2) printf("c3 :%s\n", Genre3) > "/dev/stderr"; + stopIndex=index(Genre3, "|"); + if (stopIndex>1) { + Genre4=substr(Genre3, 0, stopIndex-1); + Genre=Genre4; + if (debug>1) printf("Found Genre: %s\n", Genre) > "/dev/stderr"; + } + } + + # get Year from tag (...|Year: xxx|...) + Year2=line; + if (debug>0) printf("Looking for Year... ( tag '...|Year: xxx|...' )\n") > "/dev/stderr"; + startIndex=index(Year2, "|Year: "); + if (startIndex>0) { + Year3=substr(Year2, startIndex+7); + if (debug>2) printf("y3 :%s\n", Year3) > "/dev/stderr"; + stopIndex=index(Year3, "|"); + if (stopIndex>1) { + Year4=substr(Year3, 0, stopIndex-1); + Year=Year4; + if (debug>1) printf("Found Year: %s\n", Year) > "/dev/stderr"; + } + } + + # get Country (and Year if not already filled) from tag (...|Land: XXX YYYY|...) + if(Country=="" || Year=="") { + Country2=line; + if (debug>0) printf("Looking for Country or Year... ( tag '...|Land: XXX YYYY|...' )\n") > "/dev/stderr"; + startIndex=index(Country2, "|Land: "); + if (startIndex>0) { + Country3=substr(Country2, startIndex+7); # USA 1999|... + if (debug>2) printf("c3 :%s\n", Country3) > "/dev/stderr"; + stopIndex=index(Country3, "|"); + if (stopIndex>1) { + Country4=substr(Country3, 0, stopIndex-1); # USA 1999 + if (debug>2) printf("c4 :%s\n", Country4) > "/dev/stderr"; + gsub(/^ +/, "", Country4); + gsub(/ +$/, "", Country4); + gsub(/ +/, " ", Country4); # USA 1999 + if (debug>2) printf("c5 :%s\n", Country4) > "/dev/stderr"; + n = split (Country4, F2, / *[, ] */ ); # split to 'USA' '1999' + for (i=1; i<=n; i++) { + if (match (F2[i], /^[0-9]+$/)) { # only digits + if (Year=="") { + Year = F2[i]; + if (debug>1) printf("Found Year: %s\n", Year) > "/dev/stderr"; + } + } else { + if (match (F2[i], /^[A-Z/]+$/)) { # only UPPERCASE + if (Country=="") { + Country = F2[i]; + if (debug>1) printf("Found Country: %s\n", Country) > "/dev/stderr"; + } + } + } + } + } + } + } + + + # if not filled already, get Genre, Country and Year from the beginning of the line (Horrorfilm, USA 1999||...) + if(Genre=="" || Country=="" || Year=="") { + if (debug>0) printf("Looking for Genre, Country or Year... ( tag 'D Horrorfilm, USA 1999||...' )\n") > "/dev/stderr"; + n = split (line, F1, "|"); + # F1[1]: Horrorfilm, USA 1999 + gsub(/^ +/, "", F1[1]); + gsub(/ +$/, "", F1[1]); + if (debug>2) printf("b1: F1[1]:%s\n", F1[1]) > "/dev/stderr"; + n = split (F1[1], F2, / *[, ] */ ); # split to 'Horrorfilm' 'USA' '1999' + for (i=1; i<=n; i++) { + if (debug>2) printf("b2: F2[%d]:%s\n", i, F2[i]) > "/dev/stderr"; + if (match (F2[i], /^[0-9]+$/)) { # only digits + if (Year=="") { + Year = F2[i]; + if (debug>1) printf("Found Year: %s\n", Year) > "/dev/stderr"; + } + } else { + if (match (F2[i], /^[A-Z/]+$/)) { # only UPPERCASE + if (Country=="") { + Country = F2[i]; + if (debug>1) printf("Found Country: %s\n", Country) > "/dev/stderr"; + } + } else { + if (Genre=="") { + Genre = F2[i]; + if (debug>1) printf("Found Genre: %s\n", Genre) > "/dev/stderr"; + } + } + } + } + } + + } else { + if (debug>2) printf("l :%s\n", line) > "/dev/stderr"; + } + } + } while (rc>0); +# close("/dev/stderr"); + + if (debug>0) { + printf("Title :%s\n", Title) > "/dev/stderr"; + printf("SubTitle :%s\n", SubTitle) > "/dev/stderr"; + printf("Genre :%s\n", Genre) > "/dev/stderr"; + printf("Country :%s\n", Country) > "/dev/stderr"; + printf("Year :%s\n", Year) > "/dev/stderr"; + printf("Length :%s\n", Length) > "/dev/stderr"; + printf("Date :%s\n", Date) > "/dev/stderr"; + printf("Size :%s\n", Size) > "/dev/stderr"; + printf("Media :%s\n", Media) > "/dev/stderr"; + printf("Path :%s\n\n\n", Path) > "/dev/stderr"; + } + + if (SubTitle != "") { + Title = Title": "SubTitle; + } + if (length(Title)>LenTitle) { Title = substr(Title, 1, LenTitle) }; + printf("%-"LenTitle"s%s", Title, Seperator); + + if (length(Genre)>LenGenre) { Genre = substr(Genre, 1, LenGenre) }; + printf("%-"LenGenre"s%s", Genre, Seperator); + + if (length(Media)>LenCountry) { Country = substr(Country, 1, LenCountry) }; + printf("%-"LenCountry"s%s", Country, Seperator); + + if (length(Year)>LenYear) { Year = substr(Year, length(Year)-LenYear+1, LenYear) }; + printf("%"LenYear"s%s", Year, Seperator); + + if (length(Media)>LenLength) { Length = substr(Length, length(Length)-LenLength+1, LenLength) }; + printf("%-"LenLength"s%s", Length, Seperator); + + if (length(Date)>LenDate) { Date = substr(Date, length(Date)-LenDate+1, LenDate) }; + printf("%"LenDate"s%s", Date, Seperator); + + if (length(Size)>LenSize) { Size = substr(Size, length(Size)-LenSize+1, LenSize) }; + printf("%"LenSize"s%s", Size, Seperator); + + if (length(Media)>LenMedia) { Media = substr(Media, length(Media)-LenMedia+1, LenMedia) }; + printf("%-"LenMedia"s%s", Media, Seperator); + + printf("%s\n", Path); + } else { + if (debug>1) printf("No regular recording. Ignoring.\n") > "/dev/stderr"; + } +} + +END { +}
\ No newline at end of file diff --git a/contrib/reclist/vdr_crop_output.sh b/contrib/reclist/vdr_crop_output.sh new file mode 100644 index 0000000..80df4f3 --- /dev/null +++ b/contrib/reclist/vdr_crop_output.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +PRGNAME=$(basename $0) + +usage() { + echo "usage: ${PRGNAME} (all|head|tail)" +} + +what=${1} +if [[ -z ${what} ]]; then + usage + exit +fi + + + +# set values for the positions of each column and the sortpositions +. vdr_set_values_for_recording_lists.sh + + + +# crop vertically / lines +if [ "$what" == "head" ] ; then + LINEFILTER=" head -n ${LINES_PER_PAGE} |" +elif [ "$what" == "tail" ] ; then + LINEFILTER=" tail -n ${LINES_PER_PAGE} |" +else + LINEFILTER="" +fi + + +COMMAND="cat /dev/stdin | ${LINEFILTER} cut -b 1-${CHARS_PER_LINE}" +#echo "cmd: ${COMMAND}" +eval "${COMMAND}" diff --git a/contrib/reclist/vdr_generate_recording_list.sh b/contrib/reclist/vdr_generate_recording_list.sh new file mode 100644 index 0000000..f49efa5 --- /dev/null +++ b/contrib/reclist/vdr_generate_recording_list.sh @@ -0,0 +1,194 @@ +#!/bin/bash + +usage() { + echo "usage: ${PRGNAME} <type> <what>" + echo " where <type> = (title|genre|country|year|length|date|size|media|path)" + echo " and <what> = (all|head|tail)" +} + +PRGNAME=$(basename $0) +type=${1} +what=${2} + +if [[ -z ${type} ]]; then + usage + exit +fi +if [[ -z ${what} ]]; then + usage + exit +fi + + + +# set values for the column length +. vdr_set_values_for_recording_lists.sh + + + +# crop vertically / lines per page +if [ "$what" == "head" ] ; then + LINEFILTER=" head -n ${LINES_PER_PAGE} |" +elif [ "$what" == "tail" ] ; then + LINEFILTER=" tail -n ${LINES_PER_PAGE} |" +else + LINEFILTER="" +fi + + + +if [ "$type" == "title" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k 1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$1; l1=32; \ + c2=\$2; l2=10; \ + c3=\$3; l3=3; \ + c4=\$4; l4=4; \ + c5=\$5; l5=4; \ + c6=\$8; l6=1; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6) ); \ + }'" + +elif [ "$type" == "genre" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k2,2 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$2; l1=20; \ + c2=\$1; l2=22; \ + c3=\$3; l3=3; \ + c4=\$4; l4=4; \ + c5=\$5; l5=4; \ + c6=\$8; l6=1; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6) ); \ + }'" + +elif [ "$type" == "country" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k3,3 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$3; l1=5; \ + c2=\$1; l2=30; \ + c3=\$2; l3=10; \ + c4=\$4; l4=4; \ + c5=\$5; l5=4; \ + c6=\$8; l6=1; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6) ); \ + }'" + +elif [ "$type" == "year" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -k4,4 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$4; l1=4; \ + c2=\$1; l2=32; \ + c3=\$2; l3=10; \ + c4=\$3; l4=3; \ + c5=\$5; l5=4; \ + c6=\$8; l6=1; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6) ); \ + }'" + +elif [ "$type" == "length" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k5,5 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$5; l1=4; \ + c2=\$1; l2=32; \ + c3=\$2; l3=10; \ + c4=\$3; l4=3; \ + c5=\$4; l5=4; \ + c6=\$8; l6=1; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6) ); \ + }'" + +elif [ "$type" == "date" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k6,6 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$6; l1=10; \ + c2=\$1; l2=22; \ + c3=\$2; l3=9; \ + c4=\$3; l4=3; \ + c5=\$4; l5=4; \ + c6=\$5; l6=4; \ + c7=\$8; l7=1; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6), \ + l7, substr(c7,1,l7) ); \ + }'" + +elif [ "$type" == "size" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -n -k7,7 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$7; l1=9; \ + c2=\$9; l2=49; \ + printf (\"%-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2) ); \ + }'" + +elif [ "$type" == "media" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k8,8 -k1,1 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$8; l1=8; \ + c2=\$1; l2=25; \ + c3=\$2; l3=10; \ + c4=\$3; l4=3; \ + c5=\$4; l5=4; \ + c6=\$5; l6=4; \ + printf (\"%-*s %-*s %-*s %-*s %-*s %-*s\n\", \ + l1, substr(c1,1,l1), \ + l2, substr(c2,1,l2), \ + l3, substr(c3,1,l3), \ + l4, substr(c4,1,l4), \ + l5, substr(c5,1,l5), \ + l6, substr(c6,1,l6) ); \ + }'" + +elif [ "$type" == "path" ] ; then + COMMAND="cat ${RECLISTDIR}/${RECLISTFILE} | sort -t'|' -d -b -f -k9,9 | ${LINEFILTER} awk ' \ + BEGIN{FS=\"|\"} { \ + c1=\$9; l1=59; \ + printf (\"%-*s\n\", \ + l1, substr(c1,1,l1) ); \ + }'" + +fi + + +# crop horizontally / chars per line +COMMAND="${COMMAND} | cut -b 1-${CHARS_PER_LINE}" + + +#echo "cmd: ${COMMAND}" +eval "${COMMAND}" diff --git a/contrib/reclist/vdr_get_recordings.sh b/contrib/reclist/vdr_get_recordings.sh new file mode 100644 index 0000000..7e5a5ba --- /dev/null +++ b/contrib/reclist/vdr_get_recordings.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# set values for the length of each column +. vdr_set_values_for_recording_lists.sh + +#echo "LEN_TITLE : ${LEN_TITLE}" +#echo "LEN_GENRE : ${LEN_GENRE}" +#echo "LEN_COUNTRY : ${LEN_COUNTRY}" +#echo "LEN_YEAR : ${LEN_YEAR}" +#echo "LEN_LENGTH : ${LEN_LENGTH}" +#echo "LEN_DATE : ${LEN_DATE}" +#echo "LEN_SIZE : ${LEN_SIZE}" +#echo "LEN_MEDIA : ${LEN_MEDIA}" +#echo "LEN_PATH : ${LEN_PATH}" + +#echo "VIDEODIR : ${VIDEODIR}" + +# find the info.vdr files and let awk create a recording list entry +rm ${RECLISTDIR}/${RECLISTFILE} 2>/dev/null + +find ${VIDEODIR} -name 'info.vdr' -exec vdr_add_recording.sh \{\} \; +find ${VIDEODIR} -name 'info' -exec vdr_add_recording.sh \{\} \; + +#find ${VIDEODIR} -name info.vdr -exec echo "{}" \; | \ +# awk -f /usr/local/bin/vdr_create_recording_list_entry.awk basedir="${VIDEODIR}" Seperator="${SEPERATOR}" \ +# LenTitle="${LEN_TITLE}" \ +# LenGenre="${LEN_GENRE}" \ +# LenCountry="${LEN_COUNTRY}" \ +# LenYear="${LEN_YEAR}" \ +# LenLength="${LEN_LENGTH}" \ +# LenDate="${LEN_DATE}" \ +# LenSize="${LEN_SIZE}" \ +# LenMedia="${LEN_MEDIA}" >> ${RECLISTDIR}/${RECLISTFILE}
\ No newline at end of file diff --git a/contrib/reclist/vdr_set_values_for_recording_lists.sh b/contrib/reclist/vdr_set_values_for_recording_lists.sh new file mode 100644 index 0000000..0a23d74 --- /dev/null +++ b/contrib/reclist/vdr_set_values_for_recording_lists.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +source /etc/conf.d/vdr +export VIDEODIR="${VIDEO}/" +export RECLISTDIR="$(dirname ${EPGFILE})/" +#export RECLISTDIR="/root/t/" +export RECLISTFILE="vdr_recordings.lst" + +PAGE_WIDTH=1139 +PAGE_HEIGHT=395 +FONTFIXSIZE=$[$(grep "FontFixSize " /etc/vdr/setup.conf | awk 'BEGIN{FS="="}{print $2}')] + +#export CHARS_PER_LINE=$[${PAGE_WIDTH}/(${FONTFIXSIZE}+1)] +export CHARS_PER_LINE=59 +#echo "CHARS_PER_LINE: ${CHARS_PER_LINE}" +#export LINES_PER_PAGE=$[${PAGE_HEIGHT}/${FONTFIXSIZE}] +export LINES_PER_PAGE=21 +#echo "LINES_PER_PAGE: ${LINES_PER_PAGE}" + + +export SEPERATOR="|" + + +export LEN_TITLE=50 +export LEN_GENRE=20 +export LEN_COUNTRY=8 +export LEN_YEAR=4 +export LEN_LENGTH=4 +export LEN_DATE=10 +export LEN_SIZE=9 +export LEN_MEDIA=8 diff --git a/extrecmenu.c b/extrecmenu.c index d1f8d54..df6ade7 100644 --- a/extrecmenu.c +++ b/extrecmenu.c @@ -6,12 +6,21 @@ #include <vdr/plugin.h> #include "mymenusetup.h" #include "mymenurecordings.h" -#include "i18n.h" #include "tools.h" +#if defined(APIVERSNUM) +# if APIVERSNUM < 10600 +# error "VDR-1.6.0 API version or greater is required!" +# else +# if APIVERSNUM >= 10700 && APIVERSNUM < 10714 +# error "VDR-1.7.14 API version or greater is required!" +# endif +# endif +#endif + using namespace std; -static const char *VERSION = "1.2"; +static const char *VERSION = "1.2.1pre"; static const char *DESCRIPTION = tr("Extended recordings menu"); static const char *MAINMENUENTRY = "ExtRecMenu"; @@ -60,8 +69,6 @@ bool cPluginExtrecmenu::ProcessArgs(int /* argc */,char ** /* argv */) bool cPluginExtrecmenu::Initialize(void) { - RegisterI18n(Phrases); - return true; } @@ -69,7 +76,7 @@ bool cPluginExtrecmenu::Start(void) { mySortList=new SortList; mySortList->ReadConfigFile(); - + Icons::InitCharSet(); MoveCutterThread=new WorkerThread(); @@ -115,6 +122,8 @@ bool cPluginExtrecmenu::SetupParse(const char *_Name,const char *Value) mysetup.ShowRecTime=atoi(Value); else if(!strcasecmp(_Name,"ShowRecLength")) mysetup.ShowRecLength=atoi(Value); + else if(!strcasecmp(_Name,"ShowRecRating")) + mysetup.ShowRecRating=atoi(Value); else if(!strcasecmp(_Name,"HideMainMenuEntry")) mysetup.HideMainMenuEntry=atoi(Value); else if(!strcasecmp(_Name,"ReplaceOrgRecMenu")) diff --git a/mymenucommands.c b/mymenucommands.c index ef81fc5..9122cd5 100644 --- a/mymenucommands.c +++ b/mymenucommands.c @@ -9,15 +9,15 @@ #include <vdr/interface.h> #include "mymenucommands.h" -#if VDRVERSNUM >= 10713 -myMenuCommands::myMenuCommands(const char *Title,cList<cNestedItem> *_Commands,const char *Parameters):cOsdMenu(Title) +#if VDRVERSNUM > 10713 +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) +myMenuCommands::myMenuCommands(const char *_Title,cCommands *_Commands, const char *Parameters):cOsdMenu(_Title) #endif { SetHasHotkeys(); commands=_Commands; -#if VDRVERSNUM >= 10713 +#if VDRVERSNUM > 10713 result=NULL; parameters=Parameters; for(cNestedItem *Command=commands->First();Command;Command=commands->Next(Command)) { @@ -36,14 +36,14 @@ myMenuCommands::myMenuCommands(const char *Title,cCommands *_Commands,const char myMenuCommands::~myMenuCommands() { -#if VDRVERSNUM >= 10713 +#if VDRVERSNUM > 10713 free(result); #else free(parameters); #endif } -#if VDRVERSNUM >= 10713 +#if VDRVERSNUM > 10713 bool myMenuCommands::Parse(const char *s) { const char *p=strchr(s,':'); @@ -66,7 +66,9 @@ bool myMenuCommands::Parse(const char *s) } return false; } +#endif +#if VDRVERSNUM > 10713 eOSState myMenuCommands::Execute() { cNestedItem *Command=commands->Get(Current()); @@ -107,32 +109,38 @@ eOSState myMenuCommands::Execute() } return osContinue; } -#else //VDRVERSNUM < 10713 +#else eOSState myMenuCommands::Execute() { cCommand *command=commands->Get(Current()); if(command) { char *buffer=NULL; - bool confirmed=true; + bool confirmed=false; #ifdef CMDSUBMENUVERSNUM - if (command->hasChilds()) { + if (command->hasChilds()) + { AddSubMenu(new myMenuCommands(command->Title(), command->getChilds(), parameters)); return osContinue; } #endif - if(command->Confirm()) { - asprintf(&buffer,"%s?",command->Title()); - confirmed=Interface->Confirm(buffer); - free(buffer); + if(command->Confirm()) + { + if(asprintf(&buffer,"%s?",command->Title())!=-1) + { + confirmed=Interface->Confirm(buffer); + free(buffer); + } } if(confirmed) { - asprintf(&buffer, "%s...",command->Title()); - Skins.Message(mtStatus,buffer); - free(buffer); + if(asprintf(&buffer, "%s...",command->Title())!=-1) + { + Skins.Message(mtStatus,buffer); + free(buffer); + } const char *Result=command->Execute(parameters); - Skins.Message(mtStatus, NULL); + Skins.Message(mtStatus,NULL); if(Result) return AddSubMenu(new cMenuText(command->Title(),Result,fontFix)); return osEnd; @@ -140,7 +148,6 @@ eOSState myMenuCommands::Execute() } return osContinue; } - #endif eOSState myMenuCommands::ProcessKey(eKeys Key) diff --git a/mymenucommands.h b/mymenucommands.h index 7ba3f01..1ab84d9 100644 --- a/mymenucommands.h +++ b/mymenucommands.h @@ -1,7 +1,7 @@ class myMenuCommands:public cOsdMenu { private: -#if VDRVERSNUM >= 10713 +#if VDRVERSNUM > 10713 cList<cNestedItem> *commands; cString parameters; cString title; @@ -15,7 +15,7 @@ class myMenuCommands:public cOsdMenu #endif eOSState Execute(void); public: -#if VDRVERSNUM >= 10713 +#if VDRVERSNUM > 10713 myMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters = NULL); #else myMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL); diff --git a/mymenueditrecording.c b/mymenueditrecording.c index bf05140..135fd5e 100644 --- a/mymenueditrecording.c +++ b/mymenueditrecording.c @@ -30,13 +30,13 @@ myMenuRenameRecording::myMenuRenameRecording(cRecording *Recording,const char *D { strn0cpy(name,++p,sizeof(name)); strn0cpy(path,recording->Name(),sizeof(path)); - + p=strrchr(path,'~'); if(p) *p=0; } else - strn0cpy(name,recording->Name(),sizeof(name)); + strn0cpy(name,recording->Name(),sizeof(name)); } else { @@ -45,7 +45,7 @@ myMenuRenameRecording::myMenuRenameRecording(cRecording *Recording,const char *D if(DirBase) strn0cpy(path,DirBase,sizeof(path)); } - Add(new cMenuEditStrItem(trVDR("Name"),name,sizeof(name),tr(FileNameChars))); + Add(new cMenuEditStrItem(trVDR("Name"),name,sizeof(name),trVDR(FileNameChars))); cRemote::Put(kRight); } @@ -75,26 +75,36 @@ eOSState myMenuRenameRecording::ProcessKey(eKeys Key) } if(isdir) - asprintf(&oldname,"%s%s%s/%s",VideoDirectory,tmppath?"/":"",dirbase?dirbase:"",dirname); + { + if(-1==asprintf(&oldname,"%s%s%s/%s",VideoDirectory,tmppath?"/":"",dirbase?dirbase:"",dirname)) + oldname=NULL; + } else oldname=strdup(recording->FileName()); - asprintf(&newname,"%s%s%s/%s%s",VideoDirectory,tmppath?"/":"",tmppath?tmppath:"",tmpname,isdir?"":strrchr(recording->FileName(),'/')); - - if(!MakeDirs(newname,true)) - Skins.Message(mtError,tr("Creating directories failed!")); - else + if(oldname) { - if(MoveRename(oldname,newname,isdir?NULL:recording,false)) - state=osBack; - else + if(-1==asprintf(&newname,"%s%s%s/%s%s",VideoDirectory,tmppath?"/":"",tmppath?tmppath:"",tmpname,isdir?"":strrchr(recording->FileName(),'/'))) + newname=NULL; + + if(newname) { - cRemote::Put(kRight); - state=osContinue; + if(!MakeDirs(newname,true)) + Skins.Message(mtError,tr("Creating directories failed!")); + else + { + if(MoveRename(oldname,newname,isdir?NULL:recording,false)) + state=osBack; + else + { + cRemote::Put(kRight); + state=osContinue; + } + } + free(newname); } + free(oldname); } - free(oldname); - free(newname); free(tmppath); free(tmpname); } @@ -120,14 +130,14 @@ class myMenuNewName:public cOsdMenu myMenuNewName::myMenuNewName():cOsdMenu(tr("New folder"),12) { strn0cpy(name,tr("New folder"),sizeof(name)); - Add(new cMenuEditStrItem(trVDR("Name"),name,sizeof(name),tr(FileNameChars))); + Add(new cMenuEditStrItem(trVDR("Name"),name,sizeof(name),trVDR(FileNameChars))); cRemote::Put(kRight); } eOSState myMenuNewName::ProcessKey(eKeys Key) { eOSState state=cOsdMenu::ProcessKey(Key); - + if(state==osContinue) { if(Key==kOk) @@ -147,7 +157,7 @@ eOSState myMenuNewName::ProcessKey(eKeys Key) if(Key==kBack) state=osBack; } - + return state; } @@ -211,7 +221,7 @@ myMenuMoveRecording::myMenuMoveRecording(cRecording *Recording,const char *DirBa strn0cpy(newname,"",sizeof(newname)); recording=Recording; base=Base?strdup(Base):NULL; - + level=Level; Set(); SetHelp(tr("Button$Cancel"),NULL,tr("Button$Create"),tr("Button$Move")); @@ -290,143 +300,165 @@ eOSState myMenuMoveRecording::MoveRec() char *dir=NULL; char *tmpdirbase=dirbase?ExchangeChars(strdup(dirbase),true):NULL; char *tmpdirname=dirname?ExchangeChars(strdup(dirname),true):NULL; - + eOSState state=osContinue; if(dirname) - asprintf(&oldname,"%s%s%s/%s",VideoDirectory,dirbase?"/":"",tmpdirbase?tmpdirbase:"",tmpdirname); + { + if(-1==asprintf(&oldname,"%s%s%s/%s",VideoDirectory,dirbase?"/":"",tmpdirbase?tmpdirbase:"",tmpdirname)) + oldname=NULL; + } else oldname=strdup(recording->FileName()); - myMenuMoveRecordingItem *item=(myMenuMoveRecordingItem*)Get(Current()); - if(item) + if(oldname) { - if(strcmp(tr("[base dir]"),item->Text())) + myMenuMoveRecordingItem *item=(myMenuMoveRecordingItem*)Get(Current()); + if(item) { - if(dirname) - asprintf(&dir,"%s%s%s",base?base:"",base?"~":"",item->Text()); - else // needed for move recording menu + if(strcmp(tr("[base dir]"),item->Text())) { - const char *p=strrchr(recording->Name(),'~'); - asprintf(&dir,"%s%s%s~%s",base?base:"",base?"~":"",item->Text(),p?p+1:recording->Name()); + if(dirname) + { + if(-1==asprintf(&dir,"%s%s%s",base?base:"",base?"~":"",item->Text())) + dir=NULL; + } + else // needed for move recording menu + { + const char *p=strrchr(recording->Name(),'~'); + if(-1==asprintf(&dir,"%s%s%s~%s",base?base:"",base?"~":"",item->Text(),p?p+1:recording->Name())) + dir=NULL; + } + } + else + { + if(!dirname) + { + const char *p=strrchr(recording->Name(),'~'); + if(-1==asprintf(&dir,"%s",p?++p:recording->Name())) + dir=NULL; + } } } else { - if(!dirname) + if(dirname) + { + if(-1==asprintf(&dir,"%s",base)) + dir=NULL; + } + else { const char *p=strrchr(recording->Name(),'~'); - asprintf(&dir,"%s",p?++p:recording->Name()); + if(-1==asprintf(&dir,"%s~%s",base,p?p:recording->Name())) + dir=NULL; } } - } - else - { - if(dirname) - asprintf(&dir,"%s",base); - else - { - const char *p=strrchr(recording->Name(),'~'); - asprintf(&dir,"%s~%s",base,p?p:recording->Name()); - } - } - if(dir) - dir=ExchangeChars(dir,true); - - asprintf(&_newname,"%s%s%s%s",VideoDirectory,dir?"/":"",dir?dir:"",strrchr(dirname?oldname:recording->FileName(),'/')); - - // getting existing part of target path - string path=_newname; - string::size_type pos=string::npos; - do - pos=path.rfind('/',pos)-1; - while(access(path.substr(0,pos+1).c_str(),R_OK)); - - path=path.substr(0,pos+1); - - struct stat stat1,stat2; - stat(oldname,&stat1); - stat(path.c_str(),&stat2); - // are source and target at the same filesystem? - if(stat1.st_dev==stat2.st_dev) - { - if(MoveRename(oldname,_newname,dirname?NULL:recording,true)) - { - clearall=true; - state=osBack; - } - } - else - { - struct statvfs fsstat; - if(!statvfs(path.c_str(),&fsstat)) - { - int freemb=int((double)fsstat.f_bavail/(1024.0*1024.0/fsstat.f_bsize)); - int recmb=0; + if(dir) + dir=ExchangeChars(dir,true); + + if(-1==asprintf(&_newname,"%s%s%s%s",VideoDirectory,dir?"/":"",dir?dir:"",strrchr(dirname?oldname:recording->FileName(),'/'))) + _newname=NULL; - // moving a single recording - if(recording) + if(_newname) + { + // getting existing part of target path + string path=_newname; + string::size_type pos=string::npos; + do + pos=path.rfind('/',pos)-1; + while(access(path.substr(0,pos+1).c_str(),R_OK)); + + path=path.substr(0,pos+1); + + struct stat stat1,stat2; + stat(oldname,&stat1); + stat(path.c_str(),&stat2); + // are source and target at the same filesystem? + if(stat1.st_dev==stat2.st_dev) { - recmb=DirSizeMB(recording->FileName()); - if(freemb-recmb > 0 || Interface->Confirm(tr("Target filesystem filled - try anyway?"))) + if(MoveRename(oldname,_newname,dirname?NULL:recording,true)) { - MoveCutterThread->AddToMoveList(oldname,_newname); clearall=true; state=osBack; } } - // moving a directory else { - string buf=oldname; - buf+="/"; - if(!buf.compare(0,buf.length(),_newname)) - Skins.Message(mtError,tr("Moving into own sub-directory not allowed!")); - else + struct statvfs fsstat; + if(!statvfs(path.c_str(),&fsstat)) { - cThreadLock RecordingsLock(&Recordings); - for(cRecording *rec=Recordings.First();rec;rec=Recordings.Next(rec)) + int freemb=int((double)fsstat.f_bavail/(1024.0*1024.0/fsstat.f_bsize)); + int recmb=0; + + // moving a single recording + if(recording) { - if(!strncmp(oldname,rec->FileName(),strlen(oldname))) - recmb+=DirSizeMB(rec->FileName()); + recmb=DirSizeMB(recording->FileName()); + if(freemb-recmb > 0 || Interface->Confirm(tr("Target filesystem filled - try anyway?"))) + { + MoveCutterThread->AddToMoveList(oldname,_newname); + clearall=true; + state=osBack; + } } - - if(freemb-recmb > 0 || Interface->Confirm(tr("Target filesystem filled - try anyway?"))) + // moving a directory + else { - for(cRecording *rec=Recordings.First();rec;rec=Recordings.Next(rec)) + string buf=oldname; + buf+="/"; + if(!buf.compare(0,buf.length(),_newname)) + Skins.Message(mtError,tr("Moving into own sub-directory not allowed!")); + else { - if(!strncmp(oldname,rec->FileName(),strlen(oldname))) + cThreadLock RecordingsLock(&Recordings); + for(cRecording *rec=Recordings.First();rec;rec=Recordings.Next(rec)) + { + if(!strncmp(oldname,rec->FileName(),strlen(oldname))) + recmb+=DirSizeMB(rec->FileName()); + } + + if(freemb-recmb > 0 || Interface->Confirm(tr("Target filesystem filled - try anyway?"))) { - char *_buf=ExchangeChars(strdup(oldname+strlen(VideoDirectory)+1),false); - - if(strcmp(rec->Name(),_buf)) + for(cRecording *rec=Recordings.First();rec;rec=Recordings.Next(rec)) { - free(_buf); - asprintf(&_buf,"%s%s",_newname,rec->FileName()+strlen(oldname)); - - MoveCutterThread->AddToMoveList(rec->FileName(),_buf); + if(!strncmp(oldname,rec->FileName(),strlen(oldname))) + { + char *_buf=ExchangeChars(strdup(oldname+strlen(VideoDirectory)+1),false); + + if(strcmp(rec->Name(),_buf)) + { + free(_buf); + if(-1==asprintf(&_buf,"%s%s",_newname,rec->FileName()+strlen(oldname))) + _buf=NULL; + + if(_buf) + MoveCutterThread->AddToMoveList(rec->FileName(),_buf); + } + free(_buf); + _buf=NULL; + } } - free(_buf); + clearall=true; + state=osBack; } } - clearall=true; - state=osBack; } } + else + { + Skins.Message(mtError,tr("Can't get filesystem information")); + esyslog("[extrecmenu] %s",strerror(errno)); + } } + free(_newname); } - else - { - Skins.Message(mtError,tr("Can't get filesystem information")); - esyslog("[extrecmenu] %s",strerror(errno)); - } + free(oldname); } - free(oldname); - free(_newname); free(dir); free(tmpdirbase); free(tmpdirname); - + return state; } @@ -438,7 +470,7 @@ eOSState myMenuMoveRecording::Create() eOSState myMenuMoveRecording::ProcessKey(eKeys Key) { eOSState state=cOsdMenu::ProcessKey(Key); - + if(state==osUnknown) { switch(Key) @@ -482,19 +514,75 @@ eOSState myMenuRecordingDetails::ProcessKey(eKeys Key) { if(Key==kOk) { - char *oldname=strdup(recording->FileName()); - char *_newname=strdup(recording->FileName()); + if((priority!=recording->priority)||(lifetime!=recording->lifetime)) + { +#if VDRVERSNUM > 10713 + if(recording->IsPesRecording()) +#endif + { + char *oldname=strdup(recording->FileName()); + char *_newname=strdup(recording->FileName()); - sprintf(_newname+strlen(_newname)-9,"%02d.%02d.rec",priority,lifetime); + sprintf(_newname+strlen(_newname)-9,"%02d.%02d.rec",priority,lifetime); - if(MoveRename(oldname,_newname,recording,false)) - state=osBack; - else - state=osContinue; + if(MoveRename(oldname,_newname,recording,false)) + state=osBack; + else + state=osContinue; - free(oldname); - free(_newname); + free(oldname); + free(_newname); + } +#if VDRVERSNUM > 10713 + else + { + cString buffer = cString::sprintf("P %d\nL %d", priority, lifetime); + if(ModifyInfo(recording,*buffer)) + { + cString fileName = recording->FileName(); + Recordings.Del(recording); + Recordings.AddByName(*fileName); + state=osBack; + } + else + state=osContinue; + } +#endif + } + else + state=osBack; } } return state; } + +#define INFOFILE_PES "info.vdr" +#define INFOFILE_TS "info" +bool myMenuRecordingDetails::ModifyInfo(cRecording *Recording, const char *Info) +{ //This has been taken from remotetimers-0.1.3, written by Frank Schmirler <vdrdev@schmirler.de> + + // check for write access as cRecording::WriteInfo() always returns true + // TODO: writing may still fail as access() doesn't use the effective UID +#if VDRVERSNUM > 10713 + cString InfoFileName=cString::sprintf(Recording->IsPesRecording()?"%s/"INFOFILE_PES:"%s/"INFOFILE_TS,Recording->FileName()); +#else + cString InfoFileName=cString::sprintf("%s/"INFOFILE_PES,Recording->FileName()); +#endif + if(access(InfoFileName,W_OK)==0) + { + FILE *f=fmemopen((void *)Info,strlen(Info)*sizeof(char),"r"); + if(f) + { + // Casting const away is nasty, but what the heck? + // The Recordings thread is locked and the object is going to be deleted anyway. + if(((cRecordingInfo *)Recording->Info())->Read(f)&&Recording->WriteInfo()) + return true; + esyslog("[extrecmenu] error in info string '%s'",Info); + } + else + esyslog("[extrecmenu] error in fmemopen: %m"); + } + else + esyslog("[extrecmenu] '%s' not writeable: %m",*InfoFileName); + return false; +} diff --git a/mymenurecordings.c b/mymenurecordings.c index c5bdfef..48a9d86 100644 --- a/mymenurecordings.c +++ b/mymenurecordings.c @@ -74,7 +74,7 @@ void myMenuRecordingInfo::Display(void) if(recording->Info()->Description()) text << recording->Info()->Description() << "\n\n"; } - + string recname=recording->Name(); string::size_type i=recname.rfind('~'); if(i!=string::npos) @@ -82,7 +82,7 @@ void myMenuRecordingInfo::Display(void) << tr("Path") << ": " << recname.substr(0,i) << "\n"; else text << tr("Name") << ": " << recname << "\n"; - + cChannel *chan=Channels.GetByChannelID(((cRecordingInfo*)recording->Info())->ChannelID()); if(chan) text << tr("Channel") << ": " << *ChannelString(chan,0) << "\n"; @@ -143,13 +143,15 @@ myMenuRecordingsItem::myMenuRecordingsItem(cRecording *Recording,int Level) { totalentries=newentries=0; isdvd=false; + ishdd=false; dirismoving=true; name=NULL; filename=Recording->FileName(); -#if VDRVERSNUM >= 10703 +#if VDRVERSNUM > 10713 isPesRecording=Recording->IsPesRecording(); +#else + isPesRecording=true; #endif - // get the level of this recording level=0; const char *s=Recording->Name(); @@ -188,27 +190,29 @@ myMenuRecordingsItem::myMenuRecordingsItem(cRecording *Recording,int Level) string buffer; stringstream titlebuffer; stringstream idbuffer; - + buffer=filename; -#if VDRVERSNUM > 10703 if (isPesRecording) buffer+="/001.vdr"; else buffer+="/00001.ts"; -#else - buffer+="/001.vdr"; -#endif + if(access(buffer.c_str(),R_OK)) { buffer=filename; buffer+="/dvd.vdr"; isdvd=!access(buffer.c_str(),R_OK); + buffer=filename; + buffer+="/hdd.vdr"; + ishdd=!access(buffer.c_str(),R_OK); } - + if(MoveCutterThread->IsMoving(filename)) titlebuffer << Icons::MovingRecording(); // moving recording else if(isdvd) titlebuffer << Icons::DVD(); // archive dvd + else if(ishdd) + titlebuffer << Icons::HDD(); // archive hdd else if(MoveCutterThread->IsCutting(filename)) titlebuffer << Icons::Scissor(); // cutting recording else if(Recording->IsNew() && !mysetup.PatchNew) @@ -216,23 +220,23 @@ myMenuRecordingsItem::myMenuRecordingsItem(cRecording *Recording,int Level) else if(!Recording->IsNew() && mysetup.PatchNew) titlebuffer << Icons::Continue(); // alternative to new marker / rewind / continue else titlebuffer << ' '; // no icon - + titlebuffer << '\t'; - + // date and time of recording struct tm tm_r; struct tm *t=localtime_r(&Recording->start,&tm_r); - + if(mysetup.ShowRecDate) titlebuffer << setw(2) << setfill('0') << t->tm_mday << '.' << setw(2) << setfill('0') << t->tm_mon+1 << '.' << setw(2) << setfill('0') << t->tm_year%100 << '\t'; - + if(mysetup.ShowRecTime) titlebuffer << setw(2) << setfill('0') << t->tm_hour << '.' << setw(2) << setfill('0') << t->tm_min << '\t'; - - + + idbuffer << t->tm_mday << t->tm_mon << t->tm_year << t->tm_hour << t->tm_min; @@ -240,14 +244,11 @@ myMenuRecordingsItem::myMenuRecordingsItem(cRecording *Recording,int Level) if(mysetup.ShowRecLength) { buffer=filename; -#if VDRVERSNUM > 10703 if (isPesRecording) buffer+="/index.vdr"; else buffer+="/index"; -#else - buffer+="/index.vdr"; -#endif + struct stat statbuf; if(!stat(buffer.c_str(),&statbuf)) { @@ -261,29 +262,72 @@ myMenuRecordingsItem::myMenuRecordingsItem(cRecording *Recording,int Level) // get recording length from file 'length.vdr' buffer=filename; buffer+="/length.vdr"; - + ifstream in(buffer.c_str()); if(in) { if(!in.eof()) getline(in,buffer); - + buffer+="'"; // replace leading spaces with fixed blank (right align) while(buffer.length()<=3) buffer.insert(0,Icons::FixedBlank()); titlebuffer << buffer << '\t'; - + in.close(); } else titlebuffer << '\t'; } } - if(!mysetup.ShowRecDate && !mysetup.ShowRecTime && !mysetup.ShowRecLength) + + // recording rating + if(mysetup.ShowRecRating) + { + // get recording rating from file 'rated.vdr' + buffer=filename; + buffer+="/rated.vdr"; + + ifstream in(buffer.c_str()); + if(in) + { + if(!in.eof()) + getline(in,buffer); + int rated=atoi(buffer.c_str()); + buffer=""; + if (rated>10) + rated=10; + + int cstar=0; + if (rated>0) { + while (rated>1) { + buffer += Icons::StarFull(); + rated = rated-2; + cstar++; + } + if (rated>0) { + buffer += Icons::StarHalf(); + rated--; + cstar++; + } + } + while (cstar<5) { + buffer += Icons::FixedBlank(); + cstar++; + } + titlebuffer << buffer; + + in.close(); + } + + titlebuffer << '\t'; + } + + if(!mysetup.ShowRecDate && !mysetup.ShowRecTime && !mysetup.ShowRecLength && !mysetup.ShowRecRating) titlebuffer << '\t'; - + // recording title string _s=Recording->Name(); string::size_type i=_s.rfind('~'); @@ -297,7 +341,7 @@ myMenuRecordingsItem::myMenuRecordingsItem(cRecording *Recording,int Level) titlebuffer << _s; idbuffer << _s; } - + title=strdup(titlebuffer.str().c_str()); uniqid=idbuffer.str(); } @@ -321,7 +365,7 @@ void myMenuRecordingsItem::IncrementCounter(bool IsNew) totalentries++; if(IsNew) newentries++; - + char *buffer=NULL; ostringstream entries; @@ -329,30 +373,33 @@ void myMenuRecordingsItem::IncrementCounter(bool IsNew) if(mysetup.ShowNewRecs) { - asprintf(&buffer,"%s\t%s (%d)%s%s%s%s%s", - GetDirIsMoving()?Icons::MovingDirectory():Icons::Directory(), - // replace leading spaces with fixed blank (right align) - myStrReplace(entries.str(),' ',Icons::FixedBlank()).c_str(), - newentries, - (!mysetup.ShowRecDate&&!mysetup.ShowRecTime&&!mysetup.ShowRecLength)?"\t":"", - (mysetup.ShowRecDate||mysetup.ShowRecTime||mysetup.ShowRecLength)?"\t":"", - ((mysetup.ShowRecDate&&mysetup.ShowRecTime)||(mysetup.ShowRecTime&&mysetup.ShowRecLength)||(mysetup.ShowRecLength&&mysetup.ShowRecDate))?"\t":"", - (mysetup.ShowRecDate&&mysetup.ShowRecTime&&mysetup.ShowRecLength)?"\t":"", - name); + if(-1==asprintf(&buffer,"%s\t%s (%d)%s%s%s%s%s", + GetDirIsMoving()?Icons::MovingDirectory():Icons::Directory(), + // replace leading spaces with fixed blank (right align) + myStrReplace(entries.str(),' ',Icons::FixedBlank()).c_str(), + newentries, + mysetup.ShowRecDate||mysetup.ShowOnlyRecs?"\t":"", + mysetup.ShowRecTime?"\t":"", + mysetup.ShowRecLength?"\t":"", + mysetup.ShowRecRating?"\t":"", + name)) + buffer=NULL; } else { - asprintf(&buffer,"%s\t%s%s%s%s%s%s", - GetDirIsMoving()?Icons::MovingDirectory():Icons::Directory(), - // replace leading spaces with fixed blank (right align) - myStrReplace(entries.str(),' ',Icons::FixedBlank()).c_str(), - (!mysetup.ShowRecDate&&!mysetup.ShowRecTime&&!mysetup.ShowRecLength)?"\t":"", - (mysetup.ShowRecDate||mysetup.ShowRecTime||mysetup.ShowRecLength)?"\t":"", - ((mysetup.ShowRecDate&&mysetup.ShowRecTime)||(mysetup.ShowRecTime&&mysetup.ShowRecLength)||(mysetup.ShowRecLength&&mysetup.ShowRecDate))?"\t":"", - (mysetup.ShowRecDate&&mysetup.ShowRecTime&&mysetup.ShowRecLength)?"\t":"", - name); + if(-1==asprintf(&buffer,"%s\t%s%s%s%s%s%s", + GetDirIsMoving()?Icons::MovingDirectory():Icons::Directory(), + // replace leading spaces with fixed blank (right align) + myStrReplace(entries.str(),' ',Icons::FixedBlank()).c_str(), + mysetup.ShowRecDate||mysetup.ShowOnlyRecs?"\t":"", + mysetup.ShowRecTime?"\t":"", + mysetup.ShowRecLength?"\t":"", + mysetup.ShowRecRating?"\t":"", + name)) + buffer=NULL; } - SetText(buffer,false); + if(buffer) + SetText(buffer,false); } // --- myMenuRecordings ------------------------------------------------------- @@ -360,27 +407,52 @@ void myMenuRecordingsItem::IncrementCounter(bool IsNew) bool myMenuRecordings::golastreplayed=false; bool myMenuRecordings::wasdvd; +bool myMenuRecordings::washdd; dev_t myMenuRecordings::fsid=0; int myMenuRecordings::freediskspace=0; myMenuRecordings::myMenuRecordings(const char *Base,int Level):cOsdMenu("") { - // set tabs - if(mysetup.ShowRecDate&&mysetup.ShowRecTime&&!mysetup.ShowRecLength) // recording date and time are shown, recording length not - SetCols(2,8,6); - else if(mysetup.ShowRecDate&&mysetup.ShowRecTime) // all details are shown - SetCols(2,8,6,4); - else if(mysetup.ShowRecDate&&!mysetup.ShowRecTime) // recording time is not shown - SetCols(2,8,4); - else if(!mysetup.ShowRecDate&&mysetup.ShowRecTime&&mysetup.ShowRecLength) // recording date is not shown - SetCols(2,6,4); - else // recording date and time are not shown; even if recording length should be not shown we must set two tabs because of the details of the directories - { - if(mysetup.ShowNewRecs) - SetCols(2,8,3); - else - SetCols(2,4,3); - } + mysetup.ShowOnlyRecs=false; + int c[5],i=0; + for (i=0; i<5; i++) c[i]=0; + + // set first tab to 2 + i=0; + c[i]=2;//2; + + if(mysetup.ShowRecDate) + { + i++; + c[i]=8; + } + if(mysetup.ShowRecTime) + { + i++; + c[i]=6; + } + if(mysetup.ShowRecLength) + { + i++; + c[i]=4; + } + if(mysetup.ShowRecRating) + { + i++; + c[i]=8;//5; + } + if(i==0) + { // only icon and name colums: add column for number of recordings in folders + i++; + c[i]=(mysetup.ShowNewRecs?9:3); + mysetup.ShowOnlyRecs=true; + } + else + { // make the first column wide enough + c[1]=std::max(c[1],(mysetup.ShowNewRecs?9:3)); + } + + SetCols(c[0], c[1], c[2], c[3], c[4]); edit=false; level=Level; @@ -394,23 +466,44 @@ myMenuRecordings::myMenuRecordings(const char *Base,int Level):cOsdMenu("") if(wasdvd&&!cControl::Control()) { char *cmd=NULL; - asprintf(&cmd,"dvdarchive.sh umount \"%s\"",*strescape(myReplayControl::LastReplayed(),"'\\\"$")); - isyslog("[extrecmenu] calling %s to unmount dvd",cmd); - int result=SystemExec(cmd); - if(result) + if(-1!=asprintf(&cmd,"dvdarchive.sh umount \"%s\"",*strescape(myReplayControl::LastReplayed(),"'\\\"$"))) { - result=result/256; - if(result==1) - Skins.Message(mtError,tr("Error while mounting DVD!")); + isyslog("[extrecmenu] calling %s to unmount dvd",cmd); + int result=SystemExec(cmd); + if(result) + { + result=result/256; + if(result==1) + Skins.Message(mtError,tr("Error while mounting DVD!")); + } + isyslog("[extrecmenu] dvdarchive.sh returns %d",result); + free(cmd); } - isyslog("[extrecmenu] dvdarchive.sh returns %d",result); - free(cmd); wasdvd=false; } + if(washdd&&!cControl::Control()) + { + char *cmd=NULL; + if(-1!=asprintf(&cmd,"hddarchive.sh umount \"%s\"",*strescape(myReplayControl::LastReplayed(),"'\\\"$"))) + { + isyslog("[extrecmenu] calling %s to unmount Archive-HDD",cmd); + int result=SystemExec(cmd); + if(result) + { + result=result/256; + if(result==1) + Skins.Message(mtError,tr("Error while mounting Archive-HDD!")); + } + isyslog("[extrecmenu] hddarchive.sh returns %d",result); + free(cmd); + } + + washdd=false; + } Set(); - + if(myReplayControl::LastReplayed()) Open(); @@ -439,7 +532,7 @@ int myMenuRecordings::FreeMB() if(statdir.st_dev!=fsid) { fsid=statdir.st_dev; - + struct statvfs fsstat; if(!statvfs(path.c_str(),&fsstat)) { @@ -452,7 +545,7 @@ int myMenuRecordings::FreeMB() if(statdir.st_dev==fsid) freediskspace+=DirSizeMB(rec->FileName()); } - } + } } else { @@ -497,13 +590,13 @@ void myMenuRecordings::Title() buffer << base; else buffer << trVDR("Recordings"); - + buffer << " (" << minutes/60 << ":" << setw(2) << setfill('0') << minutes%60 << " " << trVDR("free") << ")"; - + SetTitle(buffer.str().c_str()); } @@ -577,9 +670,9 @@ void myMenuRecordings::Set(bool Refresh,char *_current) lastreplayed=recording->FileName(); } } - + Clear(); - + // create my own recordings list from VDR's myRecList *list=new myRecList(); for(cRecording *recording=Recordings.First();recording;recording=Recordings.Next(recording)) @@ -599,7 +692,7 @@ void myMenuRecordings::Set(bool Refresh,char *_current) if(!base||(strstr(listitem->recording->Name(),base)==listitem->recording->Name()&&listitem->recording->Name()[strlen(base)]=='~')) { myMenuRecordingsItem *recitem=new myMenuRecordingsItem(listitem->recording,level); -#ifdef WITHPINPLUGIN +#ifdef USE_PINPLUGIN bool hidepinprotectedrecs=false; cPlugin *pinplugin=cPluginManager::GetPlugin("pin"); if(pinplugin) @@ -623,7 +716,7 @@ void myMenuRecordings::Set(bool Refresh,char *_current) { if(!MoveCutterThread->IsMoving(recording->FileName())) lastitem->SetDirIsMoving(false); - + if(lastitem->IsDirectory()) lastitem->IncrementCounter(recording->IsNew()); if(lastreplayed && !strcmp(lastreplayed,recording->FileName())) @@ -634,7 +727,7 @@ void myMenuRecordings::Set(bool Refresh,char *_current) if(recitem && !recitem->IsDirectory() && !cControl::Control() && !mysetup.GoLastReplayed) golastreplayed=false; } - if(recitem&&!recitem->IsDirectory()&&recitem->IsDVD()&&!cControl::Control()) + if(recitem&&!recitem->IsDirectory()&&(recitem->IsDVD()||recitem->IsHDD())&&!cControl::Control()) cReplayControl::ClearLastReplayed(cReplayControl::LastReplayed()); } } @@ -667,10 +760,12 @@ bool myMenuRecordings::Open() char *buffer=NULL; if(base) { - asprintf(&buffer,"%s~%s",base,t); + if(-1==asprintf(&buffer,"%s~%s",base,t)) + buffer=NULL; t=buffer; } - AddSubMenu(new myMenuRecordings(t,level+1)); + if(t) + AddSubMenu(new myMenuRecordings(t,level+1)); free(buffer); return true; } @@ -689,7 +784,7 @@ eOSState myMenuRecordings::Play() myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current()); if(item) { -#ifdef WITHPINPLUGIN +#ifdef USE_PINPLUGIN if(cStatus::MsgReplayProtected(GetRecording(item),item->Name(),base,item->IsDirectory())==true) return osContinue; #endif @@ -700,89 +795,165 @@ eOSState myMenuRecordings::Play() cRecording *recording=GetRecording(item); if(recording) { - if(item->IsDVD()) + if(item->IsHDD()) { - bool isvideodvd=false; - char dvdnr[BUFSIZ]; + char hddnr[BUFSIZ]; char *buffer=NULL; FILE *f; - - asprintf(&buffer,"%s/dvd.vdr",recording->FileName()); - if((f=fopen(buffer,"r"))!=NULL) + + if(-1!=asprintf(&buffer,"%s/hdd.vdr",recording->FileName())) { - // get the dvd id - if(fgets(dvdnr,sizeof(dvdnr),f)) + if((f=fopen(buffer,"r"))!=NULL) { - char *p=strchr(dvdnr,'\n'); - if(p) - *p=0; + // get the hdd id + if(fgets(hddnr,sizeof(hddnr),f)) + { + char *p=strchr(hddnr,'\n'); + if(p) + *p=0; + } + fclose(f); } - // determine if dvd is a video dvd - char tmp[BUFSIZ]; - if(fgets(tmp,sizeof(dvdnr),f)) - isvideodvd=true; - - fclose(f); - } - free(buffer); + free(buffer); + buffer=NULL; - asprintf(&msg,tr("Please insert DVD %s"),dvdnr); - if(Interface->Confirm(msg)) - { - free(msg); - // recording is a video dvd - if(isvideodvd) + if(-1!=asprintf(&msg,tr("Please attach Archive-HDD %s"),hddnr)) { - cPlugin *plugin=cPluginManager::GetPlugin("dvd"); - if(plugin) + if(Interface->Confirm(msg)) { - cOsdObject *osd=plugin->MainMenuAction(); - delete osd; - osd=NULL; - return osEnd; + free(msg); + // recording is an archive hdd + strcpy(path,recording->FileName()); + name=strrchr(path,'/')+1; + if(-1!=asprintf(&msg,"hddarchive.sh mount \"%s\" '%s'",*strescape(path,"'"),*strescape(name,"'\\\"$"))) + { + isyslog("[extrecmenu] calling %s to mount Archive-HDD",msg); + int result=SystemExec(msg); + isyslog("[extrecmenu] hddarchive.sh returns %d",result); + free(msg); + msg=NULL; + if(result) + { + result=result/256; + if(result==1) + Skins.Message(mtError,tr("Error while mounting Archive-HDD!")); + if(result==3) + Skins.Message(mtError,tr("Recording not found on Archive-HDD!")); + if(result==4) + Skins.Message(mtError,tr("Error while linking [0-9]*.vdr!")); + if(result==5) + Skins.Message(mtError,tr("sudo or mount --bind / umount error (vfat system)")); + if(result==127) + Skins.Message(mtError,tr("Script 'hddarchive.sh' not found!")); + return osContinue; + } + washdd=true; + } + msg=NULL; } else { - Skins.Message(mtError,tr("DVD plugin is not installed!")); + free(msg); return osContinue; } } - // recording is an archive dvd - else + msg=NULL; + } + buffer=NULL; + } else if(item->IsDVD()) + { + bool isvideodvd=false; + char dvdnr[BUFSIZ]; + char *buffer=NULL; + FILE *f; + + if(-1!=asprintf(&buffer,"%s/dvd.vdr",recording->FileName())) + { + if((f=fopen(buffer,"r"))!=NULL) + { + // get the dvd id + if(fgets(dvdnr,sizeof(dvdnr),f)) + { + char *p=strchr(dvdnr,'\n'); + if(p) + *p=0; + } + // determine if dvd is a video dvd + char tmp[BUFSIZ]; + if(fgets(tmp,sizeof(dvdnr),f)) + isvideodvd=true; + + fclose(f); + } + free(buffer); + buffer=NULL; + + if(-1!=asprintf(&msg,tr("Please insert DVD %s"),dvdnr)) { - strcpy(path,recording->FileName()); - name=strrchr(path,'/')+1; - asprintf(&msg,"dvdarchive.sh mount \"%s\" '%s'",*strescape(path,"'"),*strescape(name,"'\\\"$")); - - isyslog("[extrecmenu] calling %s to mount dvd",msg); - int result=SystemExec(msg); - isyslog("[extrecmenu] dvdarchive.sh returns %d",result); - free(msg); - if(result) + if(Interface->Confirm(msg)) { - result=result/256; - if(result==1) - Skins.Message(mtError,tr("Error while mounting DVD!")); - if(result==2) - Skins.Message(mtError,tr("No DVD in drive!")); - if(result==3) - Skins.Message(mtError,tr("Recording not found on DVD!")); - if(result==4) - Skins.Message(mtError,tr("Error while linking [0-9]*.vdr!")); - if(result==5) - Skins.Message(mtError,tr("sudo or mount --bind / umount error (vfat system)")); - if(result==127) - Skins.Message(mtError,tr("Script 'dvdarchive.sh' not found!")); + free(msg); + msg=NULL; + // recording is a video dvd + if(isvideodvd) + { + cPlugin *plugin=cPluginManager::GetPlugin("dvd"); + if(plugin) + { + cOsdObject *osd=plugin->MainMenuAction(); + delete osd; + osd=NULL; + return osEnd; + } + else + { + Skins.Message(mtError,tr("DVD plugin is not installed!")); + return osContinue; + } + } + // recording is an archive dvd + else + { + strcpy(path,recording->FileName()); + name=strrchr(path,'/')+1; + if(-1!=asprintf(&msg,"dvdarchive.sh mount \"%s\" '%s'",*strescape(path,"'"),*strescape(name,"'\\\"$"))) + { + isyslog("[extrecmenu] calling %s to mount dvd",msg); + int result=SystemExec(msg); + isyslog("[extrecmenu] dvdarchive.sh returns %d",result); + free(msg); + msg=NULL; + if(result) + { + result=result/256; + if(result==1) + Skins.Message(mtError,tr("Error while mounting DVD!")); + if(result==2) + Skins.Message(mtError,tr("No DVD in drive!")); + if(result==3) + Skins.Message(mtError,tr("Recording not found on DVD!")); + if(result==4) + Skins.Message(mtError,tr("Error while linking [0-9]*.vdr!")); + if(result==5) + Skins.Message(mtError,tr("sudo or mount --bind / umount error (vfat system)")); + if(result==127) + Skins.Message(mtError,tr("Script 'dvdarchive.sh' not found!")); + return osContinue; + } + wasdvd=true; + } + msg=NULL; + } + } + else + { + free(msg); return osContinue; } - wasdvd=true; } + msg=NULL; } - else - { - free(msg); - return osContinue; - } + buffer=NULL; } golastreplayed=true; myReplayControl::SetRecording(recording->FileName(),recording->Title()); @@ -806,7 +977,7 @@ eOSState myMenuRecordings::Rewind() if(item&&!item->IsDirectory()) { cDevice::PrimaryDevice()->StopReplay(); -#if VDRVERSNUM >= 10703 +#if VDRVERSNUM > 10713 cResumeFile ResumeFile(item->FileName(), item->IsPesRecording()); #else cResumeFile ResumeFile(item->FileName()); @@ -902,11 +1073,7 @@ eOSState myMenuRecordings::Details() if(item && !item->IsDirectory()) { cRecording *recording=GetRecording(item); -#if VDRVERSNUM >= 10703 - if(recording && recording->IsPesRecording()) -#else if(recording) -#endif return AddSubMenu(new myMenuRecordingDetails(recording)); } return osContinue; @@ -957,7 +1124,7 @@ eOSState myMenuRecordings::Commands(eKeys Key) { if(HasSubMenu() || Count()==0) return osContinue; - + myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current()); if(item) { @@ -969,14 +1136,18 @@ eOSState myMenuRecordings::Commands(eKeys Key) { char *strBase=base?ExchangeChars(strdup(base), true):NULL; char *strName=ExchangeChars(strdup(item->Name()), true); - asprintf(¶meter,"\"%s/%s/%s\"",VideoDirectory,strBase?strBase:"", strName); + if(-1==asprintf(¶meter,"\"%s/%s/%s\"",VideoDirectory,strBase?strBase:"", strName)) + parameter=NULL; free(strBase); free(strName); } else - asprintf(¶meter,"\"%s\"",recording->FileName()); + { + if(-1==asprintf(¶meter,"\"%s\"",recording->FileName())) + parameter=NULL; + } myMenuCommands *menu; - eOSState state=AddSubMenu(menu=new myMenuCommands(trVDR("Recording commands"),item->IsDirectory() ? &RecordingDirCommands : &RecordingCommands,parameter)); + eOSState state=AddSubMenu(menu=new myMenuCommands(trVDR("Recording commands"),item->IsDirectory() ? &RecordingDirCommands : &RecordingCommands,parameter?parameter:"")); free(parameter); if(Key!=kNone) state=menu->ProcessKey(Key); @@ -1007,12 +1178,12 @@ eOSState myMenuRecordings::ChangeSorting() return osContinue; } } - mySortList->Add(new SortListItem(path)); + mySortList->Add(new SortListItem(path)); mySortList->WriteConfigFile(); Set(true); Skins.Message(mtInfo,tr("Sort by name"),1); - + return osContinue; } @@ -1023,7 +1194,7 @@ eOSState myMenuRecordings::ProcessKey(eKeys Key) if(edit) { myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current()); - if(Key==kRed || Key==kGreen || Key==kYellow || (!item->IsDVD() && Key==kBlue) || Key==kBack) + if(Key==kRed || Key==kGreen || Key==kYellow || (!item->IsDVD() && !item->IsHDD() && Key==kBlue) || Key==kBack) { edit=false; helpkeys=-1; @@ -1033,11 +1204,7 @@ eOSState myMenuRecordings::ProcessKey(eKeys Key) case kRed: return Rename(); case kGreen: return MoveRec(); case kYellow: return Delete(); -#if VDRVERSNUM >= 10703 - case kBlue: if(item&&!item->IsDVD()&&item->IsPesRecording()) -#else - case kBlue: if(item&&!item->IsDVD()) -#endif + case kBlue: if(item&&!item->IsDVD()&&!item->IsHDD()) return Details(); else break; @@ -1098,7 +1265,7 @@ eOSState myMenuRecordings::ProcessKey(eKeys Key) cRecording *rec=GetRecording(item); if(rec) { -#ifdef WITHPINPLUGIN +#ifdef USE_PINPLUGIN if(cStatus::MsgReplayProtected(rec,item->Name(),base,item->IsDirectory())==true) break; #endif @@ -1121,11 +1288,7 @@ eOSState myMenuRecordings::ProcessKey(eKeys Key) else { edit=true; -#if VDRVERSNUM >= 10703 - SetHelp(tr("Button$Rename"),tr("Button$Move"),tr("Button$Delete"),(item->IsPesRecording()&&!item->IsDVD())?tr("Details"):NULL); -#else - SetHelp(tr("Button$Rename"),tr("Button$Move"),tr("Button$Delete"),(!item->IsDVD())?tr("Details"):NULL); -#endif + SetHelp(tr("Button$Rename"),tr("Button$Move"),tr("Button$Delete"),!item->IsDVD()&&!item->IsHDD()?tr("Details"):NULL); } } } @@ -1141,11 +1304,11 @@ eOSState myMenuRecordings::ProcessKey(eKeys Key) } bool stateChanged = Recordings.StateChanged(recordingsstate); if(stateChanged || MoveCutterThread->IsCutterQueueEmpty()) - Set(true); - + Set(true); + if(!Count() && level>0) state=osBack; - + if((!HasSubMenu() && Key!=kNone) || stateChanged) SetHelpKeys(); } diff --git a/mymenurecordings.h b/mymenurecordings.h index 2604775..236fa3c 100644 --- a/mymenurecordings.h +++ b/mymenurecordings.h @@ -4,6 +4,7 @@ class myMenuRecordingsItem:public cOsdItem private: bool dirismoving; bool isdvd; + bool ishdd; bool isPesRecording; int level,isdirectory; int totalentries,newentries; @@ -20,6 +21,7 @@ class myMenuRecordingsItem:public cOsdItem bool IsPesRecording(void) const { return isPesRecording; } void IncrementCounter(bool IsNew); bool IsDVD(){return isdvd;} + bool IsHDD(){return ishdd;} void SetDirIsMoving(bool moving){dirismoving=moving;} bool GetDirIsMoving(){return dirismoving;} const char *UniqID(){return uniqid.length()?uniqid.c_str():"";} @@ -31,6 +33,7 @@ class myMenuRecordings:public cOsdMenu private: bool edit; static bool wasdvd; + static bool washdd; static bool golastreplayed; static dev_t fsid; static int freediskspace; @@ -107,4 +110,5 @@ class myMenuRecordingDetails:public cOsdMenu public: myMenuRecordingDetails(cRecording *Recording); virtual eOSState ProcessKey(eKeys Key); + static bool ModifyInfo(cRecording *Recording, const char *Info); }; diff --git a/mymenusetup.c b/mymenusetup.c index 1dd1762..9028996 100644 --- a/mymenusetup.c +++ b/mymenusetup.c @@ -5,7 +5,7 @@ #include <vdr/menu.h> #include "mymenusetup.h" -#if VDRVERSNUM >= 10713 +#if VDRVERSNUM > 10713 cNestedItemList RecordingDirCommands; #else cCommands RecordingDirCommands; @@ -19,7 +19,9 @@ mySetup::mySetup() mysetup.ShowRecDate=1; mysetup.ShowRecTime=1; mysetup.ShowRecLength=0; + mysetup.ShowRecRating=0; mysetup.ShowNewRecs=1; + mysetup.ShowOnlyRecs=false; mysetup.DescendSorting=0; mysetup.GoLastReplayed=0; mysetup.ReturnToPlugin=1; @@ -35,13 +37,14 @@ mySetup mysetup; myMenuSetup::myMenuSetup() { SetCols(36); - + hidemainmenuentry=mysetup.HideMainMenuEntry; patchnew=mysetup.PatchNew; replaceorgrecmenu=mysetup.ReplaceOrgRecMenu; showrecdate=mysetup.ShowRecDate; showrectime=mysetup.ShowRecTime; showreclength=mysetup.ShowRecLength; + showrecrating=mysetup.ShowRecRating; shownewrecs=mysetup.ShowNewRecs; descendsorting=mysetup.DescendSorting; golastreplayed=mysetup.GoLastReplayed; @@ -51,13 +54,14 @@ myMenuSetup::myMenuSetup() patchfont=mysetup.PatchFont; filesystemfreemb=mysetup.FileSystemFreeMB; usecutterqueue=mysetup.UseCutterQueue; - + sortingtypetexts[0]=tr("ascending"); sortingtypetexts[1]=tr("descending"); - + Add(new cMenuEditBoolItem(tr("Show recording date"),&showrecdate)); Add(new cMenuEditBoolItem(tr("Show recording time"),&showrectime)); Add(new cMenuEditBoolItem(tr("Show recording length"),&showreclength)); + Add(new cMenuEditBoolItem(tr("Show recording rating"),&showrecrating)); Add(new cMenuEditBoolItem(tr("Show nr. of new recordings of a directory"),&shownewrecs)); Add(new cMenuEditBoolItem(tr("Show alternative to new marker"),&patchnew)); Add(new cMenuEditBoolItem(tr("Show free disk space for each file system"),&filesystemfreemb)); @@ -68,9 +72,6 @@ myMenuSetup::myMenuSetup() #endif Add(new cMenuEditBoolItem(tr("Jump to last replayed recording"),&golastreplayed)); Add(new cMenuEditBoolItem(tr("Call plugin after playback"),&returntoplugin)); -#if VDRVERSNUM < 10503 - Add(new cMenuEditBoolItem(tr("Patch font"),&patchfont)); -#endif Add(new cMenuEditBoolItem(tr("Limit bandwidth for move recordings"),&limitbandwidth)); Add(new cMenuEditBoolItem(tr("Use VDR's recording info menu"),&usevdrsrecinfomenu)); Add(new cMenuEditBoolItem(tr("Use cutter queue"),&usecutterqueue)); @@ -84,6 +85,7 @@ void myMenuSetup::Store() SetupStore("ShowRecDate",mysetup.ShowRecDate=showrecdate); SetupStore("ShowRecTime",mysetup.ShowRecTime=showrectime); SetupStore("ShowRecLength",mysetup.ShowRecLength=showreclength); + SetupStore("ShowRecRating",mysetup.ShowRecRating=showrecrating); SetupStore("ShowNewRecs",mysetup.ShowNewRecs=shownewrecs); SetupStore("DescendSorting",mysetup.DescendSorting=descendsorting); SetupStore("GoLastReplayed",mysetup.GoLastReplayed=golastreplayed); diff --git a/mymenusetup.h b/mymenusetup.h index 325eb5e..7861155 100644 --- a/mymenusetup.h +++ b/mymenusetup.h @@ -6,6 +6,7 @@ extern cNestedItemList RecordingDirCommands; extern cCommands RecordingDirCommands; #endif + class mySetup { public: @@ -13,9 +14,11 @@ class mySetup int ShowRecDate; int ShowRecTime; int ShowRecLength; + int ShowRecRating; int HideMainMenuEntry; int ReplaceOrgRecMenu; int PatchNew; + int ShowOnlyRecs; int ShowNewRecs; int DescendSorting; int GoLastReplayed; @@ -36,6 +39,7 @@ class myMenuSetup:public cMenuSetupPage int showrecdate; int showrectime; int showreclength; + int showrecrating; int hidemainmenuentry; int replaceorgrecmenu; int patchnew; diff --git a/myreplaycontrol.c b/myreplaycontrol.c index 248fa1d..9403962 100644 --- a/myreplaycontrol.c +++ b/myreplaycontrol.c @@ -48,13 +48,12 @@ eOSState myReplayControl::ProcessKey(eKeys Key) else { cMarks _marks; -#if VDRVERSNUM >= 10703 + #if VDRVERSNUM > 10713 cRecording Recording(filename); - _marks.Load(filename, Recording.FramesPerSecond(), Recording.IsPesRecording()); -#else - _marks.Load(filename); -#endif - + _marks.Load(filename, Recording.FramesPerSecond(), Recording.IsPesRecording()); + #else + _marks.Load(filename); + #endif if(!_marks.Count()) Skins.Message(mtError,tr("No editing marks defined!")); else @@ -69,7 +68,7 @@ eOSState myReplayControl::ProcessKey(eKeys Key) if(Key==kRed) timesearchactive=true; - } + } if(Key==kBack) return osEnd; } diff --git a/po/ca_ES.po b/po/ca_ES.po index d7f139e..58380c3 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Jordi Vilà <jvila@tinet.org>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -80,6 +80,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -93,22 +96,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -144,6 +157,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -168,9 +184,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/cs_CZ.po b/po/cs_CZ.po index 72fdfc4..d176a81 100644 --- a/po/cs_CZ.po +++ b/po/cs_CZ.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "Velikost" msgid "Error while mounting DVD!" msgstr "Chyba bìhem pøipojování DVD!" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "Pøíkazy" @@ -91,6 +94,22 @@ msgid "Button$Info" msgstr "Info" #, c-format +msgid "Please attach Archive-HDD %s" +msgstr "" + +msgid "Recording not found on Archive-HDD!" +msgstr "" + +msgid "Error while linking [0-9]*.vdr!" +msgstr "Chyba pøi spojování [0-9]*.vdr!" + +msgid "sudo or mount --bind / umount error (vfat system)" +msgstr "sudo nebo mount --bind / umount selhal (VFAT-systém)" + +msgid "Script 'hddarchive.sh' not found!" +msgstr "" + +#, c-format msgid "Please insert DVD %s" msgstr "Vlo¾te prosím DVD %s" @@ -103,12 +122,6 @@ msgstr "V jednotce není DVD!" msgid "Recording not found on DVD!" msgstr "Nahrávka nebyla na DVD nalezena!" -msgid "Error while linking [0-9]*.vdr!" -msgstr "Chyba pøi spojování [0-9]*.vdr!" - -msgid "sudo or mount --bind / umount error (vfat system)" -msgstr "sudo nebo mount --bind / umount selhal (VFAT-systém)" - msgid "Script 'dvdarchive.sh' not found!" msgstr "Skript 'dvdarchive.sh' nebyl nalezen!" @@ -142,6 +155,9 @@ msgstr "Zobrazit èas nahrávky" msgid "Show recording length" msgstr "Zobrazit délku nahrávky" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "Zobrazovat poèet nových nahrávek v adresáøi" @@ -166,9 +182,6 @@ msgstr "Skoèit na poslední pøehrávanou nahrávku" msgid "Call plugin after playback" msgstr "Návrat do modulu po ukonèení pøehrávání" -msgid "Patch font" -msgstr "Upravit font" - msgid "Limit bandwidth for move recordings" msgstr "Omezit rychlost pro pøesun nahrávek" @@ -198,3 +211,6 @@ msgstr "Probíhá pøesouvání nahrávek" msgid "Can't start editing process!" msgstr "" + +#~ msgid "Patch font" +#~ msgstr "Upravit font" diff --git a/po/da_DK.po b/po/da_DK.po index d213ec1..028dfc2 100644 --- a/po/da_DK.po +++ b/po/da_DK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Mogens Elneff <mogens@elneff.dk>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/de_DE.po b/po/de_DE.po index d7663ca..3accc9c 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-07-03 10:55+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -25,7 +25,7 @@ msgid "Invalid filename!" msgstr "Ungültiger Dateiname!" msgid "Creating directories failed!" -msgstr "" +msgstr "Erstellen des Verzeichnisses fehlgeschlagen!" msgid "New folder" msgstr "Neues Verzeichnis" @@ -70,7 +70,7 @@ msgid "Path" msgstr "Pfad" msgid "Channel" -msgstr "" +msgstr "Kanal" msgid "Size" msgstr "Größe" @@ -78,6 +78,9 @@ msgstr "Größe" msgid "Error while mounting DVD!" msgstr "Fehler beim Einhängen der DVD!" +msgid "Error while mounting Archive-HDD!" +msgstr "Fehler beim Einhängen der Archiv-HDD!" + msgid "Button$Commands" msgstr "Befehle" @@ -91,6 +94,22 @@ msgid "Button$Info" msgstr "Info" #, c-format +msgid "Please attach Archive-HDD %s" +msgstr "Bitte Archiv-HDD %s anschliessen" + +msgid "Recording not found on Archive-HDD!" +msgstr "Aufzeichnung auf der Archiv-HDD nicht gefunden!" + +msgid "Error while linking [0-9]*.vdr!" +msgstr "Fehler beim Anlegen der Symlinks [0-9]*.vdr!" + +msgid "sudo or mount --bind / umount error (vfat system)" +msgstr "sudo oder mount --bind / umount Fehler (VFAT-System)" + +msgid "Script 'hddarchive.sh' not found!" +msgstr "Skript 'hddarchive.sh' wurde nicht gefunden!" + +#, c-format msgid "Please insert DVD %s" msgstr "Bitte DVD %s einlegen" @@ -103,12 +122,6 @@ msgstr "Keine DVD im Laufwerk!" msgid "Recording not found on DVD!" msgstr "Aufzeichnung auf DVD nicht gefunden!" -msgid "Error while linking [0-9]*.vdr!" -msgstr "Fehler beim Anlegen der Symlinks [0-9]*.vdr!" - -msgid "sudo or mount --bind / umount error (vfat system)" -msgstr "sudo oder mount --bind / umount Fehler (VFAT-System)" - msgid "Script 'dvdarchive.sh' not found!" msgstr "Skript 'dvdarchive.sh' wurde nicht gefunden!" @@ -142,6 +155,9 @@ msgstr "Aufnahmezeit anzeigen" msgid "Show recording length" msgstr "Aufnahmelänge anzeigen" +msgid "Show recording rating" +msgstr "Aufnahmenbewertung anzeigen" + msgid "Show nr. of new recordings of a directory" msgstr "Anzahl der neuen Aufz. eines Ordners anzeigen" @@ -166,9 +182,6 @@ msgstr "Springe zur zuletzt abgespielten Aufzeichnung" msgid "Call plugin after playback" msgstr "Nach Wiedergabe Plugin aufrufen" -msgid "Patch font" -msgstr "Font patchen" - msgid "Limit bandwidth for move recordings" msgstr "Bandbreite beim Verschieben begrenzen" @@ -182,7 +195,7 @@ msgid "Recording already in cutter queue!" msgstr "Aufzeichnung bereits in Schnitt-Warteschlange" msgid "No editing marks defined!" -msgstr "" +msgstr "Keine Schnittmarken vorhanden!" msgid "Added recording to cutter queue" msgstr "Aufzeichnung der Schnitt-Warteschlange hinzugefügt" @@ -197,4 +210,4 @@ msgid "Move recordings in progress" msgstr "Es werden Aufzeichnungen verschoben" msgid "Can't start editing process!" -msgstr "" +msgstr "Kann Schneidevorgang nicht starten!" diff --git a/po/el_GR.po b/po/el_GR.po index 9d358a2..7786912 100644 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/es_ES.po b/po/es_ES.po index a9c982c..f6495ce 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Ruben Nunez Francisco <ruben.nunez@tang-it.com>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/et_EE.po b/po/et_EE.po index a0ca66c..363b88d 100644 --- a/po/et_EE.po +++ b/po/et_EE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/fi_FI.po b/po/fi_FI.po index 4e91323..6fb7a2a 100644 --- a/po/fi_FI.po +++ b/po/fi_FI.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -81,6 +81,9 @@ msgstr "Koko" msgid "Error while mounting DVD!" msgstr "DVD:n avaaminen epäonnistui!" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "Komennot" @@ -94,6 +97,22 @@ msgid "Button$Info" msgstr "Tiedot" #, c-format +msgid "Please attach Archive-HDD %s" +msgstr "" + +msgid "Recording not found on Archive-HDD!" +msgstr "" + +msgid "Error while linking [0-9]*.vdr!" +msgstr "Tiedostojen [0-9]*.vdr linkittäminen epäonnistui!" + +msgid "sudo or mount --bind / umount error (vfat system)" +msgstr "Sudo tai mount --bind / umount -komento epäonnistui (VFAT)!" + +msgid "Script 'hddarchive.sh' not found!" +msgstr "" + +#, c-format msgid "Please insert DVD %s" msgstr "Laita DVD %s asemaan" @@ -106,12 +125,6 @@ msgstr "Asemassa ei ole DVD-levyä!" msgid "Recording not found on DVD!" msgstr "Tallennetta ei löydy DVD:ltä!" -msgid "Error while linking [0-9]*.vdr!" -msgstr "Tiedostojen [0-9]*.vdr linkittäminen epäonnistui!" - -msgid "sudo or mount --bind / umount error (vfat system)" -msgstr "Sudo tai mount --bind / umount -komento epäonnistui (VFAT)!" - msgid "Script 'dvdarchive.sh' not found!" msgstr "'dvdarchive.sh'-skriptiä ei löydetä!" @@ -145,6 +158,9 @@ msgstr "Näytä tallenteen ajankohta" msgid "Show recording length" msgstr "Näytä tallenteen kesto" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "Näytä uusien tallenteiden lukumäärä" @@ -169,9 +185,6 @@ msgstr "Siirry viimeksi toistettuun tallenteeseen" msgid "Call plugin after playback" msgstr "Avaa laajennos toiston loputtua" -msgid "Patch font" -msgstr "Käytä paikattua kirjasinta" - msgid "Limit bandwidth for move recordings" msgstr "Rajoita tallenteiden siirtokaistaa" @@ -201,3 +214,6 @@ msgstr "Tallenteiden siirto käynnissä" msgid "Can't start editing process!" msgstr "" + +#~ msgid "Patch font" +#~ msgstr "Käytä paikattua kirjasinta" diff --git a/po/fr_FR.po b/po/fr_FR.po index b74fae8..34e2899 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Nicolas Huillard <nhuillard@e-dition.fr>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -81,6 +81,9 @@ msgstr "Taille" msgid "Error while mounting DVD!" msgstr "Erreur lors du montage du DVD!" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "Commande" @@ -94,6 +97,22 @@ msgid "Button$Info" msgstr "Info" #, c-format +msgid "Please attach Archive-HDD %s" +msgstr "" + +msgid "Recording not found on Archive-HDD!" +msgstr "" + +msgid "Error while linking [0-9]*.vdr!" +msgstr "Erreur lors de la création des racourcis [0-9]*.vdr!" + +msgid "sudo or mount --bind / umount error (vfat system)" +msgstr "Erreur sudo ou mount --bind / umount (Systeme VFAT)" + +msgid "Script 'hddarchive.sh' not found!" +msgstr "" + +#, c-format msgid "Please insert DVD %s" msgstr "Mettez le DVD %s dans le lecteur" @@ -106,12 +125,6 @@ msgstr "Pas de DVD dans le lecteur!" msgid "Recording not found on DVD!" msgstr "Il n'y a pas d'enregistrement sur le DVD!" -msgid "Error while linking [0-9]*.vdr!" -msgstr "Erreur lors de la création des racourcis [0-9]*.vdr!" - -msgid "sudo or mount --bind / umount error (vfat system)" -msgstr "Erreur sudo ou mount --bind / umount (Systeme VFAT)" - msgid "Script 'dvdarchive.sh' not found!" msgstr "Impossible de trouver le script 'dvdarchive.sh'!" @@ -145,6 +158,9 @@ msgstr "Afficher l'heure d'enregistrement" msgid "Show recording length" msgstr "Afficher la longeur de l'enregistrement" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "Afficher le nombre de nouveaux enregistrements dans les dossiers" @@ -169,9 +185,6 @@ msgstr "Retour au dernier enregistrement lu" msgid "Call plugin after playback" msgstr "Après la lecture démarer le plugin" -msgid "Patch font" -msgstr "Patch des police" - msgid "Limit bandwidth for move recordings" msgstr "Limiter la bande passante lors du déplacement" @@ -201,3 +214,6 @@ msgstr "Des enregistrements sont en déplacement" msgid "Can't start editing process!" msgstr "" + +#~ msgid "Patch font" +#~ msgstr "Patch des police" diff --git a/po/hr_HR.po b/po/hr_HR.po index 222dcd6..fd570e0 100644 --- a/po/hr_HR.po +++ b/po/hr_HR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Drazen Dupor <drazen.dupor@dupor.com>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -79,6 +79,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -92,22 +95,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -143,6 +156,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -167,9 +183,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/hu_HU.po b/po/hu_HU.po index eba5247..aeae350 100644 --- a/po/hu_HU.po +++ b/po/hu_HU.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Istvan Koenigsberger <istvnko@hotmail.com>, Guido Josten <guido.josten@t-online.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -79,6 +79,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -92,22 +95,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -143,6 +156,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -167,9 +183,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/it_IT.po b/po/it_IT.po index a0741ac..f740e31 100644 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -9,16 +9,19 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" -"PO-Revision-Date: 2008-03-15 16:21+0100\n" -"Last-Translator: Sean Carlos <seanc@libero.it>\n" -"Language-Team: <vdr@linuxtv.org>\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" +"PO-Revision-Date: 2010-08-07 23:10+0100\n" +"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n" +"Language-Team: <vdr@linuxtv.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Italian\n" +"X-Poedit-Country: ITALY\n" +"X-Poedit-SourceCharset: utf-8\n" msgid "Extended recordings menu" -msgstr "Menu registrazioni esteso" +msgstr "Menu registrazioni avanzato" msgid "Rename" msgstr "Rinomina" @@ -27,10 +30,10 @@ msgid "Invalid filename!" msgstr "Nome file non valido!" msgid "Creating directories failed!" -msgstr "" +msgstr "Creazione directory fallita!" msgid "New folder" -msgstr "Nuova cartella" +msgstr "Nuova directory" msgid "Button$Cancel" msgstr "Annulla" @@ -45,19 +48,19 @@ msgid "[base dir]" msgstr "[dir. base]" msgid "Target filesystem filled - try anyway?" -msgstr "Partizione di destinazione piena - provare comunque?" +msgstr "Destinazione senza spazio - provare comunque?" msgid "Moving into own sub-directory not allowed!" -msgstr "Spostamento all'interno di sotto directory non permesso!" +msgstr "Spostamento nella sotto directory non permesso!" msgid "Can't get filesystem information" -msgstr "Impossibile ottenere informazioni sulla partizione" +msgstr "Impossibile ottenere info sulla partizione" msgid "Details" msgstr "Dettagli" msgid "Button$Play" -msgstr "Esegui" +msgstr "Riproduci" msgid "Button$Rewind" msgstr "Riavvolgi" @@ -66,13 +69,13 @@ msgid "Button$Back" msgstr "Indietro" msgid "Name" -msgstr "" +msgstr "Nome" msgid "Path" msgstr "Percorso" msgid "Channel" -msgstr "" +msgstr "Canale" msgid "Size" msgstr "Dimensione" @@ -80,6 +83,9 @@ msgstr "Dimensione" msgid "Error while mounting DVD!" msgstr "Errore durante montaggio DVD!" +msgid "Error while mounting Archive-HDD!" +msgstr "Errore durante montaggio archivio DVD!" + msgid "Button$Commands" msgstr "Comandi" @@ -93,8 +99,24 @@ msgid "Button$Info" msgstr "Info" #, c-format +msgid "Please attach Archive-HDD %s" +msgstr "Allega archivio HDD %s" + +msgid "Recording not found on Archive-HDD!" +msgstr "Registrazione non trovata nell'archivio HDD!" + +msgid "Error while linking [0-9]*.vdr!" +msgstr "Errore creazione collegamento [0-9]*.vdr!" + +msgid "sudo or mount --bind / umount error (vfat system)" +msgstr "Errore sudo o mount --bind / umount (sistema vfat)" + +msgid "Script 'hddarchive.sh' not found!" +msgstr "Script 'hddarchive.sh' non trovato!" + +#, c-format msgid "Please insert DVD %s" -msgstr "Per favore inserisci DVD %s" +msgstr "Inserisci il DVD %s" msgid "DVD plugin is not installed!" msgstr "Plugin DVD non installato!" @@ -105,12 +127,6 @@ msgstr "Nessun DVD nel lettore!" msgid "Recording not found on DVD!" msgstr "Registrazione non trovata nel DVD!" -msgid "Error while linking [0-9]*.vdr!" -msgstr "Errore creazione collegamento [0-9]*.vdr!" - -msgid "sudo or mount --bind / umount error (vfat system)" -msgstr "Errore sudo o mount --bind / umount (sistema vfat)" - msgid "Script 'dvdarchive.sh' not found!" msgstr "Script 'dvdarchive.sh non trovato!" @@ -121,16 +137,16 @@ msgid "Sort by name" msgstr "Ordina per nome" msgid "Cancel moving?" -msgstr "Anullare spostamento?" +msgstr "Annullare spostamento?" msgid "Button$Rename" msgstr "Rinomina" msgid "Button$Delete" -msgstr "Cancella" +msgstr "Elimina" msgid "ascending" -msgstr "ascendente" +msgstr "crescente" msgid "descending" msgstr "decrescente" @@ -144,47 +160,47 @@ msgstr "Mostra ora registrazione" msgid "Show recording length" msgstr "Mostra durata registrazione" +msgid "Show recording rating" +msgstr "Mostra valutazione registrazione" + msgid "Show nr. of new recordings of a directory" -msgstr "Mostra numero di nuove registrazioni di una directory" +msgstr "Mostra num. nuove reg. directory" msgid "Show alternative to new marker" -msgstr "Mostra alternative al nuovo marcatore" +msgstr "Mostra opzioni nuovo marcatore" msgid "Show free disk space for each file system" -msgstr "Mostra spazio libero per ogni partizione" +msgstr "Mostra spazio disponibile partizioni" msgid "Sorting" msgstr "Ordinamento" msgid "Hide main menu entry" -msgstr "Nascondi voce nel menu principale" +msgstr "Nascondi voce menu principale" msgid "Replace original recordings menu" -msgstr "Sostituisci menu registrazioni originale" +msgstr "Sostituisci menu reg. originale" msgid "Jump to last replayed recording" -msgstr "Vai all'ultima registrazione riprodotta" +msgstr "Vai all'ultima reg. riprodotta" msgid "Call plugin after playback" msgstr "Chiama plugin dopo esecuzione" -msgid "Patch font" -msgstr "Patch caratteri" - msgid "Limit bandwidth for move recordings" -msgstr "Limiti banda per spostamento registrazioni" +msgstr "Limita banda spostamento reg." msgid "Use VDR's recording info menu" -msgstr "Utilizza menu info registrazioni di VDR" +msgstr "Utilizza menu info reg. di VDR" msgid "Use cutter queue" msgstr "Utilizza coda tagli" msgid "Recording already in cutter queue!" -msgstr "Registrazione già presente nella coda tagli!" +msgstr "Registrazione già presente nella coda tagli!" msgid "No editing marks defined!" -msgstr "" +msgstr "Nessun marcatore di modifica definito!" msgid "Added recording to cutter queue" msgstr "Aggiunta registrazione alla coda tagli" @@ -199,4 +215,4 @@ msgid "Move recordings in progress" msgstr "Spostamento registrazioni in corso" msgid "Can't start editing process!" -msgstr "" +msgstr "Impossibile avviare il processo di modifica!" diff --git a/po/nl_NL.po b/po/nl_NL.po index 1db01a6..4a436d8 100644 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Maarten Wisse <Maarten.Wisse@urz.uni-hd.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -80,6 +80,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -93,22 +96,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -144,6 +157,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -168,9 +184,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/nn_NO.po b/po/nn_NO.po index cf2acab..93c92b4 100644 --- a/po/nn_NO.po +++ b/po/nn_NO.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Truls Slevigen <truls@slevigen.no>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -79,6 +79,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -92,22 +95,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -143,6 +156,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -167,9 +183,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/pl_PL.po b/po/pl_PL.po index 5d84ac6..f1affd2 100644 --- a/po/pl_PL.po +++ b/po/pl_PL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Michael Rakowski <mrak@gmx.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/pt_PT.po b/po/pt_PT.po index 83269f1..09c4727 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Paulo Lopes <pmml@netvita.pt>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/ro_RO.po b/po/ro_RO.po index 5277637..da7f234 100644 --- a/po/ro_RO.po +++ b/po/ro_RO.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -79,6 +79,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -92,22 +95,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -143,6 +156,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -167,9 +183,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/ru_RU.po b/po/ru_RU.po index e400c8b..9728897 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Vyacheslav Dikonov <sdiconov@mail.ru>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/sl_SI.po b/po/sl_SI.po index 26fa03b..f3a4418 100644 --- a/po/sl_SI.po +++ b/po/sl_SI.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -79,6 +79,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -92,22 +95,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -143,6 +156,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -167,9 +183,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/sv_SE.po b/po/sv_SE.po index 3be40ae..9aec234 100644 --- a/po/sv_SE.po +++ b/po/sv_SE.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Tomas Prybil <tomas@prybil.se>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -79,6 +79,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -92,22 +95,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -143,6 +156,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -167,9 +183,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/po/tr_TR.po b/po/tr_TR.po index bb168c3..178468c 100644 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ExtRecMenu 1.2\n" "Report-Msgid-Bugs-To: <see README>\n" -"POT-Creation-Date: 2008-08-13 08:38+0200\n" +"POT-Creation-Date: 2010-06-17 20:39+0200\n" "PO-Revision-Date: 2008-03-15 16:21+0100\n" "Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n" "Language-Team: <vdr@linuxtv.org>\n" @@ -78,6 +78,9 @@ msgstr "" msgid "Error while mounting DVD!" msgstr "" +msgid "Error while mounting Archive-HDD!" +msgstr "" + msgid "Button$Commands" msgstr "" @@ -91,22 +94,32 @@ msgid "Button$Info" msgstr "" #, c-format -msgid "Please insert DVD %s" +msgid "Please attach Archive-HDD %s" msgstr "" -msgid "DVD plugin is not installed!" +msgid "Recording not found on Archive-HDD!" msgstr "" -msgid "No DVD in drive!" +msgid "Error while linking [0-9]*.vdr!" msgstr "" -msgid "Recording not found on DVD!" +msgid "sudo or mount --bind / umount error (vfat system)" msgstr "" -msgid "Error while linking [0-9]*.vdr!" +msgid "Script 'hddarchive.sh' not found!" msgstr "" -msgid "sudo or mount --bind / umount error (vfat system)" +#, c-format +msgid "Please insert DVD %s" +msgstr "" + +msgid "DVD plugin is not installed!" +msgstr "" + +msgid "No DVD in drive!" +msgstr "" + +msgid "Recording not found on DVD!" msgstr "" msgid "Script 'dvdarchive.sh' not found!" @@ -142,6 +155,9 @@ msgstr "" msgid "Show recording length" msgstr "" +msgid "Show recording rating" +msgstr "" + msgid "Show nr. of new recordings of a directory" msgstr "" @@ -166,9 +182,6 @@ msgstr "" msgid "Call plugin after playback" msgstr "" -msgid "Patch font" -msgstr "" - msgid "Limit bandwidth for move recordings" msgstr "" diff --git a/scripts/hddarchive.sh b/scripts/hddarchive.sh new file mode 100644 index 0000000..d141956 --- /dev/null +++ b/scripts/hddarchive.sh @@ -0,0 +1,306 @@ +#!/bin/sh +# +# ---> CONFIGURATION AT LINE 83 <--- +# +# MANUAL: +# ------- +# 1. +# If you run VDR as user, you need in /etc/fstab the option "user" for your HDD mountpoint. +# +# Example: +# /dev/sdf /media/hdd auto defaults,ro,user,noauto 0 0 +# +# 2. +# If you use a VFAT partition for your video-data, you must configure sudo to allow the +# VDR-user to execute mount and umount as root. To edit sudoers run 'visudo' command as root. +# +# Example: +# # Cmnd alias specification +# Cmnd_Alias SYSTEM = /bin/mount, /bin/umount +# # User privilege specification +# vdr ALL=(root) NOPASSWD: SYSTEM +# +# With a vfat partition some things doesn't work: resume, marks +# +# 3. +# Tools needed: mount, awk, find, test, stat, sed +# +# 4. +# If you have some Archive-HDDs with the index.vdr only on Archive-HDD, you don't use vfat +# and you want to see the recording length in the menu, you can switch GETLENGTH to 1 and +# the script will create a length.vdr for you. +# +# 5. +# If something went wrong, set DEBUG=1 and send me the file which is defined in $DEBUGLOG. +# Use VDR-Portal or EMail. +# +# 6. +# Exitcodes: +# +# exit 0 - no error +# exit 1 - mount/umount error +# exit 3 - wrong hdd / recording not found +# exit 4 - error while linking [0-9]*.vdr +# exit 5 - sudo or mount --bind / umount error (vfat system) +# +# CONFIGURATION +# ------------- +#<Configuration> + +# Mountpoint, the same as in fstab +MOUNTPOINT="/mnt/archive-hdd" # no trailing '/' +# Log warnings/errors in syslog. 1 = yes, 0 = no. +SYSLOG=1 + +# Create a length.vdr after mounting the Archive-HDD for the played recording. 1 = yes, 0 = no. +# Only for non-vfat and with index.vdr only on Archive-HDD. +GETLENGTH=1 +# Put debug infos in file $DEBUGLOG. Only if $DEBUG=1. +DEBUG=0 +DEBUGLOG="/tmp/hddarchive.sh-debug.log" +VDRSETTINGSFILE=/etc/conf.d/vdr + +#</Configuration> +# No changes needed after this mark + +# read config file +if [ -f /etc/vdr/hddarchive.conf ]; then + . /etc/vdr/hddarchive.conf +fi + +# get VIDEO path +if [ -f ${VDRSETTINGSFILE} ]; then + source ${VDRSETTINGSFILE} +fi + +# Remove trailing slash +MOUNTPOINT="$(echo "${MOUNTPOINT}" | sed -e 's/\/$//')" +if [ -L "$MOUNTPOINT" ]; then + MOUNTPOINTT="$(find "$MOUNTPOINT" -printf "%l")" +else + MOUNTPOINTT="$MOUNTPOINT" +fi +# determine hdd-device +DEVICE="$(awk '( $1 !~ /^#/ ) && ( $2 == "'$MOUNTPOINT'" ) { printf("%s", $1); exit; }' /etc/fstab)" +if [ -L "$DEVICE" ]; then + DEVICET="$(find "$DEVICE" -printf "%l")" +else + DEVICET="$DEVICE" +fi + +ACTION="$1" +REC="$2" +NAME="$3" +if [ "$ACTION" = "mount" -a -z "$NAME" ]; then + NAME="basename ${REC})" +fi + +# function to print help +call() { + echo -e "\nScript $0 needs three parameters for mount and two for umount. The first must be mount or umount, the second is the full path.\n" + echo -e "Only for mounting the script needs a third parameter, the last part of the recording path.\n" + echo -e "Example: hddarchive.sh mount '/video0/Music/%Riverdance/2004-06-06.00:10.50.99.rec' '2004-06-06.00:10.50.99.rec'\n" + echo -e "Example: hddarchive.sh umount '/video0/Music/%Riverdance/2004-06-06.00:10.50.99.rec'\n" + echo -e "For more information read the MANUAL part inside this script.\n" +} + +# function to log messages +log() { + case "$1" in + info) + echo -e "INFO: $2" + [ $SYSLOG -eq 1 ] && logger -t "$0" "INFO: $2" + ;; + warning) + echo -e "WARNING: $2" + [ $SYSLOG -eq 1 ] && logger -t "$0" "WARNING: $2" + ;; + error) + echo -e "ERROR: $2" + [ $SYSLOG -eq 1 ] && logger -t "$0" "ERROR: $2" + if [ $DEBUG -eq 1 ]; then + echo "-------" >> $DEBUGLOG + echo -e "Parameters: $ACTION $REC $NAME\n" >> $DEBUGLOG + echo -e "ERROR: $2\n\n" >> $DEBUGLOG + echo -e "Mountpoint: $MOUNTPOINT\nDevice: $DEVICE\n" >> $DEBUGLOG + echo -e "MountpointT: $MOUNTPOINTT\nDeviceT: $DEVICET\n" >> $DEBUGLOG + FSTAB="$(awk '( $1 !~ /^#/ ) && ( $2 == "'$MOUNTPOINT'" || $2 == "'$MOUNTPOINTT'" ) { printf("%s", $0); }' /etc/fstab)" + echo -e "fstab: ${FSTAB}\n" >>$DEBUGLOG + echo -e "Filesystem: $(stat -f -c %T "$REC")\n" >> $DEBUGLOG + mount >> $DEBUGLOG + echo >> $DEBUGLOG + cat /proc/mounts >> $DEBUGLOG + echo >> $DEBUGLOG + sudo -l >> $DEBUGLOG + fi + ;; + esac +} + +# Some checks before doing something +[ "$ACTION" = "mount" -o "$ACTION" = "umount" ] || { call; exit 10; } +[ -z "$REC" -o ! -d "$REC" ] && { call; exit 10; } +[ "$ACTION" = "mount" -a -z "$NAME" ] && { call; exit 10; } +[ ! -d "$MOUNTPOINT" ] && { log error "Mountpoint $MOUNTPOINT doesn't exist"; exit 10; } +[ ! -e "$DEVICE" ] && { log error "Device $DEVICE doesn't exist"; exit 10; } + +case "$ACTION" in +mount) + # check if not mounted + if mount | egrep -q " $MOUNTPOINTT "; then + # check if hdd is in use + if mount | egrep -q "^$DEVICET"; then + log warning "hdd in use (at: check if hdd is in use)" + fi + + # if already mounted, try to umount + log warning "hdd already mounted, try to umount" + umount "$MOUNTPOINT" || { log error "hdd umount error (at: hdd already mounted, try to umount)"; exit 1; } + + # unlink broken existing links + for LINK in "${REC}/"*.vdr; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + for LINK in "${REC}/"*.ts; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + for LINK in "${REC}/"index*; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + fi + + # mount hdd + mount "$MOUNTPOINT" || { log error "hdd mount error (at: mount hdd)"; exit 1; } + # mount was OK. Now, find recording on hdd + + # search recording in the subtree (Movies/Action/) + RELPATH1=${REC#$VIDEO} + RELPATH=${RELPATH1%$NAME} + DIR="$(find "${MOUNTPOINT}/${RELPATH}" -name "$NAME")" + # if not found, seach recording on the whole disk + if [ -z "$DIR" ]; then + DIR="$(find "${MOUNTPOINT}/" -name "$NAME")" + fi + # if not found, umount + if [ -z "$DIR" ]; then + log error "wrong hdd / recording not found on hdd" + umount "$MOUNTPOINT" || { log error "hdd umount error (at: wrong hdd / recording not found on hdd)"; exit 1; } + exit 3 + fi + + # check if video partition is vfat + if [ "$(stat -f -c %T "$REC")" != "vfat" ]; then + + # link index.vdr if not exist + if [ -e "${DIR}/index.vdr" -a ! -e "${REC}/index.vdr" ]; then + ln -s "${DIR}/index.vdr" "${REC}/index.vdr" || { log error "could not link index.vdr (at: link index.vdr from hdd to disk)"; } + fi + if [ -e "${DIR}/index" -a ! -e "${REC}/index" ]; then + ln -s "${DIR}/index" "${REC}/index" || { log error "could not link index (at: link index from hdd to disk)"; } + fi + + # link [0-9]*.vdr files + for FILE in "${DIR}/"[0-9]*.vdr; do + if [ -e "${FILE}" ]; then + ln -s "$FILE" "${REC}/$(basename "$FILE")" + fi + done + # error while linking [0-9]*.vdr files? + if [ $? -ne 0 ]; then + log error "error while linking [0-9]*.vdr" + # umount hdd bevor unlinking + umount "$MOUNTPOINT" || { log error "hdd umount error (at: error while linking)"; exit 1; } + # unlink broken links + for LINK in "${REC}/"*.vdr; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + exit 4 + fi + for FILE in "${DIR}/"[0-9]*.ts; do + if [ -e "${FILE}" ]; then + ln -s "$FILE" "${REC}/$(basename "$FILE")" + fi + done + # error while linking [0-9]*.ts files? + if [ $? -ne 0 ]; then + log error "error while linking [0-9]*.ts" + # umount hdd bevor unlinking + umount "$MOUNTPOINT" || { log error "hdd umount error (at: error while linking)"; exit 1; } + # unlink broken links + for LINK in "${REC}/"*.ts; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + exit 4 + fi + + # If wanted, create length.vdr + if [ $GETLENGTH -eq 1 -a ! -s "${REC}/length.vdr" -a -L "${REC}/index.vdr" ]; then + echo $(( $(stat -L -c %s "${REC}/index.vdr")/12000 )) > "${REC}/length.vdr" + fi + if [ $GETLENGTH -eq 1 -a ! -s "${REC}/length.vdr" -a -L "${REC}/index" ]; then + echo $(( $(stat -L -c %s "${REC}/index")/12000 )) > "${REC}/length.vdr" + fi + else + if [ ! "$(sudo -l | egrep "\(root\) NOPASSWD: /bin/mount")" -o ! "$(sudo -l | egrep "\(root\) NOPASSWD: /bin/umount")" ]; then + log error "you must configure sudo and allow $(whoami) to use mount/umount!" + log info "$(sudo -l)" + umount "$MOUNTPOINT" || { log error "hdd umount error (at: you must configure sudo)"; exit 1; } + exit 5 + fi + # mount recording + sudo mount --bind "$DIR" "$REC" + if [ $? -ne 0 ]; then + log error "sudo mount --bind $DIR $REC" + umount "$MOUNTPOINT" || { log error "hdd umount error (at: sudo mount --bind)"; exit 1; } + exit 5 + fi + fi + ;; +umount) + # check if hdd is mounted + mount | egrep -q " $MOUNTPOINTT " || { log error "hdd not mounted (at: check if hdd is mounted)"; exit 1; } + # check if video partition is vfat + if [ "$(stat -f -c %T "$REC")" != "vfat" ]; then + # is mounted, umount hdd bevor unlinking + umount "$MOUNTPOINT" || { log error "hdd umount error (at: is mounted, umount hdd bevor unlinking)"; exit 1; } + # unlink broken links + for LINK in "${REC}/"index*; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + for LINK in "${REC}/"*.vdr; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + for LINK in "${REC}/"*.ts; do + if [ -L "$LINK" -a ! -s "$LINK" ]; then + rm "$LINK" + fi + done + else + # umount recording + sudo umount "$REC" || { log error "sudo umount $REC"; exit 5; } + # umount Archive-HDD at umount + umount "$MOUNTPOINT" || { log error "hdd umount error (at: umount hdd at umount)"; exit 1; } + fi + ;; +*) +# Output help + log error "\nWrong action $ACTION." + call + ;; +esac + +exit 0 @@ -54,7 +54,7 @@ void SortList::ReadConfigFile() { string configfile(cPlugin::ConfigDirectory()); configfile+=CONFIGFILE; - + ifstream in(configfile.c_str()); if(in) { @@ -72,9 +72,9 @@ void SortList::WriteConfigFile() { string configfile(cPlugin::ConfigDirectory()); configfile+=CONFIGFILE; - + ofstream outfile(configfile.c_str()); - + for(SortListItem *item=First();item;item=Next(item)) outfile << item->Path() << endl; } @@ -101,13 +101,13 @@ bool MoveRename(const char *OldName,const char *NewName,cRecording *Recording,bo if(Recording) { isyslog("[extrecmenu] moving %s to %s",OldName,NewName); - + if(!MakeDirs(NewName,true)) { Skins.Message(mtError,tr("Creating directories failed!")); return false; } - + if(rename(OldName,NewName)==-1) { remove(NewName); // remove created directory @@ -119,24 +119,30 @@ bool MoveRename(const char *OldName,const char *NewName,cRecording *Recording,bo cThreadLock RecordingsLock(&Recordings); Recordings.DelByName(OldName); Recordings.AddByName(NewName); - + // set user command for '-r'-option of VDR - asprintf(&buf,"%s \"%s\"",Move?"move":"rename",*strescape(OldName,"'\\\"$")); - cRecordingUserCommand::InvokeCommand(buf,NewName); - free(buf); + if(-1!=asprintf(&buf,"%s \"%s\"",Move?"move":"rename",*strescape(OldName,"'\\\"$"))) + { + cRecordingUserCommand::InvokeCommand(buf,NewName); + free(buf); + } + buf=NULL; } else { // is the new path within the old? - asprintf(&buf,"%s/",OldName); // we have to append a / to make sure that we search for a directory - if(!strncmp(buf,NewName,strlen(buf))) + if(-1!=asprintf(&buf,"%s/",OldName)) // we have to append a / to make sure that we search for a directory { - Skins.Message(mtError,tr("Moving into own sub-directory not allowed!")); + if(!strncmp(buf,NewName,strlen(buf))) + { + Skins.Message(mtError,tr("Moving into own sub-directory not allowed!")); + free(buf); + return false; + } free(buf); - return false; } - free(buf); - + buf=NULL; + myRecList *list=new myRecList(); for(cRecording *recording=Recordings.First();recording;recording=Recordings.Next(recording)) list->Add(new myRecListItem(recording)); @@ -147,27 +153,33 @@ bool MoveRename(const char *OldName,const char *NewName,cRecording *Recording,bo if(!strncmp(OldName,item->recording->FileName(),strlen(OldName))) { buf=strdup(OldName+strlen(VideoDirectory)+1); - buf=ExchangeChars(buf,false); - - if(strcmp(item->recording->Name(),buf)) + if(buf) { - free(buf); - asprintf(&buf,"%s%s",NewName,item->recording->FileName()+strlen(OldName)); - if(!MakeDirs(buf,true)) - { - Skins.Message(mtError,tr("Creating directories failed!")); - free(buf); - delete list; - return false; - } - if(MoveRename(item->recording->FileName(),buf,item->recording,Move)==false) + buf=ExchangeChars(buf,false); + + if(strcmp(item->recording->Name(),buf)) { free(buf); - delete list; - return false; + if(-1!=asprintf(&buf,"%s%s",NewName,item->recording->FileName()+strlen(OldName))) + { + if(!MakeDirs(buf,true)) + { + Skins.Message(mtError,tr("Creating directories failed!")); + free(buf); + delete list; + return false; + } + if(MoveRename(item->recording->FileName(),buf,item->recording,Move)==false) + { + free(buf); + delete list; + return false; + } + } + buf=NULL; } + free(buf); } - free(buf); } item=list->Next(item); } @@ -217,7 +229,7 @@ char *myRecListItem::StripEpisodeName(char *s) } else *s1=(char)255; - + if(s1 && s2 && !SortByName) memmove(s1+1,s2,t-s2+1); @@ -227,7 +239,7 @@ char *myRecListItem::StripEpisodeName(char *s) int myRecListItem::Compare(const cListObject &ListObject)const { myRecListItem *item=(myRecListItem*)&ListObject; - + char *s1=StripEpisodeName(strdup(filename+strlen(VideoDirectory))); char *s2=StripEpisodeName(strdup(item->filename+strlen(VideoDirectory))); @@ -236,10 +248,10 @@ int myRecListItem::Compare(const cListObject &ListObject)const compare=strcasecmp(s2,s1); else compare=strcasecmp(s1,s2); - + free(s1); free(s2); - + return compare; } @@ -256,7 +268,7 @@ WorkerThread::WorkerThread():cThread("extrecmenu worker thread") cancelmove=cancelcut=false; CutterQueue=new CutterList(); MoveBetweenFileSystemsList=new MoveList(); - + Start(); } @@ -275,7 +287,7 @@ const char *WorkerThread::Working() if(MoveBetweenFileSystemsList->First()!=NULL) return tr("Move recordings in progress"); - + return NULL; } @@ -285,13 +297,21 @@ void WorkerThread::Action() MoveListItem *moveitem=NULL; SetPriority(19); - + while(Running()) { if((cutteritem=CutterQueue->First())!=NULL) { cutteritem->SetCutInProgress(); +#ifdef USE_VDR_CUTTER +#if VDRVERSNUM > 10713 + if(!CutRecording(cutteritem->FileName().c_str())) +#else + if (!cCutter::Start(cutteritem->FileName().c_str())) + Skins.QueueMessage(mtError,tr("Can't start editing process!")); +#endif +#else // create filename for edited recording, check for recordings with this name, if exists -> delete recording // (based upon VDR's code (cutter.c)) cRecording rec(cutteritem->FileName().c_str()); @@ -316,8 +336,9 @@ void WorkerThread::Action() } else Skins.QueueMessage(mtError,tr("Can't start editing process!")); +#endif CutterQueue->Del(cutteritem); - + Recordings.ChangeState(); } @@ -329,10 +350,10 @@ void WorkerThread::Action() else // error occured -> empty move queue MoveBetweenFileSystemsList->Clear(); - + Recordings.ChangeState(); } - + sleep(1); } } @@ -362,12 +383,13 @@ void WorkerThread::CancelCut(string Path) cancelcut=true; else CutterQueue->Del(item); - + return; } } } +#ifndef USE_VDR_CUTTER // this based mainly upon VDR's code (cutter.c) void WorkerThread::Cut(string From,string To) { @@ -382,7 +404,7 @@ void WorkerThread::Cut(string From,string To) bool lastmark=false,cutin=true; off_t maxVideoFileSize=MEGABYTE(Setup.MaxVideoFileSize); -#if VDRVERSNUM >= 10703 +#if VDRVERSNUM > 10713 bool isPesRecording; uint16_t filenumber; off_t fileoffset; @@ -426,7 +448,6 @@ void WorkerThread::Cut(string From,string To) } #endif - if((mark=frommarks.First())!=NULL) { if(!(fromfile=fromfilename->Open()) || !(tofile=tofilename->Open())) @@ -473,7 +494,7 @@ void WorkerThread::Cut(string From,string To) error="fromfile"; break; } -#if VDRVERSNUM >= 10703 +#if VDRVERSNUM > 10713 if(picturetype) #else if(picturetype==I_FRAME) @@ -494,7 +515,7 @@ void WorkerThread::Cut(string From,string To) lastiframe=0; if(cutin) { -#if VDRVERSNUM >= 10706 +#if VDRVERSNUM > 10713 if(isPesRecording) cRemux::SetBrokenLink(buffer,length); else @@ -572,6 +593,7 @@ void WorkerThread::Cut(string From,string To) delete fromindex; delete toindex; } +#endif bool WorkerThread::IsMoving(string Path) { @@ -596,7 +618,7 @@ void WorkerThread::CancelMove(string Path) } else MoveBetweenFileSystemsList->Del(item); - + return; } } @@ -615,13 +637,13 @@ bool WorkerThread::Move(string From,string To) Skins.QueueMessage(mtError,tr("Creating directories failed!")); return false; } - + isyslog("[extrecmenu] moving '%s' to '%s'",From.c_str(),To.c_str()); - + DIR *dir=NULL; struct dirent *entry; int infile=-1,outfile=-1; - + if((dir=opendir(From.c_str()))!=NULL) { bool ok=true; @@ -631,7 +653,7 @@ bool WorkerThread::Move(string From,string To) string from,to; from=From+"/"+entry->d_name; to=To+"/"+entry->d_name; - + AssertFreeDiskSpace(-1); struct stat st; @@ -648,25 +670,25 @@ bool WorkerThread::Move(string From,string To) while(sz_read>0 && (sz_read=read(infile,buf,BUFFERSIZE))>0) { AssertFreeDiskSpace(-1); - + sz_write=0; do { if(cancelmove || !Running()) { cancelmove=false; - + close(infile); close(outfile); closedir(dir); - + isyslog("[extrecmenu] moving canceled"); - + RemoveVideoFile(To.c_str()); - + return true; } - + if((sz=write(outfile,buf+sz_write,sz_read-sz_write))<0) { close(infile); @@ -680,7 +702,7 @@ bool WorkerThread::Move(string From,string To) sz_write+=sz; } while(sz_write<sz_read); - + if(mysetup.LimitBandwidth) usleep(10); } @@ -137,4 +137,7 @@ class Icons static const char* New(){return IsUTF8?"\ue010":"\x90";} static const char* Repititive_timer(){return IsUTF8?"\ue011":"\x91";} static const char* Running(){return IsUTF8?"\ue012":"\x92";} + static const char* HDD(){return IsUTF8?"\ue01c":"\x9c";} + static const char* StarFull(){return IsUTF8?"\ue018":"\x98";} + static const char* StarHalf(){return IsUTF8?"\ue019":"\x99";} }; diff --git a/ttf/VDRSymbolsSans-Bold.ttf b/ttf/VDRSymbolsSans-Bold.ttf Binary files differnew file mode 100644 index 0000000..ba35311 --- /dev/null +++ b/ttf/VDRSymbolsSans-Bold.ttf diff --git a/ttf/VDRSymbolsSans.ttf b/ttf/VDRSymbolsSans.ttf Binary files differindex 3ee4853..7fa17a9 100644 --- a/ttf/VDRSymbolsSans.ttf +++ b/ttf/VDRSymbolsSans.ttf |